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),
new
DatePicker.OnDateChangedListener() {
@Override
public
void
onDateChanged(DatePicker view,
int
year,
int
monthOfYear,
int
dayOfMonth)
{
//当日期更改时,在这里处理
//c.set(year, monthOfYear, dayOfMonth);
}
});
//获取TimePicker对象
m_TimePicker
//设置为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);
}
});
|