您的位置:首页 > 其它

自定义View添加点击事件

2017-11-24 20:26 169 查看
最近一直在学习自定义控件越学习越觉得自定义控件厉害。也越发的想掌握其原理。虽然GitHub上各种各样的轮子都有,但是万一没有呢?依靠轮子是不靠谱的!!!自己掌握原理,才是最靠谱的!!!当我用自定义控件画出来想要的效果时,突发奇想。点了一下,发现没反应。于是想设置监听事件。我的画的控件充满屏幕,我只是想点击局部。但是直接设置监听的话,监听的是整个控件。一时间有点懵逼。于是Google找思路。大致的思路如下:1.自定义点击事件接口
//自定义点击事件接口
interface HomeViewClick {
fun onViewCilik()
}
2.创建,设置自定义的点击监听的方法
//设置自定义的点击事件监听
fun setOnHomeViewClick(homoViewClick: HomeViewClick) {
mHomoViewClick = homoViewClick
}
3.重写onTouchEvent()方法需要注意的是:返回true(表示控件自己处理触摸事件),返回false则是交给父控件处理。当返回false时,MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP都不会触发4.根据MotionEvent判断用户的动作
MotionEvent.ACTION_DOWN		》》》		按下
MotionEvent.ACTION_MOVE		》》》		移动
MotionEvent.ACTION_UP		》》》		抬起
5.当用户抬起手指时,判断其坐标是否在指定范围内
6.在指定范围内时,用接口实例调用接口中的方法
override fun onTouchEvent(event: MotionEvent): Boolean {when (event.action) {//手指抬起MotionEvent.ACTION_UP -> {distanceY = 0fthis.invalidate()//重新绘制var x = event.getX()var y = event.getY()if (x > rectLeft && x < rectRight && y < rectBottom && y > rectTop) {mHomoViewClick?.onViewCilik()}else{}}}return true//自己处理!!!!!!!}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: