Android 实现ScrollView自定义翻页宽度(每次滑动一页) - 类似钉钉工作台
2017-02-15 22:06
399 查看
【描述】:
每个属性都是一个item,每屏显示3个item,每次滑动,ScrollView滚动一个屏幕的宽度。【效果】:
【代码】:
【一】添加item到ScrollViewif (!functionPage.getReportPanel().isEmpty()) { for (ReportItem reportItem : functionPage.getReportPanel()) { View view = mInflater.inflate(R.layout.item_main_center, layoutScrollview, false); //设置每个item的宽度为屏幕宽的1/3 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( screenWidth / 3, ViewGroup.LayoutParams.WRAP_CONTENT); view.setLayoutParams(params); ((TextView) view.findViewById(R.id.top_tv_value)).setText(reportItem.getValue()); ((TextView) view.findViewById(R.id.top_tv_name)).setText(reportItem.getName()); layoutScrollview.addView(view); } //添加空白view,方便scrollview滚动操作 int blankNum = functionPage.getReportPanel().size() % 3 == 0 ? 0 : 3 - functionPage.getReportPanel().size() % 3; for (int i = 0; i < blankNum; i++) { View view = mInflater.inflate(R.layout.item_main_center, layoutScrollview, false); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( screenWidth / 3, ViewGroup.LayoutParams.WRAP_CONTENT); view.setLayoutParams(params); ((TextView) view.findViewById(R.id.top_tv_value)).setText(""); ((TextView) view.findViewById(R.id.top_tv_name)).setText(""); layoutScrollview.addView(view); } }
为了方便操作,如果需要显示的item数不是3的倍数,则用空白view填充,以便方便计算与滚动。
【二】控制ScrollView每次滚动的距离与相应操作
mScrollView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mOldScrollX = mScrollView.getScrollX(); break; case MotionEvent.ACTION_UP: mCurScrollX = mScrollView.getScrollX(); //每次手滑动距离大于200或者小于-200才可以触发ScrolView滚动一屏幕距离,否则恢复原位 if ((mCurScrollX - mOldScrollX) > 200) { mScrollView.scrollTo(mOldScrollX + screenWidth, 0); } else if ((mCurScrollX - mOldScrollX) < -200) { mScrollView.scrollTo(mOldScrollX - screenWidth, 0); } else { mScrollView.scrollTo(mOldScrollX, 0); } break; } return false; } });
【三】控制ScrollView惯性滚动
//为了阻止惯性滚动,自定义ScrollView并且重写fling方法,设置velocity / 1000这是关键。 @Override public void fling(int velocity) { super.fling(velocity / 1000); }
相关文章推荐
- Android 自定义ScrollView实现滑动时状态栏变色。
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- **Android三五行代码结局有滑块,可滑动的TABLE导航栏。类似斗鱼直播的直播页面导航栏,滑块可动态根据栏目宽度适应,无需自定义view** 先来说下思路把,很简单,一个HorizontalS
- Android编程实现Gallery中每次滑动只显示一页的方法
- Android自定义ScrollView:实现滑动顶部停靠
- Android自定义ViewPager实现纵向滑动翻页效果
- Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListView、ScrollView、ViewPager等滑动控件
- android三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现
- Android自定义ScrollView实现反弹效果
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- [转]Android中实现上下左右都可滑动的ScrollView
- android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
- Android中实现滑动翻页—使用ViewFlipper
- 自定义实现类似android主界面的滑屏换屏控件
- android 自定义ScrollView实现反弹效果(以及解决和ListView之间的冲突) .
- android 自定义ImageView实现图片手势滑动,多点触摸放大缩小效果
- Android中实现滑动翻页—使用ViewFlipper
- Android中实现滑动翻页—ViewFlipper
- android 自定义ViewGroup和对view进行切图动画实现滑动菜单SlidingMenu
- Launcher-自定义实现类似android主界面的滑屏换屏控件