归纳总结Android的点击事件

地址

http://blog.csdn.net/xiangyong_1521/article/details/78489254

目录

  • 常见按钮点击
  • 点击的其他方式
  • 对话框按钮点击
  • 列表点击
  • 物理键点击


1. 常见按钮点击

a、单击事件,主要用于Button和ImageButton控件,布局视图与TextView、ImageView控件用的也比较多。相关类名与方法说明如下:
监听器类名 : View.OnClickListener

设置监听器的方法 : setOnClickListener

监听器需要重写的点击方法 : onClick

findViewById(R.id.button).setOnClickListener(new OnClickListener() {                        @Override            public void onClick(View v) {                           }        });

b、长按事件,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。相关类名与方法说明如下:
监听器类名: View.OnLongClickListener

设置监听器的方法 : setOnLongClickListener

监听器需要重写的点击方法 : onLongClick

findViewById(R.id.button).setOnLongClickListener(new OnLongClickListener() {            @Override            public boolean onLongClick(View v) {                return false;            }        });

c、组合按钮点击事件,一般用于CheckBox控件。相关类名与方法说明如下:
监听器类名 : CompoundButton.OnCheckedChangeListener

设置监听器的方法 : setOnCheckedChangeListener

监听器需要重写的点击方法 : onCheckedChanged

findViewById(R.id.button).setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {            }        });

d、单选按钮点击事件,只能用于RadioGroup视图。相关类名与方法说明如下:
监听器类名 : RadioGroup.OnCheckedChangeListener

设置监听器的方法 : setOnCheckedChangeListener

监听器需要重写的点击方法 : onCheckedChanged

