Android的UI设计中,除了产生基本的UI,更重要的是UI的事件处理(UI Events)以实现UI与用户间的互动。在Android框架的设计中,以事件监听器(event listener)的方式来处理UI的使用者事件。View是绘制UI的类别,每个View控件都可以想android框架注册一个事件监听器,每个事件监听器都包含一个回调方法(callback method),这个回调方法(callback method)主要的工作就是回应或者处理用户的操作。
在这里我粗略的总结下常用控件的事件监听器(Event Listener)及其回调方法(callback method):
//设置按钮的事件监听 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(); } });
// 设置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; } });
/* 设置事件监听 */ 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("请注意,回答错误!"); } } });
//对每个选项设置事件监听 m_CheckBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(m_CheckBox1.isChecked()) { DisplayToast("你选择了:"+m_CheckBox1.getText()); } } });
//添加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); }
//将日历初始化为当前系统时间,并设置其事件监听 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); } });