职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 1868|回复: 8

玩转Android---事件监听篇---第1篇

[复制链接]
Jethro 发表于 2011-6-23 10:26 | 显示全部楼层 |阅读模式
事件就是用户与UI界面的交互时所触发的操作。比如点击某一个按钮,会触发一个事件等
1、最长用的按钮事件:OnClickListener
Java代码  
     mybutton = (Button)findViewById(R.id.mybutton);   
     mybutton.setOnClickListener(new Button.OnClickListener()   
     {   
  
@Override  
public void onClick(View arg0) {   
    // TODO Auto-generated method stub   
    ShowMessage("点击了Button按钮");   
}   
  
     });  

        mybutton = (Button)findViewById(R.id.mybutton);
        mybutton.setOnClickListener(new Button.OnClickListener()
        {

                        @Override
                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                                ShowMessage("点击了Button按钮");
                        }

        });


2、我们还可以自定义KeyEvent,比如
Java代码  
public boolean onKeyDown(int keyCode, KeyEvent event)   
{   
    /**  
     * 这里构建KeyEvent对象,功能为返回键的功能  
     * 即我们按任意键都是返回键功能  
     */  
    KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);   
    return super.onKeyDown(keyCode, event);   
}  

    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
            /**
             * 这里构建KeyEvent对象,功能为返回键的功能
             * 即我们按任意键都是返回键功能
             */
            KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
            return super.onKeyDown(keyCode, event);
    }


3、手机按键的事件处理
Boolean onKeyDown(int keyCode, KeyEvent event):相应按键按下
Boolean onKeyUp(int keyCode, KeyEvent event):相应按键释放
Boolean onKeyMultiple():相应按键重复点击
Boolean onTouchEvent(MotionEvent event):相应触屏事件

Java代码  
package org.hualang.eventtest01;   
  
import android.app.Activity;   
import android.os.Bundle;   
import android.view.KeyEvent;   
import android.view.MotionEvent;   
import android.view.View;   
import android.widget.Button;   
import android.widget.Toast;   
  
public class EventTest01 extends Activity {   
    /**  
     * 注意,要重写onKeyDown,onKeyUp,onTouchEvent方法  
     */  
    private Button mybutton;   
    @Override  
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   
        setContentView(R.layout.main);   
        mybutton = (Button)findViewById(R.id.mybutton);   
        mybutton.setOnClickListener(new Button.OnClickListener()   
        {   
  
            @Override  
            public void onClick(View arg0) {   
                // TODO Auto-generated method stub   
                ShowMessage("点击了Button按钮");   
            }   
  
        });   
           
    }   
    /**按键按下触发的事件*/  
    public boolean onKeyDown(int keyCode, KeyEvent event)   
    {   
        switch(keyCode)   
        {   
        case KeyEvent.KEYCODE_DPAD_CENTER:   
            ShowMessage("按下:中键");break;   
        case KeyEvent.KEYCODE_DPAD_UP:   
            ShowMessage("按下:上方向键");break;   
        case KeyEvent.KEYCODE_DPAD_DOWN:   
            ShowMessage("按下:下方向键");break;   
        case KeyEvent.KEYCODE_DPAD_LEFT:   
            ShowMessage("按下:左方向键");break;   
        case KeyEvent.KEYCODE_DPAD_RIGHT:   
            ShowMessage("按下:右方向键");break;   
        }   
        return super.onKeyDown(keyCode, event);   
    }   
      
    /**按键弹起所触发的事件*/  
    public boolean onKeyUp(int keyCode, KeyEvent event)   
    {   
        switch(keyCode)   
        {   
        case KeyEvent.KEYCODE_DPAD_CENTER:   
            ShowMessage("弹起:中键");   
            break;   
        case KeyEvent.KEYCODE_DPAD_DOWN:   
            ShowMessage("弹起:下方向键");   
            break;   
        case KeyEvent.KEYCODE_DPAD_UP:   
            ShowMessage("弹起:上方向键");   
            break;   
        case KeyEvent.KEYCODE_DPAD_LEFT:   
            ShowMessage("弹起:左方向键");   
            break;   
        case KeyEvent.KEYCODE_DPAD_RIGHT:   
            ShowMessage("弹起:右方向键");   
            break;   
        }   
        return super.onKeyUp(keyCode, event);   
    }   
      
   /**按键重复点击事件*/  
    public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)   
    {   
        return onKeyMultiple(keyCode, repeatCount, event);   
    }   
      
    /**触屏事件*/  
    public boolean onTouchEvent(MotionEvent event)   
    {   
        int action = event.getAction();   
        if(action ==  MotionEvent.ACTION_CANCEL||action == MotionEvent.ACTION_DOWN||action == MotionEvent.ACTION_MOVE)   
        {   
            return false;   
        }   
        //得到触点的位置   
        String x = String.valueOf(event.getX());   
        String y = String.valueOf(event.getX());   
           
        ShowMessage("触点坐标:(" + x + "," + y +")");   
        return super.onTouchEvent(event);   
    }   
      
    /**显示触发事件的信息*/  
    public void ShowMessage(String str)   
    {   
        Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);   
        toast.show();   
    }   
}  

