自定义ViewGroup卡片式页面效果、Horizontalview下标跟随宽度移动改变
2016-12-29 09:43
453 查看
先上效果图! gif录制的比较挫。。。
主要实现的功能有:
Horizontalview的item滑动字体颜色渐变(仿微信)和大小渐变。
Scrollview是重写的ViewGroup,实现的自定义卡片式布局。
所有自定义控件的交互我都放在MainActivity:
有兴趣的可以下载代码看下:
Github:https://github.com/yfchu/CustomHorizontalScrollview/ (star下谢谢)
CSDN:http://download.csdn.net/detail/u010470383/9724141
主要实现的功能有:
Horizontalview的item滑动字体颜色渐变(仿微信)和大小渐变。
Scrollview是重写的ViewGroup,实现的自定义卡片式布局。
所有自定义控件的交互我都放在MainActivity:
/** * horizontalview点击时切换scrollview对应的pager */ private Handler horiHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case CommonUrl.SCROLL_ROLL: scrollView.setMovePage(msg.arg1);//点击item切换Scrollview CursorFollow(); break; case CommonUrl.SETDATA: int width = 0; for (int i = 0; i < textViewList.size(); i++) { width += textViewList.get(i).getViewWidth(); } mHorizontalViewWidth = msg.arg1;//屏幕宽度 mTabItemWidth = width / textViewList.size();//item宽度 pageItemNumber = mHorizontalViewWidth / mTabItemWidth;//页显示item数量 startScroll = pageItemNumber / 2 + pageItemNumber % 2;//起始滚动item endScroll = textViewList.size() - pageItemNumber + startScroll;//结束滚动item horizontalView.setStartScroll(startScroll, endScroll); break; } super.handleMessage(msg); } }; /** * Horizontalview游标跟随 * */ private void CursorFollow() { ValueAnimator anim = ValueAnimator.ofFloat(lineView.getTranslationX(),//游标当前位置 getScrollDistance(Index, scrollView.getTargetIndex()));//目标位置 anim.setDuration(moveAnimTime); anim.start(); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { lineView.setTranslationX((float) animation.getAnimatedValue());//设置平移过渡 } }); lineViewParams = (LinearLayout.LayoutParams) lineView.getLayoutParams(); anim = ValueAnimator.ofFloat(lineViewParams.width, textViewList.get(scrollView.getTargetIndex()).getViewWidth());//游标宽度过渡 anim.setDuration(moveAnimTime); anim.start(); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { lineViewParams.width = Math.round(Float.parseFloat(animation.getAnimatedValue().toString())); lineView.setLayoutParams(lineViewParams); } }); } /** * scrollLayout滑动时触发horizontalview文字的颜色和大小渐变效果。 */ private Handler touchHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MotionEvent.ACTION_DOWN: mXDown = (float) msg.obj; mXMove = mXDown; Index = scrollView.getTargetIndex(); /** * 按下时初始化参数 * */ rollBackIndex = -1; targetLeftIndex = -1; moveState = -1; textSelectScale = faultSelectScale; textNormalScale = faultNormalScale; break; case MotionEvent.ACTION_MOVE: //滑动操作 break; case MotionEvent.ACTION_UP: //手指弹起 break; case CommonUrl.FASTMOVE: //快速滑动时的up break; } super.handleMessage(msg); } };
有兴趣的可以下载代码看下:
Github:https://github.com/yfchu/CustomHorizontalScrollview/ (star下谢谢)
CSDN:http://download.csdn.net/detail/u010470383/9724141
相关文章推荐
- 自定义ViewGroup[跟随手指移动的view]
- 自定义ViewGroup实现多个单页面上下滑动效果
- 自定义ViewGroup实现多个单页面上下滑动效果
- 在一个Activity页面中View跟随手指移动,并且能实现点击效果
- Android自定义圆形View实现小球跟随手指移动效果
- android 自定义VIew 动态在页面中改变页面的布局
- 属性动画实现viewpager改变页面的时候,带有指示条的动画效果
- Android自定义控件系列六:自定义ViewGroup(一)实现ViewPager效果
- 自定义ViewGroup 实现拖动跟快速滚动的效果
- Android自定义控件系列五:自定义ViewGroup(一)实现ViewPager效果
- Android 自定义adapter的getView中的ViewGroup parent的宽度不正确
- Android ViewGroup实现页面滑动效果并实现不同的动画效果(转载)
- Android自定义ViewGroup自动换行实现滑动任意布局及事件处理效果
- 自定义ViewGroup实现标签云效果。
- 【安卓自定义控件】自定义ViewGroup实现透明背景的ViewPager效果
- Android 实例:通过自定义View组件实现跟随手指移动的小兔子
- 【移动开发】如何自定义ViewGroup
- 【代码片段】jquery 回到顶部效果(全兼容浏览器)可自定义出现位置和页面宽度
- 根据屏幕转向方向和屏幕宽度变化改变UITableView显示效果 屏幕旋转
- 自定义ViewGroup实现瀑布流效果