zoukankan      html  css  js  c++  java
  • Android学习笔记UI事件监听器及其处理程序

           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时,这个方法会被调用.) 

    //设置按钮的事件监听
    		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(当用户在焦点项上,按下或者释放设备上某个键时,这个方法会被调用.)

             // 设置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))

     单选:

    		/* 设置事件监听  */
    		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());
    				}
    			}
    		});

    (四)下拉列表:

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

    		//添加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

    		//将日历初始化为当前系统时间,并设置其事件监听
    		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设计中总是这些一起混合应用,最后附上几张截图:

    QQ截图20110721131213  QQ截图20110721131621

  • 相关阅读:
    c++ STL中的vector与list为什么没有提供find操作?
    转发:CAOZ星球提问。 遇到很大瓶颈,想离职又不敢离职怎么办
    转发 :caoz:数据分析这点事
    那些绕不开的Linux
    记录 《 Bootstrap 基础教程》 学习笔记 第一天
    迈出你的第一步——天助自助者
    this指向问题
    小结
    前端小白的福利
    真实案例分享
  • 原文地址:https://www.cnblogs.com/zhxiang/p/2112696.html
Copyright © 2011-2022 走看看