package org.hualang.eventtest01;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class EventTest01 extends Activity {
        /**
         * 注意,要重写onKeyDown,onKeyUp,onTouchEvent方法
         */
        private Button mybutton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mybutton = (Button)findViewById(R.id.mybutton);
        mybutton.setOnClickListener(new Button.OnClickListener()
        {

                        @Override
                        public void onClick(View arg0) {
                                // TODO Auto-generated method stub
                                ShowMessage("点击了Button按钮");
                        }

        });
        
    }
    /**按键按下触发的事件*/
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_DPAD_CENTER:
                    ShowMessage("按下:中键");break;
            case KeyEvent.KEYCODE_DPAD_UP:
                    ShowMessage("按下:上方向键");break;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                    ShowMessage("按下:下方向键");break;
            case KeyEvent.KEYCODE_DPAD_LEFT:
                    ShowMessage("按下:左方向键");break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                    ShowMessage("按下:右方向键");break;
            }
            return super.onKeyDown(keyCode, event);
    }
   
    /**按键弹起所触发的事件*/
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_DPAD_CENTER:
                    ShowMessage("弹起:中键");
                    break;
            case KeyEvent.KEYCODE_DPAD_DOWN:
                    ShowMessage("弹起:下方向键");
                    break;
            case KeyEvent.KEYCODE_DPAD_UP:
                    ShowMessage("弹起:上方向键");
                    break;
            case KeyEvent.KEYCODE_DPAD_LEFT:
                    ShowMessage("弹起:左方向键");
                    break;
            case KeyEvent.KEYCODE_DPAD_RIGHT:
                    ShowMessage("弹起:右方向键");
                    break;
            }
            return super.onKeyUp(keyCode, event);
    }
   
   /**按键重复点击事件*/
    public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event)
    {
            return onKeyMultiple(keyCode, repeatCount, event);
    }
   
    /**触屏事件*/
    public boolean onTouchEvent(MotionEvent event)
    {
            int action = event.getAction();
            if(action ==  MotionEvent.ACTION_CANCEL||action == MotionEvent.ACTION_DOWN||action == MotionEvent.ACTION_MOVE)
            {
                    return false;
            }
            //得到触点的位置
            String x = String.valueOf(event.getX());
            String y = String.valueOf(event.getX());
           
            ShowMessage("触点坐标:(" + x + "," + y +")");
            return super.onTouchEvent(event);
    }
   
    /**显示触发事件的信息*/
    public void ShowMessage(String str)
    {
            Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);
            toast.show();
    }
}
走就走吧 发表于 2011-6-23 10:26 | 显示全部楼层
好文章。谢谢分享。

爱车车 发表于 2011-6-23 10:27 | 显示全部楼层
这个比较有意思

醉倚西风 发表于 2011-6-23 10:27 | 显示全部楼层
好的,谢谢分享,正在学习中………………

话说我当年 发表于 2011-6-23 10:27 | 显示全部楼层
好文章,谢谢lz分享

yoyo 发表于 2011-6-23 10:27 | 显示全部楼层
晕死 你这怎么在<<android开发揭密>>中炒了一段啊?

叫我小乖 发表于 2011-6-23 10:28 | 显示全部楼层
kkvsyy 写道
晕死 你这怎么在<<android开发揭密>>中炒了一段啊?

有人看过,有人没有看过,我们学习的目的仅仅是为了学习,有些好的例子为什么不分享呢,更重要的是我认为我写的还是自己的博客,更多的时候是为了以后可能忘记而做个标记...

yoyo 发表于 2011-6-23 10:28 | 显示全部楼层
kkvsyy 写道
晕死 你这怎么在<<android开发揭密>>中炒了一段啊?

表示没看过。


奔跑着 发表于 2012-8-15 13:42 | 显示全部楼层
轻松拿高薪android培训技能护卫防搁浅
http://blog.sina.com.cn/s/blog_5ce5700e01016fhy.html
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-4-18 23:11 , Processed in 0.138883 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表