viewpager用法
2015-09-19 21:39
337 查看
public class ViewPageActivity extends ActionBarActivity { private View page; private Button btnOK; private ViewPager viewPager; private ImageView imageView; private ArrayList<View> pageViews;//存放每页要要显示的view private ImageView[] imageViews;//存放小圆点 private ViewGroup viewPictures; private ViewGroup viewPoints; private SharedPreferences isfirst; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 在实际开发中LayoutInflater这个类还是非常有用的, 它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件, 并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。 利用getLayoutInflater()来实例化inflater */ LayoutInflater inflater = getLayoutInflater(); //pageViews数组用来保存要分页显示的View(即每张图片的.xml布局文件) pageViews=new ArrayList<View>(); //通过inflater.inflate(R.layout.viewpager01, null)来引入View //并把它添加到pageViews数组中 pageViews.add(inflater.inflate(R.layout.viewpager01, null)); pageViews.add(inflater.inflate(R.layout.viewpager02,null)); pageViews.add(inflater.inflate(R.layout.viewpager03,null)); //动态创建存放小圆点的数组imageViews的大小,和保存几个View的数组pageViews的大小一致 imageViews=new ImageView[pageViews.size()]; /*布局文件viewpagers是显示pageViews和imageViews的载体, 即pageViews和imageViews所相关的控件都写在布局文件viewpagers中 */ viewPictures = (ViewGroup) inflater.inflate(R.layout.viewpagers, null); //为图片viewPager和小圆点viewPoints设置监听事件 viewPager = (ViewPager) viewPictures.findViewById(R.id.guidePagers); viewPoints = (ViewGroup) viewPictures.findViewById(R.id.viewPoints); // 添加小圆点导航的图片,即动态添加ImageView for (int i = 0; i < pageViews.size(); i++) { imageView = new ImageView(ViewPageActivity.this); imageView.setLayoutParams(new ViewGroup.LayoutParams(20, 20)); imageView.setPadding(5, 0, 5, 0); // 把小圆点放进数组中 imageViews[i] = imageView; // 默认选中的是第一张图片,此时第一个小圆点是选中状态,其他不是 if (i == 0) imageViews[i].setImageDrawable(getResources().getDrawable( R.drawable.page_indicator_focused)); else imageViews[i].setImageDrawable(getResources().getDrawable( R.drawable.page_indicator_unfocused)); // 将imageviews添加到小圆点视图组 viewPoints.addView(imageViews[i]); } //设置显示viewPictures setContentView(viewPictures); //设置适配器NavigationPageAdapter()继承自PagerAdapter() viewPager.setAdapter(new NavigationPageAdapter()); // 为viewpager添加监听,当view发生滑动变化时的响应 //同样NavigationPageChangeListener()继承自OnPageChangeListener() viewPager.setOnPageChangeListener(new NavigationPageChangeListener()); } // 导航图片view的适配器,必须要实现的是下面四个方法 class NavigationPageAdapter extends PagerAdapter { @Override public int getCount() { return pageViews.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { return arg0 == arg1; } // 初始化每个Item @Override public Object instantiateItem(View container, int position) { ((ViewPager) container).addView(pageViews.get(position)); //为其中第3个有按钮的View页面添加相应的监听事件 if(position==2){ btnOK=(Button)findViewById(R.id.btnOK); btnOK.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(), "点击按钮", Toast.LENGTH_SHORT); // Intent intent = new Intent(ViewPageActivity.this, PicActivity.class); // startActivity(intent); } }); } return pageViews.get(position); // return page; } // 销毁每个Item @Override public void destroyItem(View container, int position, Object object) { ((ViewPager) container).removeView(pageViews.get(position)); } } // viewpager的监听器,主要是onPageSelected要实现 class NavigationPageChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { // 循环主要是控制导航中每个小圆点的状态 for (int i = 0; i < imageViews.length; i++) { // 当前view下设置小圆点为选中状态 imageViews[i].setImageDrawable(getResources().getDrawable( R.drawable.page_indicator_focused)); // 其余设置为未选中状态 if (position != i) imageViews[i].setImageDrawable(getResources().getDrawable( R.drawable.page_indicator_unfocused)); } } } }
参考博客:<a target=_blank href="http://blog.csdn.net/alangdangjia/article/details/9054921">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/weixing/archive/2013/10/11/3363951.html">点击打开链接</a>
相关文章推荐
- javascript中的变量对象和活动对象
- mysql安装完成后启动详解
- [LeetCode][JavaScript]Binary Tree Postorder Traversal
- POST和GET登陆
- 按键精灵9.5.1.11790秒速启动,多余元素全灭版
- 打开Voice Over时,CATextLayer的string对象兼容NSString和NSAttributedString导致的Crash(二解决思路2)
- 设置闪屏页时间延迟
- 世界各国网络域名后缀
- 黑马程序员之--C语言学习笔记之变量、常量和注释
- actionView
- session的存储方式和配置
- 超级复制shadowcopy
- 常见的5种RuntimeExecption
- spring集成ehcache(注解使用,非hibernate集成,顺便谈谈自己的看法)
- 如果查找SCI期刊属于哪个中科院分区
- 常用的Linux命令
- The Ten Commandments
- CSS基础
- Jenkins+Gradle实现持续部署
- 博弈论之NIM游戏与SG函数