14 物理按键事件处理&&触摸屏事件处理&&手势检测

物理按键事件处理

在这里插入图片描述
每一个按键对应了一个常量(判断按下的是哪一个按键)

例:按下两次返回键退出程序

在这里插入图片描述
在这里插入图片描述

package com.example.pysic;

import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.Toast;

public class MainActivity extends Activity {
    private long exitTime = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //第一步:重写onKeyDown方法拦截用户单击后退按钮事件
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK){
            exit();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

    //第二步:创建退出方法
    public void exit(){
        if((System.currentTimeMillis()-exitTime)>2000){
            Toast.makeText(MainActivity.this,"再按一次退出程序",Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        }
        else{
            finish();
            System.exit(0);
        }
    }
}

触摸屏事件处理

单击事件

在这里插入图片描述

长按事件

在这里插入图片描述

例:长按按钮出现菜单

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.b1);
        button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                registerForContextMenu(view);
                openContextMenu(view);
                return false;
            }
        });
    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add("第一个菜单项文本");
        menu.add("第二个菜单项文本");
    }

触摸事件

在这里插入图片描述

手势检测

猜你喜欢

转载自blog.csdn.net/weixin_43328054/article/details/107466188