赞
踩
在本例子中,以两个小动物为例,这两个小动物为自定义的view,可以根据点击位置实时更改其位置。
setOnTouchListener中的OnTouch方法。
该方法只要有手在屏幕上就会调用,比如按下,滑动,抬起,会时刻调用该函数的。
屏幕操作在framelayout布局中的的传递顺序:
framelayout布局是分层的,每层只有一个控件。
假如该framelayout上有多层,每次对屏幕的操作会从顶层开始向下判断,如果其中某一层的onTouch 方法return true,那么下面的层将不会接收到这些操作事件,也就是下面层对应的onTouch方法不会被调用。只有上层的返回false,底层的才能接收到屏幕事件。
motionEvent.getAction()
//获取状态值,就是上面的action_xxmotionEvent.getX()
//获取按下的x坐标motionEvent.getY()
//获取按下的y坐标利用ACTION_DOWN在按下的一瞬间才会被判断的性质,设置两个变量记录下初始的按压位置,可以通过motionEvent.getX(),motionEvent.getY()两个函数获得该位置。如果该位置与该对象的位置相差较为大的时候,就可以认为该对象没有被点击。可以设置一个全局变量,canmove,若判断成功则canmove=true,判断失败则继续false。
· 手指滑动时的判断:当手指在屏幕上滑动时,motionEvent.getAction()返回的状态为ACTION_MOVE,此时如果通过canmove判断是在对目前图片进行操作,则可以进行一些位置的更新操作,操作完成后根据具体情况判断需不需要将事件向下层传递,本次实验显然不用向下层传递
· 抬起时canmove的恢复:利用ACTION_UP只有抬起时才会被判断到,如果canmove为true则恢复为false;
https://github.com/xinyangwy/Android_game
(含有build、release文件夹,约80多M)
- 可以下载提取出来的APK直接运行在手机上体验:
- 链接:https://pan.baidu.com/s/1oW9uyipEMnK_9wXEDJKDEQ?pwd=wr62 提取码:wr62
–来自百度网盘超级会员V2的分享
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。