RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
归纳总结Android的点击事件

地址

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

平遥ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

目录

  • 常见按钮点击

  • 点击的其他方式

  • 对话框按钮点击

  • 列表点击

  • 物理键点击




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 implements ActionBar.TabListener {      private Fragment mFragment;      private final Activity mActivity;      private final String mTag;      private final Class mClass;      public TabListener(Activity activity, String tag, Class 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的获取系统时间的几种方法



结束



归纳总结Android的点击事件


本文名称:归纳总结Android的点击事件
文章位置:http://lswzjz.com/article/jocgid.html