怎么在Android应用中利用onTouchEvent实现一个滑动布的局

  介绍

本篇文章给大家分享的是有关怎么在Android应用中利用onTouchEvent实现一个滑动布的局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1,布尔>/* *,   *大敌;作者:Biligle又是;   ,*自定义布局,   ,*/,   public  class  MyViewGroup  extends  ViewGroup  {,   ,   ,private  MyViewGroupListener 侦听器;//接口,监听滑动事件,   ,private  int  vertical =, 0;//布局距离顶端距离(默认0),   ,   ,public  MyViewGroup (Context 上下文),{,   ,超级(上下文);   }大敌;   ,   ,public  MyViewGroup (Context 上下文,AttributeSet  attrs), {,   ,超级(上下文,attrs);,   }大敌;   ,   ,public  MyViewGroup (Context 上下文,AttributeSet  attrs,, int  defStyleAttr), {,   ,超级(上下文,attrs, defStyleAttr),,   }大敌;   ,   ,@RequiresApi (api =, Build.VERSION_CODES.LOLLIPOP),   ,public  MyViewGroup (Context 上下文,AttributeSet  attrs,, int  defStyleAttr,, int  defStyleRes), {,   ,超级(attrs,上下文,还以为,defStyleAttr, defStyleRes),,   }大敌;   ,   ,   ,private  int  downY =, 0;//按下时的点,   ,private  int  slide =, 0;//最终移动距离,   ,@Override    ,public  boolean  onTouchEvent (MotionEvent 事件),{,   ,switch  (event.getAction ()) {,   case 才能;MotionEvent.ACTION_DOWN:,   downY 才能=,(int), event.getY (),,   ,,休息;   case 才能;MotionEvent.ACTION_MOVE:,   slide 才能=,downY 作用;(int) event.getY (),,   如果才能(slide  & lt;, 0){//下滑,   ,,vertical =, listener.marginTop (Math.abs(幻灯片),,   }才能else 如果(slide 祝辞,0){//上滑,   ,,vertical =, listener.marginTop(幻灯片),,   ,,},   ,,休息;   case 才能;MotionEvent.ACTION_UP:,   如果才能(vertical  & lt;, 300) {,   ,,//布局距离屏幕顶部小于300年就让布局充满整个屏幕,   ,,vertical =, listener.marginTop (0),,   ,,},   ,,休息;   }大敌;   ,return 真实;   }大敌;   ,/* *大敌;   ,*测量子View    ,* @param  widthMeasureSpec    ,* @param  heightMeasureSpec    ,*/,@Override    ,protected  void  onMeasure (int  widthMeasureSpec, int  heightMeasureSpec), {,   ,super.onMeasure (widthMeasureSpec, heightMeasureSpec),,   ,for  (int 小姐:=,0;,小姐:& lt;, getChildCount();,我+ +),{,   View 才能;child =, getChildAt (i),,//才能系统测量,   measureChild才能(widthMeasureSpec,孩子,,heightMeasureSpec),,   }大敌;   }大敌;   ,/* *大敌;   ,*安排子视图的位置,   ,* @param  changed    ,* @param  l 左边距,   ,* @param  t 上边距,   ,* @param  r 右边距,   ,* @param  b 下边距,   ,*/,@Override    ,protected  void  onLayout (boolean 改变,,int  l, int  t, int  r, int  b), {,   ,int  left =, 0,, top =, 0,, right =, 0,, bottom =, 0;,   ,for  (int 小姐:=,0;,小姐:& lt;, getChildCount();,我+ +),{,   View 才能;child =, getChildAt (i),,   right 才能=,left  +, child.getMeasuredWidth (),,   bottom 才能=,top  +, child.getMeasuredHeight (),,   child.layout才能(左,,,,对,,底部),,   }大敌;   }大敌;   ,   ,public  void  setListener (MyViewGroupListener 侦听器){,=,this.listener ,侦听器,,   }大敌;   ,   interface  MyViewGroupListener {大敌;/* *大敌;   *,才能设置页面顶栏,上下滑动时触发,   *,才能@param  slide 滑动距离,   *,才能@return 当前上边距,   */才能,   ,int  marginTop (int 幻灯片),,   }大敌;   } public  class  MainActivity  extends  AppCompatActivity  implements  MyViewGroup.MyViewGroupListener {,   ,   ,/* *自定义布局(外层布局)*/,   ,private  MyViewGroup  myViewGroup;   ,/* *两个圆形图(在外层布局)*/,   ,private  ImageView  iv1 iv2/*,云*/,,   ,/* *包裹圆形图的布局*/,   ,private  RelativeLayout 使用;   ,/* *外层布局参数类(这里用到了params.topMargin:上边距)*/,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在Android应用中利用onTouchEvent实现一个滑动布的局