09 常见事件响应

常见的事件:

1、单击事件onClickListener:略


2、长按事件onLongClickListener

ThreeAndroidActivity.java:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button1 =(Button)findViewById(R.id.button1);
        button1.setOnLongClickListener(new OnLongClickListener(){
			public boolean onLongClick(View v) {
				Log.i("myinfo", "button长按事件。。。");
				return false;
			}
        });
}

运行结果:

验证true和false:

当返回值为true时:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button1 =(Button)findViewById(R.id.button1);
        button1.setOnLongClickListener(new OnLongClickListener(){
            public boolean onLongClick(View v) {
                Log.i("myinfo", "button长按事件。。。");
                return true;
            }
        });
        button1.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                Log.i("myinfo", "button点击事件。。。");
            }
        });
}

运行结果:

当返回值为false时:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button button1 =(Button)findViewById(R.id.button1);
        button1.setOnLongClickListener(new OnLongClickListener(){
            public boolean onLongClick(View v) {
                Log.i("myinfo", "button长按事件。。。");
                return false;
            }
        });

        button1.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                Log.i("myinfo", "button点击事件。。。");
            }
        });
}

运行结果:

长按button->

点击长按的时候回触发点击事件

所以通过长按事件中的返回true可以控制长按事件的传播;


3、滑动事件onTouchListener

        button1.setOnTouchListener(new OnTouchListener(){
            public boolean onTouch(View v, MotionEvent event) {
                // event对象记录了事件发生的现场情况
                int actionType=event.getAction();
                if(actionType==MotionEvent.ACTION_DOWN){
                    Log.i("myinfo", "touch 按下。。。。");
                }else if(actionType==MotionEvent.ACTION_MOVE){
                    Log.i("myinfo", "touch 移动。。。。");
                }else if(actionType==MotionEvent.ACTION_UP){
                    Log.i("myinfo", "touch 松开。。。。");
                }else{
                }
                return true;
            }

        });

运行结果:

小案例(用鼠标移动控制button的位置):

main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/layout01"
    >

ThreeAndroidActivity.java:

public class ThreeAndroidActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button button1 =(Button)findViewById(R.id.button1);
            ViewGroup viewGroup=(ViewGroup)findViewById(R.id.layout01);
            viewGroup.setOnTouchListener(new OnTouchListener(){

                public boolean onTouch(View v, MotionEvent event) {
                    int actionType=event.getAction();
                    if(actionType==MotionEvent.ACTION_DOWN){
                        Log.i("myinfo", "touch 按下。。。。");
                    }else if(actionType==MotionEvent.ACTION_MOVE){
                        Log.i("myinfo", "touch 移动。。。。");
                        button1.setX(event.getX());
                        button1.setY(event.getY());
                    }else if(actionType==MotionEvent.ACTION_UP){
                        Log.i("myinfo", "touch 松开。。。。");
                    }else{
                    }
                    return true;
                }
            });
    }
}

运行结果:(鼠标点击到哪里,button按钮就到哪里)button随着鼠标的移动而移动。


4、键盘事件onKeyListener

ThreeAndroidActivity .java:

public class ThreeAndroidActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button button1 =(Button)findViewById(R.id.button1);
        button1.setOnKeyListener(new OnKeyListener(){

            public boolean onKey(View v, int keyCode, KeyEvent event) {
                System.out.print(keyCode);
                return false;
            }

        });
    }
}

运行结果:

输出键盘中的按钮的ASCII码

小案例:通过awsd来控制button的位置:

ThreeAndroidActivity .java:

        button1.setOnKeyListener(new OnKeyListener(){
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                //a:29; d:32; w:51;  s:47;
                if(29==keyCode){
                    button1.setX(button1.getX()-20);
                }else if(32==keyCode){
                    button1.setX(button1.getX()+20);
                }else if(51==keyCode){
                    button1.setY(button1.getY()-20);
                }else if(47==keyCode){
                    button1.setY(button1.getY()+20);
                }else {
                }
                return false;
            }

        });

5、焦点事件setOnFocusChangeListener

        button1.setOnFocusChangeListener(new OnFocusChangeListener(){

            public void onFocusChange(View v, boolean hasFocus) {
                Log.i("myinfo", "button   焦点事件。。。。。。。。");
            }
        });

