本篇文章给大家分享的是有关怎么在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实现一个滑动布的局