Android——监听事件总结
各种监听事件
1.按钮 Button
(1)点击监听
btn_1.setOnClickListener(new View.OnClickListener() {
(2)长按监听
btn_1.setOnLongClickListener(new View.OnLongClickListener() {
2.单选框 RadioGroup
radio_gp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
3.复选框 CheckBox(普通内部类)
cb_fuxuan1.setOnCheckedChangeListener(new checkboxcheckedlistener());
cb_fuxuan2.setOnCheckedChangeListener(new checkboxcheckedlistener());
private class checkboxcheckedlistener implements CompoundButton.OnCheckedChangeListener
{
4.上下文菜单 ContextMenu(需要长按才能触发)
changan_menu.setOnCreateContextMenuListener(this);
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
//获取值
public boolean onContextItemSelected(MenuItem item) {
item.getItemId()
5.进度条 SeekBar(可拖动)
sbr_td.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
6.开关 开关按钮:ToggleButton 推拉开关 Switch
tb.setOnCheckedChangeListener(new anniucheckedlistener());
private class anniucheckedlistener implements CompoundButton.OnCheckedChangeListener{
7.对话框 方法链构造 new AlertDialog.Builder(this)
单选对话框
final String[] yanse = {"红","黄","绿","蓝","白"};
.setSingleChoiceItems(yanse, 0, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
多选对话框
final String[] yanse = {"红","黄","绿","蓝","白"};
final boolean[] bl = {true,true,false,false,false};
.setMultiChoiceItems(yanse, bl, new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
自定义对话框 加载器 getLayoutInflater() setview
LayoutInflater layoutInflater = getLayoutInflater();
8.进度条 ProgressDialog
旋转进度条
final ProgressDialog pd = new ProgressDialog(this);
水平进度条
ProgressDialog pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
9.日期对话框
Calendar cl = Calendar.getInstance();
DatePickerDialog datePickerDialog = new DatePickerDialog(this,监听, cl.get(Calendar.YEAR),cl.get(Calendar.MONTH),cl.get(Calendar.DAY_OF_MONTH));
datePickerDialog.show();
监听 = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
}
10.时间对话框
//获取当前日期
//单例模式,设计模式的一种 静态方法
Calendar cl = Calendar.getInstance();
TimePickerDialog timePickerDialog = new TimePickerDialog(this,监听,cl.get(Calendar.HOUR),cl.get(Calendar.MINUTE),true);
timePickerDialog.show();
监听 = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
}
}
11.ListView
(1)ArrayAdapter
//构造适配器
ArrayAdapter adapter = new ArrayAdapter(this,R.layout.listview_layout,list);
//设置适配器
listview_1.setAdapter(adapter);
//监听事件
listview_1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
(2)SimpleAdapter
SimpleAdapter simpleAdapter = new SimpleAdapter(this,im,R.layout.simple_layout,str,viewid);
simple_1.setAdapter(simpleAdapter);
simple_1.setOnItemClickListener();
(3)BaseAdapter
12.自动提示文本框
AutoCompleteTextView autv_1 = (AutoCompleteTextView)findViewById(R.id.atv_1);
13下拉列表
Spinner sper_1 = (Spinner)findViewById(R.id.sper_1);
sper_1.setAdapter(adapter);
sper_1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
14.消息提示
Resources res = Activitywenben.this.getResources();
//1.获取状态栏消息管理器
NotificationManager manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//2.构建消息 用Builder构建 方法链调用
Notification nt = new Notification.Builder(this)
//3.交给管理器发出消息
manager.notify(0,nt);
xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textview1" android:text="有链接吗?" android:autoLink="all" /> <AutoCompleteTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/autv_1" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="按钮的监听" android:id="@+id/btn_1" android:background="@drawable/anniu1" /> <RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:id="@+id/radio_gp"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="是" android:id="@+id/rb_shi"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="否" android:id="@+id/rb_fou"/> </RadioGroup> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="hello world" android:id="@+id/et_1"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="复选一" android:id="@+id/cb_fuxuan1"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="复选二" android:id="@+id/cb_fuxuan2" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="长按触发上下文菜单" android:id="@+id/menu_1"/> <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:id="@+id/sbr_tuodong"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/anniu2" android:id="@+id/iv_bian" /> <ToggleButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="开" android:textOff="关" android:id="@+id/tgb_1"/> <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/swh_1"/> <!--对话框--> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发普通对话框" android:onClick="putongdhkonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发单选对话框" android:onClick="danxuandhkonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发多选对话框" android:onClick="duoxuandhkonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发自定义对话框" android:onClick="zidingyidhkonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发旋转进度条" android:onClick="xuanzhuanjdtonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发水平进度条" android:onClick="shuipingjdtonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发日期对话框" android:onClick="riqidhkonclick"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击触发时间对话框" android:onClick="shijiandhkonclick"/> </LinearLayout> </ScrollView>
java
package com.example.chenshuai.test322; import android.app.AlertDialog; import android.app.DatePickerDialog; import android.app.ProgressDialog; import android.app.TimePickerDialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.util.Linkify; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.DatePicker; import android.widget.EditText; import android.widget.ImageView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.SeekBar; import android.widget.Switch; import android.widget.TextView; import android.widget.TimePicker; import android.widget.Toast; import android.widget.ToggleButton; import java.util.Calendar; /** * Created by chenshuai on 2016/4/1. */ public class Jianting extends AppCompatActivity { ImageView iv_bian; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.jiantinglayout); //Textview TextView textview1 = (TextView)findViewById(R.id.textview1); textview1.setAutoLinkMask(Linkify.ALL); String linktext = "百度链接 www.baidu.com"; textview1.setText(linktext); //AutoCompleteTextView AutoCompleteTextView autv_1 = (AutoCompleteTextView)findViewById(R.id.autv_1); String[] str = {"ab","abc","abcd"}; ArrayAdapter<String> stringArrayAdapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str); autv_1.setAdapter(stringArrayAdapter); //Button 点击 Button btn_1 = (Button)findViewById(R.id.btn_1); btn_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(Jianting.this, "按钮点击监听", Toast.LENGTH_SHORT).show(); } }); //Button 长按监听 btn_1.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(Jianting.this, "按钮长按监听", Toast.LENGTH_SHORT).show(); return false; } }); //RadioGroup 的监听 RadioGroup radio_gp = (RadioGroup)findViewById(R.id.radio_gp); radio_gp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rb_shi = (RadioButton) findViewById(R.id.rb_shi); RadioButton rb_fou = (RadioButton) findViewById(R.id.rb_fou); switch (checkedId) { case R.id.rb_shi: Toast.makeText(Jianting.this, "选中了" + rb_shi.getText(), Toast.LENGTH_SHORT).show(); case R.id.rb_fou: Toast.makeText(Jianting.this, "选中了" + rb_fou.getText(), Toast.LENGTH_SHORT).show(); } } }); //显示Edittext的输入内容 EditText editText = (EditText)findViewById(R.id.et_1); String str1 = editText.getText().toString(); Toast.makeText(Jianting.this, str1, Toast.LENGTH_SHORT).show(); //checkbox的监听 CheckBox cb_fuxuan1 = (CheckBox)findViewById(R.id.cb_fuxuan1); cb_fuxuan1.setOnCheckedChangeListener(new checkboxcheckedlistener()); CheckBox cb_fuxuan2 = (CheckBox)findViewById(R.id.cb_fuxuan2); cb_fuxuan2.setOnCheckedChangeListener(new checkboxcheckedlistener()); //menu 菜单 上下文菜单 Button changan_menu = (Button)findViewById(R.id.menu_1); changan_menu.setOnCreateContextMenuListener(this); //SeekBar 可拖动进度条 SeekBar sbr_td = (SeekBar)findViewById(R.id.sbr_tuodong); sbr_td.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); //开关键控制按钮背景 iv_bian = (ImageView)findViewById(R.id.iv_bian); //开关按钮 ToggleButton tb = (ToggleButton)findViewById(R.id.tgb_1); tb.setOnCheckedChangeListener(new anniucheckedlistener()); //推拉开关 Switch swh = (Switch)findViewById(R.id.swh_1); swh.setOnCheckedChangeListener(new anniucheckedlistener()); } //普通内部类 checkbox的监听 private class checkboxcheckedlistener implements CompoundButton.OnCheckedChangeListener { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { CheckBox cb = (CheckBox)buttonView; if (isChecked) { Toast.makeText(Jianting.this, "选中了"+cb.getText(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Jianting.this, "取消选中了"+cb.getText(), Toast.LENGTH_SHORT).show(); } } } //menu 菜单 上下文菜单 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.add(1,1,1,"添加"); menu.add(1,2,2,"删除"); menu.add(1,3,3,"修改"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(Jianting.this, "触发了添加功能", Toast.LENGTH_SHORT).show(); case 2: Toast.makeText(Jianting.this, "触发了删除功能", Toast.LENGTH_SHORT).show(); case 3: Toast.makeText(Jianting.this, "触发了修改功能", Toast.LENGTH_SHORT).show(); } return super.onContextItemSelected(item); } private class anniucheckedlistener implements CompoundButton.OnCheckedChangeListener{ @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { iv_bian.setImageResource(R.drawable.anniu1); } else { iv_bian.setImageResource(R.drawable.anniu2); } } } //普通对话框 public void putongdhkonclick(View view) { //普通对话框 //对话框的构建器 /* AlertDialog.Builder ab = new AlertDialog.Builder(this); ab.setTitle("数据删除"); ab.setMessage("确定删除吗?"); ab.setPositiveButton("确定",null); ab.setNegativeButton("取消",null); ab.setCancelable(false); ab.show();*/ //方法链的方法 new AlertDialog.Builder(this) .setTitle("数据删除") .setMessage("确定删除吗?") .setPositiveButton("确定",null) .setNegativeButton("取消",null) .setCancelable(false) .show(); } public void danxuandhkonclick(View view) { final String[] yanse = {"红","黄","绿","蓝","白"}; //方法链 new AlertDialog.Builder(this) .setTitle("单选对话框") .setSingleChoiceItems(yanse, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(Jianting.this, "选中了" + yanse[which], Toast.LENGTH_SHORT).show(); //移除属性 dialog.dismiss(); 选中一个就会关闭 } }) .setNeutralButton("确定", null)//普通按钮 .setCancelable(false) .show(); } public void duoxuandhkonclick(View view) { final String[] yanse = {"红","黄","绿","蓝","白"}; final boolean[] bl = {true,true,false,false,false}; //方法链 new AlertDialog.Builder(this) .setTitle("多选对话框") .setMultiChoiceItems(yanse, bl, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { if (isChecked) { Toast.makeText(Jianting.this, "选中了" + yanse[which], Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Jianting.this, "取消选中了" + yanse[which], Toast.LENGTH_SHORT).show(); } } }) .setNeutralButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //遍历数组 foreach循环 for (boolean b : bl) { try { Thread.sleep(100); } catch (Exception ex) { }Toast.makeText(Jianting.this, "取值"+b, Toast.LENGTH_SHORT).show(); } } }) .setCancelable(false) .show(); } //自定义对话框 public void zidingyidhkonclick(View view) { //1.获取加载器 LayoutInflater layoutInflater = getLayoutInflater(); //2.用加载器加载文件 final View view2 = layoutInflater.inflate(R.layout.loginlayout, null); //方法链构造页面加两个按钮 new AlertDialog.Builder(this) .setView(view2)//兼容性好,比较适用 //.setView(R.layout.loginlayout) .setNegativeButton("取消", null) .setPositiveButton("登陆", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EditText user = (EditText) view2.findViewById(R.id.et_username); EditText pas = (EditText) view2.findViewById(R.id.et_password); } }) .show(); } //旋转进度条 public void xuanzhuanjdtonclick(View view) { final ProgressDialog pd = new ProgressDialog(this); pd.setMessage("正在加载"); pd.show(); //创建thread实例 =【重写run方法 启动多线程 new Thread() { @Override public void run() { super.run(); try{ Thread.sleep(3000); } catch (Exception ex){} pd.dismiss();//关闭 } }.start(); } //水平进度条 public void shuipingjdtonclick(View view) { ProgressDialog pd = new ProgressDialog(this); pd.setMessage("正在加载"); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.show(); } //日期对话框 public void riqidhkonclick(View view) { //获取当前日期 //单例模式,设计模式的一种 静态方法 Calendar cl = Calendar.getInstance(); DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Toast.makeText(Jianting.this, year+"-"+ (monthOfYear+1) + "-" + dayOfMonth, Toast.LENGTH_SHORT).show(); } },cl.get(Calendar.YEAR),cl.get(Calendar.MONTH),cl.get(Calendar.DAY_OF_MONTH)); datePickerDialog.setCancelable(false); datePickerDialog.show(); } //时间对话框 public void shijiandhkonclick(View view) { //获取当前日期 //单例模式,设计模式的一种 静态方法 Calendar cl = Calendar.getInstance(); TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { Toast.makeText(Jianting.this, hourOfDay+":"+minute , Toast.LENGTH_SHORT).show(); } },cl.get(Calendar.HOUR),cl.get(Calendar.MINUTE),true); timePickerDialog.setCancelable(false); timePickerDialog.show(); } }