运行的时候,通过点击tab让button获取焦点事件;

日志打印:

再创建一个button:

通过点击tab,可以使两个button间焦点的来回移动:

时间: 2024-10-13 05:42:55

09 常见事件响应的相关文章

.Net 转战 Android 4.4 日常笔记(8)--常见事件响应及实现方式

在Andrioid开发中,常见的事件如下 单击事件 OnClickListener 长按事件 OnLongClickListener 滑动事件 OnTouchListenner 键盘事件 OnKeyListenner 焦点事件 setOnFoucsChangeListener 设置方式 1.动态设置(最常用的方式) Button btn = (Button) findViewById(R.id.btnTest); btn.setOnClickListener(new View.OnClickLi

PHP. 02&#174;. Ajax异步处理、常见的响应状态、XMLHttpRequest对象及API、ajax的get/post方法、

异步对象 a)创建异步对象 b)设置请求的url等参数 c)  发送请求 d)注册时间 e)在注册的事件中获取返回的内容并修改页面显示的内容 布尔类型不能直接用echo输出 常见的响应状态 Ajax概念 在浏览器中,我们也能够不刷新页面,通过ajax的方式去获取一些新的内容,类似网页有微博,朋友圈,邮箱等 单词解释: Asynchronous Javascript And XML(异步JavaScript和XML), 他并不是凭空出现的新技术,而是对于现有技术的结合:核心是js对象XMLHttp

Matlab学习-------GUI鼠标事件响应(鼠标划线实例)

(1)打开GUIDE,添加一个坐标轴并保存 (2)添加鼠标响应事件:鼠标按下事件,鼠标运动事件,鼠标松开事件 (3)对相应事件编写程序 function varargout = guide_m(varargin) % GUIDE_M MATLAB code for guide_m.fig % GUIDE_M, by itself, creates a new GUIDE_M or raises the existing % singleton*. % % H = GUIDE_M returns

JavaScript的常见事件和Ajax小结

一.常见事件类型 1.鼠标事件 事件名称 说明 onclick 鼠标单击时触发 ondbclick 鼠标双击时触发 onmousedown 鼠标左键按下时触发 onmouseup 鼠标释放时触发 onmouseover 鼠标的光标移动到某对象上时触发 onmousemove 鼠标移动时触发 onmouseout 鼠标光标离开某对象时触发 ps:当单击一次鼠标左键的时候,将同时触发onclick.onmousedown.onmouseup三个事件,事件处理程序执行的先后顺序为:onmousedow

DOM笔记(五):JavaScript的常见事件和Ajax小结

一.常见事件类型 1.鼠标事件 事件名称 说明 onclick 鼠标单击时触发 ondbclick 鼠标双击时触发 onmousedown 鼠标左键按下时触发 onmouseup 鼠标释放时触发 onmouseover 鼠标的光标移动到某对象上时触发 onmousemove 鼠标移动时触发 onmouseout 鼠标光标离开某对象时触发 ps:当单击一次鼠标左键的时候,将同时触发onclick.onmousedown.onmouseup三个事件,事件处理程序执行的先后顺序为:onmousedow

事件响应

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute

touches,motion触摸事件响应

//触摸事件响应需要重写方法 1 // 触摸时触发该方法(消息发送) 2 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ 3 UITouch *touch = [touches anyObject]; 4 CGPoint point = [touch locationInView:self.rootView.touchView];//locationInView:得到当前点击下在指定视图中

gridview 单击行时如何让SelectedIndexChanging事件响应

在gridview控件上单击行的时候,是不触发SelectedIndexChanging事件的,那么想要单击时触发SelectedIndexChanging事件时怎么做呢? 我是这样做的: 在gridview的行绑定事件 RowDataBound(object sender, GridViewRowEventArgs e) 中写入 if (e.Row.RowType == DataControlRowType.DataRow)        {            e.Row.Attribut

window常见事件

<script type="text/javascript"> /*onunload = function(){ alert("onunload run"); } onload = function(){ alert("onload run"); } onbeforeunload = function(){ alert("onbeforeunload run"); }*/ //关闭窗口前弹窗 onunload =f