玩转Android---事件监听篇---第2篇

事件监听篇---第二篇

 

下面是各种常用控件的事件监听的使用

①EditText(编辑框)的事件监听---OnKeyListener

②RadioGroup、RadioButton(单选按钮)的事件监听---OnCheckedChangeListener

③CheckBox(多选按钮)的事件监听---OnCheckedChangeListener

④Spinner(下拉列表)的事件监听---OnItemSelectedListener

⑤Menu(菜单)的事件处理---onMenuItemSelected

⑥Dialog(对话框)的事件监听---DialogInterface.OnClickListener()

 

第一个例子:EditText的事件监听

 

 1 package org.hualang.eventtest2;  
 2   
 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.KeyEvent; 6 import android.view.View; 7 import android.widget.EditText; 8 import android.widget.TextView; 9 10 public class EventTest2 extends Activity { 11 /** Called when the activity is first created. */ 12 private TextView mytext; 13 private EditText edittext; 14  @Override 15 public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17  setContentView(R.layout.main); 18 mytext = (TextView)findViewById(R.id.mytext); 19 edittext = (EditText)findViewById(R.id.edittext); 20 /** 21 * 设置当EditText为空,则提示“请输入账号” 22 * 在配置文件main.xml中可以用android:hint="请输入账号"来实现 23 */ 24 edittext.setHint("请输入账号"); 25 //下面为EditText事件监听 26 edittext.setOnKeyListener(new EditText.OnKeyListener() 27  { 28 29  @Override 30 public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 31 //得到文字,显示在TextView中 32 mytext.setText("内容:"+edittext.getText().toString()); 33 return false; 34  } 35 36  }); 37  } 38 } 

 

 main.xml

 1 <?xml version="1.0" encoding="utf-8"?>  
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
 3     android:orientation="vertical"  
 4     android:layout_width="fill_parent"  
 5     android:layout_height="fill_parent"  
 6     >  
 7 <TextView    
 8     android:layout_width="fill_parent"   
 9     android:layout_height="wrap_content"   
10     android:id="@+id/mytext"  
11     />  
12 <EditText 13 android:id="@+id/edittext" 14 android:layout_width="fill_parent" 15 android:layout_height="wrap_content" 16 android:textSize="10pt" 17 /> 18 </LinearLayout> 

 

 

运行结果如下:


玩转Android---事件监听篇---第2篇_第1张图片
 
玩转Android---事件监听篇---第2篇_第2张图片
 

 

第二个例子:单选按钮的事件监听处理

 1 package org.hualang.eventtest;  
 2   
 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Gravity; 6 import android.widget.RadioButton; 7 import android.widget.RadioGroup; 8 import android.widget.Toast; 9 10 public class EventTest3 extends Activity { 11 /** Called when the activity is first created. */ 12 private RadioGroup group; 13 private RadioButton radio1,radio2,radio3,radio4; 14  @Override 15 public void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17  setContentView(R.layout.main); 18 19 group = (RadioGroup)findViewById(R.id.radiogroup1); 20 radio1 = (RadioButton)findViewById(R.id.button1); 21 radio2 = (RadioButton)findViewById(R.id.button2); 22 radio3 = (RadioButton)findViewById(R.id.button3); 23 radio4 = (RadioButton)findViewById(R.id.button4); 24 25 group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 26 27  @Override 28 public void onCheckedChanged(RadioGroup group, int checkedId) { 29 // TODO Auto-generated method stub 30 if (checkedId == radio2.getId()) 31  { 32 showMessage("正确答案:" + radio2.getText()+",恭喜你,答对了"); 33  } 34 else 35  { 36 showMessage("对不起,虽然很多,但不是公认的最多"); 37  } 38  } 39  }); 40  } 41 public void showMessage(String str) 42  { 43 Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT); 44 toast.setGravity(Gravity.TOP, 0, 220); 45  toast.show(); 46  } 47 } 

 main.xml

 1 <?xml version="1.0" encoding="utf-8"?>  
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
 3     android:orientation="vertical"  
 4     android:layout_width="fill_parent"  
 5     android:layout_height="fill_parent"  
 6     >  
 7     <TextView  
 8         android:id="@+id/mytextview"  
 9         android:layout_width="fill_parent"  
10         android:layout_height="wrap_content"  
11         android:text="哪个城市的美女最多?"  
12     />  
13     <RadioGroup 14 android:id="@+id/radiogroup1" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:orientation="vertical" 18 > 19 <RadioButton 20 android:id="@+id/button1" 21 android:layout_width="wrap_content" 22 android:layout_height="wrap_content" 23 android:text="杭州" 24 /> 25 <RadioButton 26 android:id="@+id/button2" 27 android:layout_width="wrap_content" 28 android:layout_height="wrap_content" 29 android:text="重庆" 30 /> 31 <RadioButton 32 android:id="@+id/button3" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:text="成都" 36 /> 37 <RadioButton 38 android:id="@+id/button4" 39 android:layout_width="wrap_content" 40 android:layout_height="wrap_content" 41 android:text="香港" 42 /> 43 </RadioGroup> 44 </LinearLayout> 

运行结果如下:


玩转Android---事件监听篇---第2篇_第3张图片
 

第三个例子:复选框的事件处理

  1 package org.hualang.eventtest4;  
  2   
  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Gravity; 6 import android.view.View; 7 import android.widget.Button; 8 import android.widget.CheckBox; 9 import android.widget.CompoundButton; 10 import android.widget.CompoundButton.OnCheckedChangeListener; 11 import android.widget.Toast; 12 13 public class EventTest4 extends Activity { 14 /** Called when the activity is first created. */ 15 private CheckBox ch1,ch2,ch3,ch4,ch5; 16 private Button mybutton; 17  @Override 18 public void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20  setContentView(R.layout.main); 21 22 mybutton = (Button)findViewById(R.id.mybutton); 23 ch1 = (CheckBox)findViewById(R.id.check1); 24 ch2 = (CheckBox)findViewById(R.id.check2); 25 ch3 = (CheckBox)findViewById(R.id.check3); 26 ch4 = (CheckBox)findViewById(R.id.check4); 27 ch5 = (CheckBox)findViewById(R.id.check5); 28 29 ch1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() 30  { 31 32  @Override 33 public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 34 // TODO Auto-generated method stub 35 if(ch1.isChecked()) 36  { 37 showMessage("你选择了"+ch1.getText()); 38  } 39  } 40 41  }); 42 ch2.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() 43  { 44 45  @Override 46 public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 47 // TODO Auto-generated method stub 48 if(ch3.isChecked()) 49  { 50 showMessage("你选择了"+ch2.getText()); 51  } 52  } 53 54  }); 55 ch3.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() 56  { 57 58  @Override 59 public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 60 // TODO Auto-generated method stub 61 if(ch3.isChecked()) 62  { 63 showMessage("你选择了"+ch3.getText()); 64  } 65  } 66 67  }); 68 ch4.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() 69  { 70 71  @Override 72 public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 73 // TODO Auto-generated method stub 74 if(ch4.isChecked()) 75  { 76 showMessage("你选择了"+ch4.getText()); 77  } 78  } 79 80  }); 81 ch5.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() 82  { 83 84  @Override 85 public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 86 // TODO Auto-generated method stub 87 if(ch5.isChecked()) 88  { 89 showMessage("你选择了"+ch5.getText()); 90  } 91  } 92 93  }); 94 95 mybutton.setOnClickListener(new Button.OnClickListener() 96  { 97 98  @Override 99 public void onClick(View arg0) { 100 // TODO Auto-generated method stub 101 int num = 0; 102 if(ch1.isChecked()) 103  { 104 num++; 105  } 106 if(ch2.isChecked()) 107  { 108 num++; 109  } 110 if(ch3.isChecked()) 111  { 112 num++; 113  } 114 if(ch4.isChecked()) 115  { 116 num++; 117  } 118 if(ch5.isChecked()) 119  { 120 num++; 121  } 122 123 showMessage("谢谢参与,您一共选择了"+num+"项"); 124 125  } 126 127  }); 128  } 129 130 131 132 public void showMessage(String str) 133  { 134 Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT); 135 toast.setGravity(Gravity.TOP, 0, 220); 136  toast.show(); 137  } 138 } 

 

 1 <?xml version="1.0" encoding="utf-8"?>  
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
 3     android:orientation="vertical"  
 4     android:layout_width="fill_parent"  
 5     android:layout_height="fill_parent"  
 6     >  
 7     <TextView    
 8         android:layout_width="fill_parent"   
 9         android:layout_height="wrap_content"   
10         android:text="你喜欢哪些智能手机系统"  
11         />  
12     <CheckBox 13 android:id="@+id/check1" 14 android:layout_width="fill_parent" 15 android:layout_height="wrap_content" 16 android:text="苹果 ios" 17 /> 18 <CheckBox 19 android:id="@+id/check2" 20 android:layout_width="fill_parent" 21 android:layout_height="wrap_content" 22 android:text="谷歌 Android" 23 /> 24 <CheckBox 25 android:id="@+id/check3" 26 android:layout_width="fill_parent" 27 android:layout_height="wrap_content" 28 android:text="RIM BlackBerry" 29 /> 30 <CheckBox 31 android:id="@+id/check4" 32 android:layout_width="fill_parent" 33 android:layout_height="wrap_content" 34 android:text="微软 Windows phone 7" 35 /> 36 <CheckBox 37 android:id="@+id/check5" 38 android:layout_width="fill_parent" 39 android:layout_height="wrap_content" 40 android:text="诺基亚 symbian" 41 /> 42 <Button 43 android:id="@+id/mybutton" 44 android:layout_width="fill_parent" 45 android:layout_height="wrap_content" 46 android:text="确定" 47 /> 48 49 </LinearLayout> 

 

运行结果:


玩转Android---事件监听篇---第2篇_第4张图片
 

第四个例子:Spinner下拉菜单的事件处理

 1 package org.hualang.eventtest5;  
 2   
 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.AdapterView; 7 import android.widget.ArrayAdapter; 8 import android.widget.Spinner; 9 import android.widget.TextView; 10 11 public class EventTest5 extends Activity { 12 /** Called when the activity is first created. */ 13 private static final String[] citys={"杭州","北京","成都","大连","深圳","南京"}; 14 private TextView text; 15 private Spinner spinner; 16 private ArrayAdapter<String> adapter; 17  @Override 18 public void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20  setContentView(R.layout.main); 21 text=(TextView)findViewById(R.id.text); 22 spinner=(Spinner)findViewById(R.id.spinner); 23 24 //将可选内容与ArrayAdapter连接 25 adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,citys); 26 //设置下拉列表风格 27  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 28 //将adapter添加到spinner中 29  spinner.setAdapter(adapter); 30 //添加Spinner事件监听 31 spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() 32  { 33 34  @Override 35 public void onItemSelected(AdapterView<?> arg0, View arg1, 36 int arg2, long arg3) { 37 // TODO Auto-generated method stub 38 text.setText("你所在的城市是:"+citys[arg2]); 39 //设置显示当前选择的项 40  arg0.setVisibility(View.VISIBLE); 41  } 42 43  @Override 44 public void onNothingSelected(AdapterView<?> arg0) { 45 // TODO Auto-generated method stub 46 47  } 48 49  }); 50  } 51 } 

main.xml

 1 <?xml version="1.0" encoding="utf-8"?>     
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
 3     android:orientation="vertical"    
 4     android:layout_width="fill_parent"    
 5     android:layout_height="fill_parent"    
 6     >     
 7 <TextView       
 8     android:id="@+id/text"    
 9     android:layout_width="fill_parent"      
10     android:layout_height="wrap_content"      
11     android:text="您所在的城市"    
12     />     
13 <Spinner 14 android:id="@+id/spinner" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_centerHorizontal="true" 18 /> 19 </LinearLayout> 

 

运行结果如下:


玩转Android---事件监听篇---第2篇_第5张图片
 
玩转Android---事件监听篇---第2篇_第6张图片
 
玩转Android---事件监听篇---第2篇_第7张图片
 

第五个例子:Menu(菜单)的事件处理

 1 package org.hualang.eventtest6;  
 2   
 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuInflater; 7 import android.view.MenuItem; 8 import android.widget.Toast; 9 10 public class EventTest6 extends Activity { 11 /** Called when the activity is first created. */ 12  @Override 13 public void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15  setContentView(R.layout.main); 16  } 17 18  @Override 19 public boolean onCreateOptionsMenu(Menu menu) { 20 // TODO Auto-generated method stub 21 MenuInflater inflater = getMenuInflater(); 22 //设置menu界面为res/menu/menu.xml 23  inflater.inflate(R.menu.menu, menu); 24 return true; 25  } 26 27  @Override 28 public boolean onMenuItemSelected(int featureId, MenuItem item) { 29 //得到当前选中的MenuItem的ID 30 int itemId = item.getItemId(); 31 switch(itemId) 32  { 33 case R.id.apple: 34 Toast toast = Toast.makeText(this, "这是苹果", Toast.LENGTH_SHORT); 35  toast.show(); 36 break; 37 case R.id.banana: 38 Toast toast2 = Toast.makeText(this, "这是香蕉", Toast.LENGTH_SHORT); 39  toast2.show(); 40 break; 41 case R.id.exit: 42 EventTest6.this.finish(); 43 break; 44  } 45 return true; 46  } 47 48 49 } 

 res/menu/menu.xml

 1 <?xml version="1.0" encoding="utf-8"?>  
 2 <menu xmlns:android="http://schemas.android.com/apk/res/android">  
 3     <item android:id="@+id/apple"  
 4         android:title="苹果"  
 5     />  
 6     <item android:id="@+id/banana"  
 7         android:title="香蕉"  
 8         />  
 9     <item android:id="@+id/exit"  
10         android:title="退出"  
11         />  
12 </menu>  

 

运行结果如下:


玩转Android---事件监听篇---第2篇_第8张图片
 
玩转Android---事件监听篇---第2篇_第9张图片
 

 

第六个例子:对话框的事件处理

 

 1 package org.hualang.dialog;  
 2   
 3 import android.app.Activity; 4 import android.app.AlertDialog; 5 import android.app.Dialog; 6 import android.app.ProgressDialog; 7 import android.content.DialogInterface; 8 import android.content.DialogInterface.OnClickListener; 9 import android.os.Bundle; 10 import android.view.LayoutInflater; 11 import android.view.View; 12 13 public class MainActivity extends Activity { 14 /** Called when the activity is first created. */ 15  ProgressDialog myDialog; 16  @Override 17 public void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19  setContentView(R.layout.main); 20 21 Dialog dialog = new AlertDialog.Builder(MainActivity.this) 22 .setTitle("登录提示") 23 .setMessage("这里需要登录") 24 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 25 26  @Override 27 public void onClick(DialogInterface dialog, int which) { 28 // TODO Auto-generated method stub 29 LayoutInflater factory = LayoutInflater.from(MainActivity.this); 30 final View DialogView = factory.inflate(R.layout.dialog, null); 31 AlertDialog dlg = new AlertDialog.Builder(MainActivity.this) 32 .setTitle("登录框") 33  .setView(DialogView) 34 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 35 36  @Override 37 public void onClick(DialogInterface dialog, int whichButton) { 38 // TODO Auto-generated method stub 39 myDialog = ProgressDialog.show(MainActivity.this, "请等待...", "正在为你登录", true); 40 new Thread() 41  { 42 public void run() 43  { 44 try 45  { 46 sleep(3000); 47 }catch(Exception e) 48  { 49  e.printStackTrace(); 50 }finally 51  { 52  myDialog.dismiss(); 53  } 54  } 55  }.start(); 56  } 57 }).setNegativeButton("取消", 58 new DialogInterface.OnClickListener() { 59 60  @Override 61 public void onClick(DialogInterface dialog, int which) { 62 // TODO Auto-generated method stub 63 MainActivity.this.finish(); 64  } 65  }).create(); 66  dlg.show(); 67  } 68 }).setNeutralButton("退出", new DialogInterface.OnClickListener() { 69 70  @Override 71 public void onClick(DialogInterface dialog, int which) { 72 // TODO Auto-generated method stub 73 MainActivity.this.finish(); 74  } 75  }).create(); 76  dialog.show(); 77 78  } 79 } 

 

res/layout/dialog.xml

 1 <?xml version="1.0" encoding="utf-8"?>  
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
 3     android:orientation="vertical"  
 4     android:layout_width="fill_parent"  
 5     android:layout_height="fill_parent"  
 6     >  
 7     <TextView    
 8         android:id="@+id/username"  
 9         android:layout_width="wrap_content"   
10         android:layout_height="wrap_content"  
11         android:layout_marginLeft="20dip"  
12         android:layout_marginRight="20dip"   
13         android:text="账号"  
14         android:gravity="left"  
15         android:textAppearance="?android:attr/textAppearanceMedium"  
16     />  
17     <EditText 18 android:id="@+id/myusername" 19 android:layout_height="wrap_content" 20 android:layout_width="fill_parent" 21 android:layout_marginLeft="20dip" 22 android:layout_marginRight="20dip" 23 android:scrollHorizontally="true" 24 android:autoText="false" 25 android:capitalize="none" 26 android:gravity="fill_horizontal" 27 android:textAppearance="?android:attr/textAppearanceMedium" 28 /> 29 <TextView 30 android:id="@+id/password" 31 android:layout_width="fill_parent" 32 android:layout_height="wrap_content" 33 android:layout_marginLeft="20dip" 34 android:layout_marginRight="20dip" 35 android:text="密码" 36 android:gravity="left" 37 android:textAppearance="?android:attr/textAppearanceMedium" 38 /> 39 <EditText 40 android:id="@+id/mypassword" 41 android:layout_width="fill_parent" 42 android:layout_height="wrap_content" 43 android:layout_marginLeft="20dip" 44 android:layout_marginRight="20dip" 45 android:scrollHorizontally="true" 46 android:autoText="false" 47 android:capitalize="none" 48 android:gravity="fill_horizontal" 49 android:password="true" 50 /> 51 </LinearLayout> 

 

运行结果:


玩转Android---事件监听篇---第2篇_第10张图片
 
玩转Android---事件监听篇---第2篇_第11张图片
 
玩转Android---事件监听篇---第2篇_第12张图片

 

转自:http://www.iteye.com/topic/1060815

你可能感兴趣的:(玩转Android---事件监听篇---第2篇)