布局文件
<?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基础——物理按键,长按,触摸事件及其监听器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)