android 实现淘宝消息滚动条
来源:互联网 发布:雅思作文知乎simon 编辑:程序博客网 时间:2024/06/04 18:31
因为最近有项目需求,需要实现一个类似淘宝的消息滚动条,如下图所示。
比如上面图上的这个糯米头条功能,通过Ui automator view 发现糯米是通过一个listview的方式实现的,但是我们可以意识到这其实就是一个我们最常用的轮播图,只不过他的方向是纵向的,那么我们只要将ViewPager滚动方向改成纵向的就可以了。
思路:
-写一个VerticalViewPager
-通过定时器让他不断滚动
但是,我们都知道ViewPager只提供了横向的滑动,其实github上有很多的开源的项目来实现VerticalViewPager,在stack overflow上也有人给出了我们方法:
http://stackoverflow.com/questions/13477820/android-vertical-viewpager;
我们就可以根据他的方法实现了。
-实现viewpager 里的ViewPager.PageTransformer,代码如下:
private class MJNPageTransformer implements PageTransformer { @Override public void transformPage(View page, float position) { if (position < -1) { page.setAlpha(0); } else if (position<=1) { page.setAlpha(1); page.setTranslationX(page.getWidth() * -position); //set Y position to swipe in from top float yPosition = position * page.getHeight(); page.setTranslationY(yPosition); } else { page.setAlpha(0); } } }
-重写ViewPager里的onTouchEvent方法
private MotionEvent swapXY(MotionEvent ev) { float width = getWidth(); float height = getHeight(); float newX = (ev.getY() / height) * width; float newY = (ev.getX() / width) * height; ev.setLocation(newX, newY); return ev; } @Override public boolean onInterceptTouchEvent(MotionEvent ev){ boolean intercepted = super.onInterceptTouchEvent(swapXY(ev)); swapXY(ev); return intercepted; } @Override public boolean onTouchEvent(MotionEvent ev) { return super.onTouchEvent(swapXY(ev)); }
setPageTransformer(true, new MJNPageTransformer());setOverScrollMode(OVER_SCROLL_NEVER);这样一个纵向的ViewPager就出来了,接下来就是我们平常写轮播图的方式了
-定时器自动轮播
mHandler.sendEmptyMessage(0);
ENDprivate Handler mHandler = new Handler(new Handler.Callback(){ @Override public boolean handleMessage(Message msg) { if (mHandler.hasMessages(0)) { mHandler.removeMessages(0); } mHandler.postDelayed(runnable,3000); return true; }});private Runnable runnable = new Runnable() { @Override public void run() { if (vp != null) { if (vp.getCurrentItem() == items.size() - 1 ) { vp.setCurrentItem(0); } else { vp.setCurrentItem(vp.getCurrentItem()+1); } mHandler.sendEmptyMessage(0); } } };
0 0
- android 实现淘宝消息滚动条
- Android ViewFlipper实现淘宝垂直滚动广告条
- Android 原生控件ViewFlipper实现淘宝头条垂直滚动广告条
- Android仿淘宝滚动的头条
- Android仿淘宝滚动的头条
- 【Android 进阶】淘宝头条:向上滚动广告条ViewFlipper
- Android仿淘宝头条基于TextView实现上下滚动通知效果
- Android【垂直滚动广告条】仿淘宝头条1号店京东—垂直滚动广告条
- Android【垂直滚动广告条】仿淘宝头条1号店京东—垂直滚动广告条
- Android TextView实现滚动条
- Android中仿淘宝头条,自定义控件,向上滚动
- Android仿淘宝头条垂直滚动,垂直走马灯,公告
- Android 垂直滚动广告条,仿淘宝头条垂直滚动展示最新消息
- MessageScrollor消息滚动条
- 滚动条消息总结
- Android基础控件——ViewFlipper的使用,仿淘宝头条垂直滚动广告条
- Android基础控件——ViewFlipper的使用,仿淘宝头条垂直滚动广告条
- Android仿淘宝头条向上滚动广告条的效果ViewFlipper
- iOS UIDatePicker设置允许最小日期、最大日期范围
- LoadRunner常用知识点——集合点设置
- 训练第五周之只有五行的Floyd算法
- VS服务器资源管理器添加Mysql数据源
- Lightoj 1282 Leading and Trailing(前三后三位,学习fmod())
- android 实现淘宝消息滚动条
- 使用grunt压缩,合并前端代码
- POJ-----1745Divisibility
- hdu1010 Tempter of the Bone
- 基于域名的7层转发的实现(NAT+反向代理)
- 采用Filter统一验证是否登录
- 188 power shell 配色方案
- 杭电OJ2057-A + B Again
- 四层负载均衡和七层负载均衡的区别