美文网首页
aide安卓编程12-屏幕触控

aide安卓编程12-屏幕触控

作者: 傻傻不知天年 | 来源:发表于2018-10-09 22:48 被阅读0次

    把全部代码替换为:

    package com.baobao.sayhello;
    
    import android.app.*;
    import android.content.*;
    import android.graphics.*;
    import android.os.*;
    import android.view.*;
    import android.widget.*;
    class mview extends View{//自定义一个叫mview的新类型,继承View
        int a=0;//定义整数a并初始化为0
        public mview(Context con){//构造(初始化)函数
            super(con);
        }
    
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh)
        {
            //窗口大小改变时触发
            super.onSizeChanged(w, h, oldw, oldh);
        }
    
        @Override
        protected void onDraw(Canvas canvas)
        {
            //绘图时触发
            Paint p=new Paint();
            p.setColor(Color.rgb(255,0,0));
            p.setTextSize(100);
            canvas.drawText(String.valueOf(a),0,100,p);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            //触控屏幕时触发
            if(event.getAction()==MotionEvent.ACTION_DOWN){
                //如果事件类型是触摸屏幕
                a=a+1;//a值增加1
            }
            invalidate();//重画屏幕
            return true;//返回真,表示已处理消息
        }
    }
    public class MainActivity extends Activity 
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            mview view=new mview(this);//新建一个叫view的mview
            setContentView(view);//把view设为整个界面
        }
    }
    
    代码 效果

    这个程序最开始在界面左上角写着0,每触摸一次屏幕显示的数值就会加1。

    代码第10行定义了整数a并初始化为0。

    第32~42行是新增的用来处理触控消息的部分。其中每当点击屏幕事件发生,就会执行a=a+1;这样a就变大了1。之后再绘制界面时画的文字就是新的a的值了。

    第36行末尾的ACTION_DOWN的意思是按下事件,一共3种常用事件:
    ACTION_DOWN 按下(手指从不触摸到触摸)
    ACTION_MOVE 移动(手指保持触摸并移动位置)
    ACTION_UP 弹起(手指从触摸到不触摸)

    如果把代码里的ACTION_DOWN改为ACTION_UP会发现稍微移动手指(甚至感觉没在动)时显示的数就会变很多,这说明移动事件的感知很敏感。

    获得触控事件的同时还会获得此时手指的坐标。下面例子是把触摸点的坐标显示到屏幕左上角:

    package com.baobao.sayhello;
    
    import android.app.*;
    import android.content.*;
    import android.graphics.*;
    import android.os.*;
    import android.view.*;
    import android.widget.*;
    class mview extends View{//自定义一个叫mview的新类型,继承View
        int x=0,y=0;//定义整数x和y并初始化为0
        public mview(Context con){//构造(初始化)函数
            super(con);
        }
    
        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh)
        {
            //窗口大小改变时触发
            super.onSizeChanged(w, h, oldw, oldh);
        }
    
        @Override
        protected void onDraw(Canvas canvas)
        {
            //绘图时触发
            Paint p=new Paint();
            p.setColor(Color.rgb(255,0,0));
            p.setTextSize(100);
            canvas.drawText(String.valueOf(x)+","+String.valueOf(y),0,100,p);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            //触控屏幕时触发
            if(event.getAction()==MotionEvent.ACTION_DOWN){
                //如果事件类型是触摸屏幕
                x=(int)event.getX();//把横坐标值存到x
                y=(int)event.getY();//把纵坐标值存到y
            }
            invalidate();//重画屏幕
            return true;//返回真,表示已处理消息
        }
    }
    public class MainActivity extends Activity 
    {
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            mview view=new mview(this);//新建一个叫view的mview
            setContentView(view);//把view设为整个界面
        }
    }
    
    代码 效果

    相关文章

      网友评论

          本文标题:aide安卓编程12-屏幕触控

          本文链接:https://www.haomeiwen.com/subject/dfluaftx.html