Android(安卓)实现轮播图效果(三) 底部圆点状态改变
16lz
2021-01-26
自动轮播和手动轮播之后应该实现圆点的切换
自定义改变圆点状态的监听器
新建接口public interface DotChangeListener,添加方法void dotChangeListener(int index);并在ImageBannerFramLayout实现改接口,方法的具体实现:
/** * 改变圆点状态方法的实现 * @param index */ @Override public void dotChangeListener(int index) { //传入的index为当前轮播图片的索引 //获得圆点个数 int count = linearLayout.getChildCount(); for (int i = 0; i < count; i++) { ImageView imageView = (ImageView) linearLayout.getChildAt(i); //设置圆点的选中状态 if (i == index) { imageView.setImageResource(R.drawable.dot_select); } else { imageView.setImageResource(R.drawable.dot_normal); } } }
修改ImageBannerViewGroup.java中的onTouchEvent方法,在MotionEvent.ACTION_MOVE事件中调用自定义的改变圆点状态的监听器
@Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: {//表示的是用户按下的一瞬间 isClick = true; stopAuto();//用户按下禁止自动轮播 //第二种方法优化: if (!scroller.isFinished()) { scroller.abortAnimation(); } startX = (int) event.getX(); break; } case MotionEvent.ACTION_MOVE: {//表示的是用户按下之后在屏幕上移动的过程 int moveX = (int) event.getX(); int distance = moveX - startX;//移动的距离 scrollBy(-distance, 0); startX = moveX; isClick = false; break; } case MotionEvent.ACTION_UP: {//表示的是用户抬起的一瞬间 int scrollX = getScrollX();//当前位置 index = (scrollX + childWidth / 2) / childWidth; if (index < 0) {//说明此时已经滑动到左边第一张图片 index = 0; } else if (index > childCount - 1) {//说明此时已经滑动到最右边最后第一张图片 index = childCount - 1; } if (isClick) {//代表是点击事件 imageBannerLister.clickImageLister(index); } else { //第二种方法第三步: int dx = index * childWidth - scrollX; scroller.startScroll(scrollX, 0, dx, 0); postInvalidate(); dotChangeListener.dotChangeListener(index); //第一种方法// scrollTo(index * childWidth, 0);//滑动设置 } startAuto();//用户离开屏幕开启自动轮播 break; } default: { break; } }// return super.onTouchEvent(event); return true;//返回true的目的是告诉 我们该Viewgroup容器的父View 我们已经处理好了该事件。 }
更多相关文章
- Android顶部弹出提示语的三种实现方式:WindowManager、PopupWindo
- 高仿网易4.0新UI框架
- Android(安卓)5.0 CTS测试 ManagedProfileTest测试总结
- 【Android(安卓)UI】具有弹性的ListView
- android view滑动的几种方法
- Android(安卓)listview指定垂直滑动距离
- Android用户界面 UI组件--TextView及其子类(三) EditView以及各
- android 弹性ScrollView(已优化)
- Android中使用GridView分页显示系统所安装的应用,支持拖动与手势