ViewPager圆点导航动态实现(利用seletor)
2016-08-05 16:50
489 查看
尝试过重绘view等方法来实现ViewPager底部的圆点导航,上网学习后才发现有更简便的实现方法。 1.首先设置selector来设定圆点的两种状态,即当前页面被选中、当前页面未被选中:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_enabled="true" android:drawable="@drawable/dot_selected"></item> <item android:state_enabled="false" android:drawable="@drawable/dot_unselected"></item>ß </selector>
可见,设定了两种状态,当前View被选中,通过setEable(true),来使得圆点使用@drawable/dot_selected来代替;反之则使用@drawable/dot_unselected来代替。
两种状态的文件如下,通过shape标签来实现圆点:
//dot_seleted.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="#ff7c7e8c" /><sizeandroid:width="10dp"android:height="10dp" /></shape>
//dot_unselected.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="#ff43465a" /><sizeandroid:width="10dp"android:height="10dp" /></shape>
2.接下来动态写入圆点:
private void initDots() {dots = new ArrayList<>();ImageView item;for (int i = 0; i < vpList.size(); i++) {//List<Integer> vpList;//用于存储每张图片的resIditem = new ImageView(this);item.setBackgroundResource(R.drawable.dot_selector);//此处将dot_selector设为背景LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20);//设置每一个圆点的宽高
layoutParams.setMargins(15, 0, 15, 0);//设置左右间隔。注意,由于此处圆点的父View是LinearLayout,故使用LinearLayout.LayoutParams
//而非ViewGroup.LayoutParamsitem.setLayoutParams(layoutParams);if (vpMain.getCurrentItem() == i)item.setEnabled(true);//当前图片被选中,置为trueelseitem.setEnabled(false);//当前图片未被选中,置为falsedots.add(item);//该圆点加入集合便于管理llDots.addView(item);//将该点加入LinearLayout中}}
3.最后重写onPageSelected方法,即可实现圆点导航:
@Overridepublic void onPageSelected(int position) {for (int i = 0; i < dots.size(); i++) {if (position == i)dots.get(i).setEnabled(true);elsedots.get(i).setEnabled(false);}}
ps:
踩过的坑,待填:ViewPager中的onPageSelected()中使用setBackgroundColor()与setImageResource()无法成功画出底部圆点的变化,圆点不会正常的跟随图片移动,而setBackgroundColor()可正常运行(但setBackground不仅是改变了整个矩形背景的颜色,并非单纯地改变圆点颜色)。
相关文章推荐
- Android App开发中ViewPager组件的入门使用教程
- 使用ViewPager实现高仿launcher左右拖动效果
- Android App中用Handler实现ViewPager页面的自动切换
- Android应用中使用ViewPager实现类似QQ的界面切换效果
- Android中ViewPager组件的基本用法及实现图片切换的示例
- 灵活使用Android中ActionBar和ViewPager切换页面
- Android实现千变万化的ViewPager切换动画
- Android中viewPager使用指南
- Android新特性页面之ViewPager拖拽到最后一页再拖拽打开其他Activity(三种方法)
- Android 使用 ViewPager循环广告位的实现
- Android中ViewPager实现滑动指示条及与Fragment的配合
- 详解Android App中ViewPager使用PagerAdapter的方法
- Android viewpager中动态添加view并实现伪无限循环的方法
- Android应用中使用ViewPager和ViewPager指示器来制作Tab标签
- Android ViewPager制作新手导航页(动态加载)
- 详解Android App中创建ViewPager组件的方法
- Android App中ViewPager与Fragment结合的一些问题解决
- 实现轮转广告带底部指示的自定义ViewPager控件
- 自定义RadioButton和ViewPager实现TabHost带滑动的页卡效果
- 实例讲解Android中ViewPager组件的一些进阶使用技巧