findViewById(R.id.button).setOnCheckedChangeListener(new OnCheckedChangeListener() {        @Override        public void onCheckedChanged(RadioGroup arg0, int checkedId) {            switch (checkedId) {                        }        }    };

2. 点击的其他方式

onClick用于响应从按下到松开间隔时间较短的点击事件,onLongClick用于响应从按下到松开间隔时间较长的点击事件,间隔时间阈值大约在1-2秒之间。但不管是onClick还是onLongClick都要在松开后,才会调用相应的单击或者长按函数,而且不知道按下的是什么键,所以有时不能满足比较精细的事件要求。为此,View类还提供了几个与点击有关的监听器,用来处理一些特殊场景。举例如下:

a、触摸事件,从用户按下屏幕就开始响应,直到用户松开才终止响应,期间可处理按下、移动、松开等动作。相关类名与方法说明如下:
监听器类名 : OnTouchListener

设置监听器的方法 : setOnTouchListener

监听器需要重写的点击方法 : onTouch

findViewById(R.id.button).setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                switch (event.getAction()) {                case MotionEvent.ACTION_DOWN://按下                    break;                case MotionEvent.ACTION_UP://抬起                    break;                case MotionEvent.ACTION_MOVE://表示按下后移动了手指                    break;                }                return false;            }        });

b、键盘事件,该事件比触摸事件更进一步,不但在触摸时全程响应,还能获知当前按下的是哪个键。相关类名与方法说明如下:
监听器类名 : OnKeyListener

设置监听器的方法 : setOnKeyListener

监听器需要重写的点击方法 : onKey

findViewById(R.id.button).setOnKeyListener(new OnKeyListener() {            @Override            public boolean onKey(View v, int keyCode, KeyEvent event) {                switch (event.getAction()) {                     case KeyEvent.ACTION_UP:             //键盘松开                         Toast.makeText(SQLiteActivity.this, ""+keyCode, 0).show();                       break;                   case KeyEvent.ACTION_DOWN:          //键盘按下                         break;                  }                return false;            }        });

c、焦点变化事件,主要用于EditText控件。比如屏幕上有多个EditText输入框,当用户点击某个输入框,则该输入框获得焦点;然后用户再点击另一个输入框,则原输入框失去焦点,当前输入框获得焦点;所有获得焦点与失去焦点的控件,都有条件响应焦点变化事件。相关类名与方法说明如下:
监听器类名 : OnFocusChangeListener

设置监听器的方法 : setOnFocusChangeListener

监听器需要重写的点击方法 : onFocusChange

findViewById(R.id.button1).setOnFocusChangeListener(new OnFocusChangeListener() {            @Override            public void onFocusChange(View v, boolean hasFocus) {                 Toast.makeText(SQLiteActivity.this, "1:"+hasFocus, 0).show();            }        });        findViewById(R.id.button2).setOnFocusChangeListener(new OnFocusChangeListener() {            @Override            public void onFocusChange(View v, boolean hasFocus) {                 Toast.makeText(SQLiteActivity.this, "2:"+hasFocus, 0).show();            }        });

3. 对话框按钮点击

对话框的点击事件其实就是按钮点击,只是对话框上有多个按钮,所以需要分别注册监听器,分别响应点击事件。相关类名与方法说明如下:
监听器类名 : DialogInterface.OnClickListener设置监听器的方法包含了如下三个按钮 :
setPositiveButton : 设置肯定按钮的监听器,一般是确认

setNegativeButton : 设置否定按钮的监听器,一般是取消

setNeutralButton : 设置中性按钮的监听器,这个很少用
监听器需要重写的点击方法 : onClick

protected void dialog() {        AlertDialog.Builder builder = new Builder(getActivity());        builder.setMessage(getResources().getString(R.string.factory_reset_dlg_text));//样式        builder.setPositiveButton(getResources().getString(R.string.other_ok), new DialogInterface.OnClickListener() {//确定            @Override            public void onClick(DialogInterface dialog, int which) {                dialog.dismiss();                resetFactory();            }        });        builder.setNegativeButton(getResources().getString(R.string.other_cancel), new DialogInterface.OnClickListener() {//取消            @Override            public void onClick(DialogInterface dialog, int which) {                dialog.dismiss();            }        });        builder.create().show();    }

4. 列表点击

 a、单项选择事件,一般用于Spinner控件,在某个列表元素被选中时触发。相关类名与方法说明如下:
监听器类名 : AdapterView.OnItemSelectedListener

设置监听器的方法 : setOnItemSelectedListener

监听器需要重写的点击方法 :

onItemSelected : 列表项被选中时调用

onNothingSelected : 没有选择任何项时调用,该方法一般为空

 mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {//选择item的选择点击监听事件                      public void onItemSelected(AdapterView<?> arg0, View arg1,                              int arg2, long arg3) {                          // TODO Auto-generated method stub                          // 将所选mySpinner 的值带入myTextView 中                           myTextView.setText("您选择的是:" + adapter.getItem(arg2));//文本说明                      }                      public void onNothingSelected(AdapterView<?> arg0) {                          // TODO Auto-generated method stub                          myTextView.setText("Nothing");                      }                  });

b、单项点击事件,一般用于ListView控件和GridView控件,在某个元素被点击时触发。相关类名与方法说明如下:

监听器类名 : AdapterView.OnItemClickListener

设置监听器的方法 : setOnItemClickListener

监听器需要重写的点击方法 : onItemClick

 /**     * 响应ListView中item的点击事件     */     @Override    public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {         Toast.makeText(this, "listview的item被点击了!,点击的位置是-->" + position,                Toast.LENGTH_SHORT).show();    }

c、单项长按事件,一般用于ListView控件和GridView控件,在某个元素被长按时触发。相关类名与方法说明如下:

监听器类名 : AdapterView.OnItemLongClickListener

设置监听器的方法 : setOnItemLongClickListener

监听器需要重写的点击方法 : onItemLongClick

 /**     * 响应ListView中item的点击事件     */     @Override    public void onItemLongClick(AdapterView<?> arg0, View v, int position, long id) {         Toast.makeText(this, "listview的item被点击了!,点击的位置是-->" + position,                Toast.LENGTH_SHORT).show();    }

4.2 导航项点击a、下拉导航项的点击事件,导航模式需设置为ActionBar.NAVIGATIONMODELIST,展现形式上很像Spinner,用于响应具体下拉项的选中事件。相关类名与方法说明如下:
监听器类名 : ActionBar.OnNavigationListener

设置监听器的方法 : setListNavigationCallbacks

监听器需要重写的点击方法 : onNavigationItemSelected

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {      @Override      public boolean onNavigationItemSelected(MenuItem item) {          //在这里处理item的点击事件          return true;      }  });

b、标签导航项的点击事件,导航模式需设置为ActionBar.NAVIGATIONMODETABS,用于响应具体标签页的选中事件。相关类名与方法说明如下:
监听器类名 : ActionBar.TabListener

设置监听器的方法 : setTabListener

监听器需要重写的点击方法 :
onTabSelected : 在标签页选中时调用

onTabUnselected : 在标签页取消选中时调用,该方法一般为空onTabReselected : 在标签页在选中状态下再次选中时调用,该方法一般为空

public class TabListener<T extends Fragment> implements ActionBar.TabListener {      private Fragment mFragment;      private final Activity mActivity;      private final String mTag;      private final Class<T> mClass;      public TabListener(Activity activity, String tag, Class<T> clz) {          mActivity = activity;          mTag = tag;          mClass = clz;      }      public void onTabSelected(Tab tab, FragmentTransaction ft) {          if (mFragment == null) {              mFragment = Fragment.instantiate(mActivity, mClass.getName());              ft.add(android.R.id.content, mFragment, mTag);          } else {              ft.attach(mFragment);          }      }      public void onTabUnselected(Tab tab, FragmentTransaction ft) {          if (mFragment != null) {              ft.detach(mFragment);          }      }      public void onTabReselected(Tab tab, FragmentTransaction ft) {      }  }

4.3 菜单项点击菜单的点击事件适用于选项菜单和上下文菜单的单项点击,菜单无需注册监听器即可响应点击事件,相关的点击处理方法说明如下:onMenuItemSelected : 在菜单项选择时调用,其内部做分支判断,如果是选项菜单,则调用onOptionsItemSelected;

如果是上下文菜单,则调用onContextItemSelected。onOptionsItemSelected : 在选项菜单的菜单项选中时调用。onContextItemSelected : 在上下文菜单的菜单项选中时调用。

@Override  public boolean onMenuItemSelected(int featureId, MenuItem item) {      return false;  }

5. 物理按键点击

android手机除了位于中间的Home主页键,还有左边的菜单键,右边的返回键。按下菜单键,屏幕上弹出该页的Menu菜单(如果有定义的话)。按下主页键,屏幕回到桌面;长按主页键,屏幕显示进程列表。按下返回键,屏幕返回当前APP的上一页面;如果当前APP已处于栈顶的主页,则屏幕退出APP页面并返回到桌面。

退出常见的提示方式不外乎两种:
1、APP弹出一个确认对话框,让用户选择是否退出APP,点击“是”按钮则退出,点击“否”按钮则取消;
2、APP弹出Toast提示“再按一次返回键退出”,如果用户三秒之内接着又按了一次返回键,那么APP再退出;

private long mTickForShow;    @Override    public void onBackPressed() {        if (SystemClock.uptimeMillis()-mTickForShow<3000) {            finish();        }else{            Toast.makeText(getApplication(), ""+getString(R.string.goout).toString(), 0).show();        }        mTickForShow=SystemClock.uptimeMillis();        }

笔记30 | 数据存储之SQLite的介绍及使用

笔记29 | 整理Java的容器类

笔记28 | 学习一个简单好用的下拉刷新、上拉加载控件

笔记27 | WindowManager实现悬浮窗口总结

笔记26 | 总结Android的获取系统时间的几种方法

结束




时间: 2024-08-09 10:55:50

归纳总结Android的点击事件的相关文章

android 按钮点击事件

<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" android:paddingBo

android HOME点击事件的获取

 首先声明我是做系统开发的(高通平台),所以下面介绍的方法并不适合应用开发者. 最经有个需求要屏蔽HOME按键返回桌面并且实现自己的功能,发现以前的方式报错用不了,上网搜索了一下,发现都是抄来抄去基本是无用的.网上的方法不外乎这几种: 第一, 大家最常用的重写onAttachedToWindow()方法,然后在HOME点击事件KeyEvent.KEYCODE_HOME中做自己想做的事情,但是这个方法google处于安全考虑在android2.3.3之后就不支持了. 第二, 抓取系统log日志,判

Android基础--点击事件的四种写法

1.定义内部类,实现点击事件,使用时将内部类对象传入事件源的setOnClickListener()方法中 private class MyClickListener implements View.OnClickListener{ @Override public void onClick(View v) { // 功能代码 } } 2.使用匿名内部类的方式实现点击事件 setOnClickListener(new View.OnClickListener() { @Override publ

android Button点击事件总结

直接上代码: public class MainActivity extends AppCompatActivity implements View.OnClickListener{ Button button1,button2,button3,button4,button5,button6; TextView text1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

Android按钮点击事件

Android中Button的点击事件非常简单,主要是一个内部类的问题 在界面上存在两个按钮和一个文本框,点击不同按钮的时候文本框中显示不同按钮的文字信息 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="

Android笔记---点击事件的四种写法

Android 点击事件的四种写法: 1. 以内部类的形式实现 OnClickListener 接口.定义点击事件 class MainActivity extents Activity{ // ... private class MyListener implements OnClickListener{ public void Onclick(View v){ // ... 点击事件的响应 } } } 2. 採用匿名内部类 ? ?缺点:若是点击事件太多,则须要的匿名内部类太多 class M

来,一起梳理下Android响应点击事件的方法

一.设置setOnClickListener 这应该是最原始的方法了吧,来,先上代码: 布局文件: 1 <Button 2 android:id="@+id/button1" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_marginLeft="63dp" 6 android:la

Android Button点击事件的三种方式

一.在XML中 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <!-- 现行排序 -->> xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"<!-- 全屏覆盖 -->> android:lay

Android笔记——Button点击事件几种写法

Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button的onClick的属性 首先我们简单地定义一个带Button的xml布局文件 activity_main.xml: <Button android:id="@+id/bt1" android:layout_width="wrap_content" android: