自定义View页面的滑动切换
来源:互联网 发布:python for 无限循环 编辑:程序博客网 时间:2024/06/06 17:47
本文为博主原创--未经博主允许不得转载--谢谢合作!
效果图(左中右共三个个页面,左右页面默认隐藏,随手指滑动出来....)
<?xml version="1.0" encoding="utf-8"?><com.nxnresearch02.jieyan.SlidGroup xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.nxnresearch02.jieyan.MainActivity" tools:showIn="@layout/activity_main"> <include layout="@layout/left_layout"/> <include layout="@layout/right"/> <include layout="@layout/main_layout"/></com.nxnresearch02.jieyan.SlidGroup>
public class SlidGroup extends ViewGroup { private View leftView; private View mainView; private View rightView; private int mLeftWidth; private int mMainWidth; private int mMainHeight; public SlidGroup(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); leftView = getChildAt(0); rightView = getChildAt(1); mainView = getChildAt(2); measureChildren(widthMeasureSpec,heightMeasureSpec); mLeftWidth = leftView.getMeasuredWidth(); mMainWidth = MeasureSpec.getSize(widthMeasureSpec); mMainHeight = MeasureSpec.getSize(heightMeasureSpec); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { leftView.layout(-mLeftWidth,0,0,mMainHeight); rightView.layout(mMainWidth,0,mMainWidth+mLeftWidth,mMainHeight); mainView.layout(0,0,mMainWidth,mMainHeight); } float startX = 0; float startY = 0; float endX = 0; float endY = 0; float moveX = 0; @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: startX= event.getX(); startY= event.getY(); break; case MotionEvent.ACTION_UP: int nowX = getScrollX(); Log.v("hhh","getScrollX()"+getScrollX()); if(nowX < -mLeftWidth/2) { scrollTo(-mLeftWidth,0); }else if(nowX > -mLeftWidth/2 && nowX <0) { scrollTo(0,0); }else if(nowX >0 && nowX < mLeftWidth/2) { scrollTo(0,0); }else { scrollTo(mLeftWidth,0); } break; case MotionEvent.ACTION_MOVE: endX = event.getX(); endY = event.getY(); moveX = endX-startX; int outX = (int) (getScrollX()+(-moveX)); if(outX < -mLeftWidth) { scrollTo(-mLeftWidth,0); }else if(outX > mLeftWidth) { scrollTo(mLeftWidth,0); }else { scrollBy(-(int) moveX,0); startX = endX; } break; } return true; }}
scrollto()---只能滑动一次,scrollBy()--在原有的基础上继续滑动.
0 0
- 自定义View页面的滑动切换
- 关于仿微信滑动切换View页面的问题
- Android 自定义ViewPager的滑动切换页面效果
- 初识自定义View-View的弹性滑动
- 自定义View基础(二)View的滑动
- 【自定义View】1.View的滑动
- TabLayout+View Pager+Fragment 实现页面左右滑动切换
- 自定义View的总结(自定义滑动开关)
- jquerymobile的页面滑动切换效果实现
- 利用viewpager实现页面的滑动切换
- 关于滑动切换页面swiper的坑
- 安卓自定义view,实现页面切换的位置指示动画
- 自定义滑动操作的 Table View Cell
- 自定义view,跟随手指滑动的圆球
- 自定义View之垂直滑动的ViewPager
- 自定义View的5中滑动方式
- ViewPager页面滑动切换
- 自定义View-滑动开关
- 你真的了解UITextField吗?
- 《30天自制操作系统》12
- 初探和实现websocket心跳重连
- maven 搭建springmvc web项目
- 一切的源头
- 自定义View页面的滑动切换
- Meta标签详解
- Android studio gradle导入库的方法
- 进制转换总结
- STL源码分析----神奇的 list 的 sort 算法实现
- centos改变编译后的文件名
- 编译caffe源码时,make runtest问题解决方案:[ FAILED ] SGDSolverTest/0.TestSnapshotShare, where TypeParam = caffe:
- win10 uwp 右击浮出窗在点击位置
- HTML 基础