Android自定义页面指示器
来源:互联网 发布:php地区三级联动 编辑:程序博客网 时间:2024/04/30 15:02
前段时间项目中需求中加入了一个分页加载的功能,其中自己写了一个自定义的页面指示器,在一个FrameLayout里边放了一个ViewPager和LinearLayout。ViewPager负责加载展示多个页面,LinearLayout区域负责展示自定义的指示点。
// ViewFlipper的指示点
@ViewInject(id = R.id.pointLayout)
LinearLayout pointGroup;
//初始化指示点的个数
//count 是页面的个数,有几个页面就初始化几个指示点
private void iniBannerPoint(int count) {
for (int i = 0; i < count; i++) {
View view = new View(this);
//设置指示点的宽度和高度为15dp,15dp
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(15, 15);
//设置指示点之间的间距为15dp
params.leftMargin = 15;
view.setLayoutParams(params);
//使用自定义的drawable(point_select_background,代码下面给)绘制view的背景
view.setBackgroundResource(R.drawable.point_select_background);
//初始化为未选中状态
view.setEnabled(false);
pointGroup.addView(view);
}
//默认初始化指示点开始指示在第一个页面
pointGroup.getChildAt(0).setEnabled(true);
}
自定义的drawable(selector选择器)point_select_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/point_unable_background" android:state_enabled="false"/>
<item android:drawable="@drawable/point_enable_background" android:state_enabled="true"/>
</selector>
自定义的drawable(shape)point_unable_background.xml(未选中点的指示点样式)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ffffffff"/>
<corners android:radius="5dp"/>
</shape>
自定义的drawable(shape)point_enable_background.xml(选中点的指示点样式)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#fffe9a00"/>
<corners android:radius="5dp"/>
</shape>
与手势滑动翻页联动:activity需要实现OnPageChangeListener接口,为ViewPager添加翻页监听器vp.setOnPageChangeListener(this);在activity中显现OnPageChangeListener接口中的三个抽象方法
//用于记录上次的页面页数
private int preposition = 0;
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
//在页面选中之后,触发该方法,重绘指示点
public void onPageSelected(int position) {
int id = position % count;
View view0 = pointGroup.getChildAt(preposition % count);
//将上一个页面的指示点设置为未选中
view0.setEnabled(false);
View view1 = pointGroup.getChildAt(position % count);
//将新页面的指示点设置为选中状态
view1.setEnabled(true);
//将新页面的页数赋值给preposition
preposition = position;
}
这个页面指示器比较简单,不需要引入外部繁冗的指示点框架,运行效率比较高,需要的筒子们可以试试,但是它也存在一个缺点,点击指示点无法跳转到相应的页面。
- Android自定义页面指示器
- 自定义页面滑动指示器
- Android 页面指示器
- Android 自定义指示器<NBIndicatorView>
- Android自定义ViewPager指示器
- Android-自定义ViewPager指示器
- Android自定义ViewPager指示器
- 页面指示器与自定义View
- 自定义Android圆点指示器
- Android自定义指示器时间轴
- 自定义ViewPager页面指示器(导航索引)
- Android滚动页面位置指示器:CircleIndicator
- Android自定义Viewpager指示器PagerIndicator-仿微博头条效果
- Android 自定义View实现ViewPager指示器
- Android---自定义ViewPager指示器(一)
- android 自定义View弯曲滑竿指示器
- Android自定义View--Flyme6的Viewpager指示器
- Android 自定义控件ViewPager 指示器 ViewPagerIndicator
- 使用透明贴膜DIY制作手机全息投影
- 深入理解JVM之内存区域与内存溢出 诊断工具
- An internal error occurred during: "Launching FarmeWork on MyEclipse Tomcat"MyEclipse解决方案。
- struts2中的constant详解
- Level of detail
- Android自定义页面指示器
- 数据结构和算法经典100题-第27题
- 刚安装的sql server 无法附加数据库
- Graphics Pipelines
- U盘安装win7sp1,在USB3.0接口上需要驱动
- 链接太长自动换行
- 多线程之线程创建的两种方法(Java)
- Object源码后记
- iOS问题(iOS9 + Xcode7)