2013.12.05(2)——— android ViewPagerIndicator之SampleCirclesDefault
ViewPagerIndicator是一个viewpage相关的一个开源项目,包含viewpage与小圆点(实在不知道叫什么了)、viewpage与tab等
https://github.com/JakeWharton/ActionBarSherlock
package com.viewpagerindicator.sample;
import java.util.Random;
import com.viewpagerindicator.PageIndicator;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public abstract class BaseSampleActivity extends FragmentActivity {
private static final Random RANDOM = new Random();
TestFragmentAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.random:
final int page = RANDOM.nextInt(mAdapter.getCount());
Toast.makeText(this, "Changing to page " + page, Toast.LENGTH_SHORT);
mPager.setCurrentItem(page);
return true;
case R.id.add_page:
if (mAdapter.getCount() < 10) {
mAdapter.setCount(mAdapter.getCount() + 1);
mIndicator.notifyDataSetChanged();
}
return true;
case R.id.remove_page:
if (mAdapter.getCount() > 1) {
mAdapter.setCount(mAdapter.getCount() - 1);
mIndicator.notifyDataSetChanged();
}
return true;
}
return super.onOptionsItemSelected(item);
}
}
package com.viewpagerindicator.sample;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import com.viewpagerindicator.CirclePageIndicator;
public class SampleCirclesDefault extends BaseSampleActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_circles);
mAdapter = new TestFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (CirclePageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
}
}
package com.viewpagerindicator.sample;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import com.viewpagerindicator.IconPagerAdapter;
class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
protected static final String[] CONTENT = new String[] { "This", "Is", "A", "Test", };
protected static final int[] ICONS = new int[] {
R.drawable.perm_group_calendar,
R.drawable.perm_group_camera,
R.drawable.perm_group_device_alarms,
R.drawable.perm_group_location
};
private int mCount = CONTENT.length;
public TestFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return TestFragment.newInstance(CONTENT[position % CONTENT.length]);
}
@Override
public int getCount() {
return mCount;
}
@Override
public CharSequence getPageTitle(int position) {
return TestFragmentAdapter.CONTENT[position % CONTENT.length];
}
@Override
public int getIconResId(int index) {
return ICONS[index % ICONS.length];
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
}
package com.viewpagerindicator.sample;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
public final class TestFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";
public static TestFragment newInstance(String content) {
TestFragment fragment = new TestFragment();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 20; i++) {
builder.append(content).append(" ");
}
builder.deleteCharAt(builder.length() - 1);
fragment.mContent = builder.toString();
return fragment;
}
private String mContent = "???";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
mContent = savedInstanceState.getString(KEY_CONTENT);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
TextView text = new TextView(getActivity());
text.setGravity(Gravity.CENTER);
text.setText(mContent);
text.setTextSize(20 * getResources().getDisplayMetrics().density);
text.setPadding(20, 20, 20, 20);
LinearLayout layout = new LinearLayout(getActivity());
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.setGravity(Gravity.CENTER);
layout.addView(text);
return layout;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(KEY_CONTENT, mContent);
}
}
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<com.viewpagerindicator.CirclePageIndicator
android:id="@+id/indicator"
android:padding="10dip"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</LinearLayout>
这个代码都很简单,唯一注意的是layout里面我们用到的是
com.viewpagerindicator.CirclePageIndicator
后面这个布局文件用到的view有些会改变的
另外 TestFragmentAdapter里面的getPageTitle和getIconResId方法 都是后面的例子用到的,不用着急明白,
1、
mIndicator.setCurrentItem(mAdapter.getCount() - 1);
可以设置viewpage显示的item
2、
indicator.setSnap(true);
默认是false,就是切换的时候,下面小圆点有一个过渡的动画效果,建议默认即可
3、
xml
app:radius="10dp"
app:fillColor="#FF888888"
app:pageColor="#88FF0000"
app:strokeColor="#FF000000"
app:strokeWidth="2dp"
java
final float density = getResources().getDisplayMetrics().density;
indicator.setBackgroundColor(0xFFCCCCCC);
indicator.setRadius(10 * density);
indicator.setPageColor(0x880000FF);
indicator.setFillColor(0xFF888888);
indicator.setStrokeColor(0xFF000000);
indicator.setStrokeWidth(2 * density);
上面两种的效果是一样的 就是设置了小圆点的样式
radius:小圆点的半径
PageColor:小圆点的背景
FillColor:过渡的时候动画的背景
StrokeColor:小圆点边框颜色
StrokeWidth:小圆点边框宽度
4、监听
mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
Toast.makeText(SampleCirclesWithListener.this, "Changed to page " + position, Toast.LENGTH_SHORT).show();
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
- 大小: 78.3 KB
分享到:
相关推荐
A4打印模板-画图设计设计师产品草稿图纸-网格纸A4打印模板高清待办练字模板PDF下载
ISA-95 流程圣经,描述了PLM企业资源计划、MES制造执行系统、ERP企业资源计划系统、SCM供应链管理系统、客户关系管理CRM之间的关系
颁奖领奖音乐在各种表彰、嘉奖或庆祝场合中扮演着至关重要的角色,其作用主要体现在以下几个方面: 1.营造氛围: 2.情绪引导: 3.节奏控制: 4.品牌塑造: 5.文化表达: 6.致敬与激励: 综上所述,颁奖领奖音乐在颁奖典礼中不仅作为背景音效存在,更是情感传递、氛围营造、流程把控、品牌塑造、文化展现和精神激励的重要载体,对于提升典礼的整体效果和观众体验有着不可忽视的影响。
这个项目是用于个人参加浙江大学移动创新竞赛而使用。
手绘稿模板iphone_x_wireframe_template_-_a4A4打印模板高清待办练字模板PDF下载
使用最简单的输入流和输出流实现 文件复制粘贴功能。这是第二种方式,与第一种方式的不同在于我们使用byte[]数组盛放从myFile读取到字节。比第一种方式,速度会快一些。
Web APIs-Dom获取&属性操作(理论+实战篇)-获取随机图片案例资料
免安装,无缝从Linux系统上传下载文件
apk导入手机文件夹下载
Screenshot_20240422_201618_com.ss.android.ugc.aweme.jpg
设计模式_结构型_外观模式
电气测量技术课程设计-基于STM32的电机状态检测系统 实现的功能有实时检测电机的转速、温度和姿态角度,可以通过串口或Labviwe读取 选用的模块包括霍尔传感器、DS18B20温度传感器和MPU6050陀螺仪传感器
大家找文章比较费劲的话,可以直接在这个资源里找我会持续更新的,大家冲就完事了,为了学习我的人进步的更快的方式,我可以贡献一下自己的代码,让大家观看。 心理上:希望自己分享的东西得到关注度,心里上有成就感 研究领域上:希望分享的东西可以促进同行之间的交流,加深自己的理解以及讨论中发现问题 综合来看:对自己做的东西有自信,对自己写的东西有自信 我始终坚信,推动科学与技术发展的动力之一就是分享。分享有益,何谓劳也?得自己完成开发了项目中的功能很有成就感(自我感觉牛掰),于是分享在论坛可以和大牛们一起讨论,甚至提出建议进行修改完善,就这一点来说,分享代码对项目的推进是有好处的因为可以有成就感啊,分享出去可以炫耀一下,也可以与其他人交流交流 我们不妨开放一下我们的胸怀,不要怕别人学你的,也不要怕学不到别人的,做学问始终要恭谨甚至谦卑,时间长了,总归会发现,你的进步比别人的进步更快更高更强。 这是勉励您也是勉励我自己的话。从做项目角度来说,我是很乐意share的,也在自己的博客园、csdn、GitHub中share过自己的源码和笔记。首先需要说明一点:国内外均有很多很多人喜欢分享出自己的代码、总结
计算机技术是指评价计算机系统的各种知识和技能的总称。它涵盖了计算机硬件、软件、网络和信息安全等方面。计算机技术的发展使我们能够进行高效的数据处理、信息存储和传输。现代计算机技术包括操作系统、数据库管理、编程语言、算法设计等。同时,人工智能、云计算和大数据等新兴技术也在不断推动计算机技术的进步。计算机技术的应用广泛,涵盖了各个领域,如商业、医疗、教育和娱乐等。随着计算机技术的不断革新,我们可以更加高效地实现预期自动化、标准化
建筑网页插画界面XD源文件AdobeXD源码下载设计素材UI设计
网络安全相关的RSS订阅列表.zip
智创大赛主程序,Arduino开发
tomcat安装及配置教程 Tomcat安装及配置教程与功能介绍
java Netty源码解析-服务启动过程
百度Apollo学习:Routing模块结构和源码