Android onTouchEvent()

上一章节中我们学习了 基于回调 的事件处理机制,本章节我们用一个范例来巩固下知识,顺便学习下 onTouchEvent()

onTouchEvent() 也是基于事件回调的

onTouchEvent()

同样是触碰事件,onTouchEvent() 与 TouchListener 不同的是,前者基于回调,后者基于事件,前者更多的是用于自定义的 view

所有的 View 类中都重写了 onTouchEvent() 方法,如果我们返回的值是 false 的话,那么事件会继续向外传播,由外面的容器或者 Activity 进行处理

范例

我们写一个范例,自定义一个 view,绘制一个蓝色的小圆,可以跟随手指进行移动


  1. 创建一个 空的 Android 项目 cn.twle.android.OnTouchEvent

  2. 在 MainActivity.java 目录下创建一个新的 View MsView.java

    package cn.twle.android.ontouchevent;
    
    import android.util.AttributeSet;
    
    import android.content.Context;
    import android.view.View;
    import android.view.MotionEvent;
    
    import android.graphics.Paint;
    import android.graphics.Canvas;
    import android.graphics.Color;
    
    public class MsView extends View {
    
        public float X = 50;  
        public float Y = 50;
    
        //创建画笔  
        Paint paint = new Paint();
    
        public MsView(Context context,AttributeSet set)  
        {  
            super(context,set);  
        }
    
        @Override  
        public void onDraw(Canvas canvas) {  
            super.onDraw(canvas);  
            paint.setColor(Color.BLUE);  
            canvas.drawCircle(X,Y,30,paint);  
        }
    
        @Override  
        public boolean onTouchEvent(MotionEvent event) {  
            this.X = event.getX();  
            this.Y = event.getY();  
            //通知组件进行重绘  
            this.invalidate();  
            return true;  
        }  
    }
    
  3. 然后修改 activity_main.xml 添加我们刚刚自定义的 MsView

    <RelativeLayout 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" >  
        <cn.twle.android.ontouchevent.MsView  
            android:layout_width="match_parent"  
            android:layout_height="match_parent" />  
    </RelativeLayout>
    

运行后就可以使用手指触摸进行移动

Android 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

♥   简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.