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.