你的位置:首页 > 操作系统

[操作系统]玩转Android


事件监听篇---第二篇

 

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

①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.); 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.

 1 <?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> 

 


 

运行结果如下:



 

 

 

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

 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.

 1 <?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> 

运行结果如下:



 

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

 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 <?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> 

 

运行结果:



 

第四个例子: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.

 1 <?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> 

 

运行结果如下:



 

 

 

第五个例子: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.    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.

 1 <?

 


运行结果如下:



 

 

 

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

 

 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.

 1 <?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> 

 

运行结果:



 

 

 

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