Android学习笔记--UI事件监听器及其处理程序

时间:2020-12-07 19:46:56

       Android的UI设计中,除了产生基本的UI,更重要的是UI的事件处理(UI Events)以实现UI与用户间的互动。在Android框架的设计中,以事件监听器(event listener)的方式来处理UI的使用者事件。View是绘制UI的类别,每个View控件都可以想android框架注册一个事件监听器,每个事件监听器都包含一个回调方法(callback method),这个回调方法(callback method)主要的工作就是回应或者处理用户的操作。

       在这里我粗略的总结下常用控件的事件监听器(Event Listener)及其回调方法(callback method):

 

(一)按钮类:

onClick()----来自于 View.OnClickListener  (当用户touch the item (when in touch mode), 使用导航键将焦点置于此项并按下ENTER键 ,或者使用trackball选中此项并按下trackball时,这个方法会被调用.) 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//设置按钮的事件监听
         m_Button1.setOnClickListener( new  Button.OnClickListener(){
             public  void  onClick(View v)
             {
                 //处理按钮事件
                 //产生一个Toast
                 //m_Button1.getText()得到按钮显示的内容
                 Toast toast = Toast.makeText(Activity01. this , "你点击了“" +m_Button1.getText()+ "”按钮!" , Toast.LENGTH_LONG);
                 //设置toast显示的位置
                 toast.setGravity(Gravity.TOP, 0 , 150 );
                 //显示该Toast
                 toast.show();
             }
         });

(二)编辑框:

onKey()----来自于 View.OnKeyListener(当用户在焦点项上,按下或者释放设备上某个键时,这个方法会被调用.)

?
1
2
3
4
5
6
7
8
9
10
11
  // 设置EditText事件监听                           
 m_EditText.setOnKeyListener( new  EditText.OnKeyListener() {
     @Override
     public  boolean  onKey(View arg0, int  arg1, KeyEvent arg2)
     {
         // TODO Auto-generated method stub
         // 得到文字,将其显示到TextView中
         m_TextView.setText( "文本框中内容是:"  + m_EditText.getText().toString());
         return  false ;
     }
});

(三)单(多)项选择:

onCheckedchanged()----来自于android.widget.(单项选择括号内参数为(RadioGroup group,int checkedId),多项选择括号

内参数为(CompoundButton buttonView,boolean isChecked))

 单选:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/*
设置事件监听  */
m_RadioGroup.setOnCheckedChangeListener( new  RadioGroup.OnCheckedChangeListener() {
     @Override
     public  void  onCheckedChanged(RadioGroup group, int  checkedId)
     {
         // TODO Auto-generated method stub
         if  (checkedId == m_Radio2.getId())
         {
             DisplayToast( "正确答案:"  + m_Radio2.getText() + ",恭喜你,回答正确!" );
         }
         else
         {
             DisplayToast( "请注意,回答错误!" );
         }
     }
});

 多选:

?
1
2
3
4
5
6
7
8
9
10
11
//对每个选项设置事件监听
     m_CheckBox1.setOnCheckedChangeListener( new  CheckBox.OnCheckedChangeListener() {
         @Override
         public  void  onCheckedChanged(CompoundButton buttonView, boolean  isChecked)
         {
             if (m_CheckBox1.isChecked())
             {
                 DisplayToast( "你选择了:" +m_CheckBox1.getText());
             }
         }
     });

(四)下拉列表:

onItemSelected()----来自于android.widget.AdapterView.这里参数比较长。。。

?
1
2
3
4
5
6
7
8
9
10
//添加Spinner事件监听
m_Spinner.setOnItemSelectedListener( new  Spinner.OnItemSelectedListener() {
 
     @Override
     public  void  onItemSelected(AdapterView<?> arg0, View arg1, int  arg2, long  arg3)
     {
         m_TextView.setText( "你的血型是:"  + m_Countries[arg2]);
         //设置显示当前选择的项
         arg0.setVisibility(View.VISIBLE);
     }

(五)日期与时间:

onDataChanged()和onTimeChanged()----来自于android.widget.TimePicker

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//将日历初始化为当前系统时间,并设置其事件监听
m_DatePicker.init(c.get(Calendar.YEAR),
c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH),
new  DatePicker.OnDateChangedListener() {
     @Override
     public  void  onDateChanged(DatePicker view, int  year, int  monthOfYear, int  dayOfMonth)
     {
         //当日期更改时,在这里处理
         //c.set(year, monthOfYear, dayOfMonth);
     }
});
 
//获取TimePicker对象
m_TimePicker
= (TimePicker) findViewById(R.id.TimePicker01);
//设置为24小时制显示
m_TimePicker.setIs24HourView( true );
 
//监听时间改变
m_TimePicker.setOnTimeChangedListener( new  TimePicker.OnTimeChangedListener() {
     @Override
     public  void  onTimeChanged(TimePicker view, int  hourOfDay, int  minute)
     {
         //时间改变时处理
         //c.set(year, month, day, hourOfDay, minute, second);
     }
});

当然还有一些其他方法如:onLongClick(); onFocusChange(); onTouch(); onCreateContextMenu(); 等等,平时UI设计中总是这些一起混合应用,最后附上几张截图:

Android学习笔记--UI事件监听器及其处理程序 Android学习笔记--UI事件监听器及其处理程序