Android基础——物理按键,长按,触摸事件及其监听器

Android基础——物理按键,长按,触摸事件及其监听器,第1张

概述布局文件<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apkes/android"xmlns:app="http://schemas.android.com/apkes-auto"xmlns:tools="http://s

布局文件

<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:ID="@+ID/relationLayout"    tools:context=".MainActivity">    <Imagebutton        androID:ID="@+ID/button1"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:text="长按按钮"        /></relativeLayout>

java代码:长按这块还有点问题

package com.example.myeventi;import androIDx.appcompat.app.AppCompatActivity;import androID.app.Activity;import androID.os.Bundle;import androID.vIEw.ContextMenu;import androID.vIEw.KeyEvent;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.Imagebutton;import androID.Widget.relativeLayout;import androID.Widget.Toast;public class MainActivity extends Activity{    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        //2.2:把长按事件注册到菜单中,并打开菜单,在onCreate中执行        Imagebutton button1 = (Imagebutton)findVIEwByID(R.ID.button1);        button1.setonLongClickListener(new VIEw.OnLongClickListener() {            @OverrIDe            public boolean onLongClick(VIEw v) {                registerForContextMenu(v);//把长按事件注册到ContextMenu中                openContextMenu(v);//打开菜单                return false;            }        });        //3.2:创建并实例化touchVIEw类的对象,并为touchVIEw添加触摸事件监听器,        //      在重写的方法中根据触摸的位置重绘touchVIEw        final touchVIEw touchVIEw = new touchVIEw(MainActivity.this);        touchVIEw.setontouchListener(new VIEw.OntouchListener() {            @OverrIDe            public boolean ontouch(VIEw v, MotionEvent event) {                touchVIEw.bitmapX = event.getX()-80;//设定坐标;                touchVIEw.bitmapY = event.getY()-80;                touchVIEw.invalIDate();//重新绘制                return true;            }        });        //3.3:把touchVIEw更新到布局管理器中        relativeLayout relativeLayout = (relativeLayout) findVIEwByID(R.ID.relationLayout);        relativeLayout.addVIEw(touchVIEw);    }    /*    1:基本按钮连续按两次返回键退出应用    */    private static long lastTime = 0;    //1.1:重写onKeyDown()方法拦截用户单击后退按钮事件    @OverrIDe    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode == KeyEvent.KEYCODE_BACK){            exit();            return true;        }        return super.onKeyDown(keyCode, event);    }    //1.2:创建退出方法exit(),需要判断两次按下返回键的时间差    public voID exit(){        if(System.currentTimeMillis()-lastTime > 2000){//只按了一次            Toast.makeText(                    MainActivity.this,"再按一次退出程序",Toast.LENGTH_SHORT            ).show();            lastTime = System.currentTimeMillis();        }        else {//连按两次就退出            finish();            System.exit(0);        }    }    /*    * 2:长按事件监听器    * */    //2.1:在MainActivity中重写onCreateContextMenu菜单,为菜单添加选项值    @OverrIDe    public voID onCreateContextMenu(ContextMenu menu, VIEw v, ContextMenu.ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        menu.add("收藏");        menu.add("举报");    }    //2.2:把长按事件注册到菜单中,并打开菜单,在onCreate中执行    /*    * 3.触摸事件监听器    * */    //3.1:新建touchVIEw类呈现触摸所在地的图像    //3.2:创建并实例化touchVIEw类的对象,并为touchVIEw添加触摸事件监听器,    //      在重写的方法中根据触摸的位置重绘touchVIEw    //3.3:把touchVIEw更新到布局管理器中}

 

总结

以上是内存溢出为你收集整理的Android基础——物理按键,长按,触摸事件及其监听器全部内容,希望文章能够帮你解决Android基础——物理按键,长按,触摸事件及其监听器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存