viewpager联动实现其他view平滑移动效果
来源:互联网 发布:康师傅 知乎 编辑:程序博客网 时间:2024/06/05 16:18
核心代码
floatView.setX (positionOffset*floatView.getWidth () + tabLive.getX () + position * tabLive.getWidth ());达到了viewpager平滑移动,上面浮动线也一起对应移动,代码就是这么简单。
详细说明
onPageScrolled 返回的参数position:即将显示的位置,趋势positionOffset:滑动百分比,滑动距离达到屏幕一般为50%,值在0-1之间positionOffsetPixels:滑动像素距离,与设备屏幕像素有关floatView.setX():指定浮动线view的横坐标
tabLive:直播、动态、主题是三个等大的view,floatview宽度也一致
思路:
1:floatview移动范围:直播下面和主题下面,最左边是直播View的tabLive.getX (),最右边是tabLive.getX ()加上3倍的直播View宽度。
2:滑动一个页面floatview移动范围:直播View的宽度。3:计算从第一个到第二个:floatview的联动滑动距离与viewpager的滑动百分比有关,即viewpager滑到中间floatview也要在直播动态中间,移动距离为直播view左边加上floatview的宽度乘以滑动百分比,positionOffset*floatView.getWidth () + tabLive.getX ();4:其他位置滑动与position有关,加上position * tabLive.getWidth ()即可。提示:onPageScrolled 中的position为即将展现的位置,即从2滑到3,只要触发滑动position就会变成3(position值为2).大概就是这么就完成了。
viewpage.addOnPageChangeListener (new ViewPager.OnPageChangeListener () { @Override public void onPageScrolled (final int position, final float positionOffset, final int positionOffsetPixels) { floatView.setX (positionOffset*floatView.getWidth () + tabLive.getX () + position * tabLive.getWidth ()); } @Override public void onPageSelected (final int position) { } @Override public void onPageScrollStateChanged (final int state) { }});
0 0
- 与viewpager联动实现其他view平滑移动效果
- viewpager联动实现其他view平滑移动效果
- 解决ViewPager.setCurrentItem不能实现平滑移动
- ViewPager+Tablayout实现页面标题联动效果
- Tablayout+Viewpager+fragment实现联动效果
- RadioGroup 和 ViewPager 实现联动效果
- TabLayout和ViewPager的联动效果实现
- View 平滑移动
- CoordinatorLayout实现view的联动效果
- 实现qq ipad客户端的对话框平滑移动的效果
- ViewPager+TabLayout(谷歌支持包)实现联动效果
- TabLayout和ViewPager实现联动效果以及Pulltorefresh
- 简单viewpager布局加fragment联动 可以实现效果
- TabLayout+ViewPager实现tab和页面联动效果
- HorizontalScrollView和ViewPager联动效果
- ViewPager+Tablayout的联动效果
- Tablayout 加 ViewPager 联动效果
- 实现自定义view实心圆移动效果
- UICollection内容的高亮状态如何做
- MVP从入门到...
- 如何修改VS 2010 中 help library库路径
- Mac安装Ruby+Cucumber+Selenium 然后运行一个简单的ruby脚本用selenium-webdriver
- 小程序写手机号码查吉凶,有检验手机号码正确性
- viewpager联动实现其他view平滑移动效果
- C++实现系统补丁查询-systeminfo系统命令查询补丁信息,c++从文件中查找特定的字符串
- Error 500: Filter [struts2]: could not be initialized
- 汪国新湖北诗书画院2015年各项工作成绩喜人、成效显著
- Linux下升级Python,编译安装
- 腾讯2017暑期实习生编程题
- 欢迎使用CSDN-markdown编辑器
- 浅析GIS行业地图绘制基本要求
- js获取url参数