安卓基础学习 Day10 |事件处理

安卓基础学习 Day10 |事件处理,第1张

概述目录写在前面的话一、概述二、处理键盘事件(一)概述(二)测试-综合三、处理触摸事件(一)测试-移动位置四、补充写在前面的话1、主要参考自B站相关视频。2、内容如果有不对的,希望可以指出或补充。3、巩固内容。一、概述事件:就是用户对于图形界面的 *** 作。在Android手机

目录写在前面的话一、概述二、处理键盘事件(一)概述(二)测试-综合三、处理触摸事件(一)测试-移动位置四、补充

写在前面的话

1、主要参考自B站相关视频。
2、内容如果有不对的,希望可以指出或补充。
3、巩固内容。

一、概述

事件:就是用户对于图形界面的 *** 作。在AndroID手机以及平板电脑上,主要包括键盘事件和触摸事件两大类。键盘事件包括按下、d起等,触摸事件包括按下、d起、滑动、双击等。

1.基于回调机制的事件处理(概括):以on开头的方法。
2.基于监听接口机制的事件处理(概括):以Listener结尾的。

二、处理键盘事件(一)概述

1、单击事件

该事件的监听器是VIEw.OnClickListener,事件处理方法是onClick()。

2、按键事件

用户按下或者释放手机键盘上的某个按键时产生,监听器是VIEw.OnKeyListener, 事件处理方法是onKey()。

3、焦点事件

组件得到或者失去焦点时产生该事件,监听器是VIEw.OnFocuschangelistener,事件处理方法是onFocusChange()。

(二)测试-综合

① 布局


② MainActivity.java

package com.example.test;import androIDx.appcompat.app.AppCompatActivity;import androID.graphics.color;import androID.os.Bundle;import androID.vIEw.KeyEvent;import androID.vIEw.VIEw;import androID.Widget.Imagebutton;import androID.Widget.TextVIEw;import androID.Widget.Toast;public class MainActivity extends AppCompatActivity implements VIEw.OnClickListener,VIEw.OnKeyListener,VIEw.OnFocuschangelistener{    private TextVIEw t_Title,t_text;    //声明一个长度为2的数组    Imagebutton[] bt_cats = new Imagebutton[2];    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.test);        //获取到控件        t_Title = findVIEwByID(R.ID.test_Title);        t_text = findVIEwByID(R.ID.test_text);        bt_cats[0] = findVIEwByID(R.ID.test_cat1);//赋给数组中的第一个元素        bt_cats[1] = findVIEwByID(R.ID.test_cat2);        //设置标题        t_Title.setText("请通过键盘中的1、2或点击\n来选择你喜欢的猫咪");        //取出bt_cats里面的每一个元素并为它添加监听器        for(Imagebutton bt_cat:bt_cats){            //给bt_cat添加单击事件监听器            bt_cat.setonClickListener(this);            //给bt_cat添加键盘按键监听器            bt_cat.setonKeyListener(this);            //给bt_cat添加焦点监听器            bt_cat.setonFocuschangelistener(this);        }    }    @OverrIDe    //实现OnClickListener接口中的方法  单击事件    public voID onClick(VIEw v){        switch (v.getID()){            case R.ID.test_cat1:                //设置提示文本                t_text.setText("这是一只布偶猫");                break;            case R.ID.test_cat2:                t_text.setText("这是一只橘猫");                break;        }    }    @OverrIDe    //实现OnKeyListener接口中的方法  按键事件    public boolean onKey(VIEw v, int keyCode, KeyEvent event) {        //判断键盘码        switch(keyCode){            case KeyEvent.KEYCODE_1:                //调用点击事件并请求到焦点事件                bt_cats[0].performClick();                bt_cats[0].requestFocus();                break;            case KeyEvent.KEYCODE_2:                bt_cats[1].performClick();                bt_cats[1].requestFocus();                break;        }        return false;    }    @OverrIDe    //实现OnFocuschangelistener接口中的方法  焦点事件    public voID onFocusChange(VIEw v, boolean hasFocus) {        if (hasFocus) {            //吐司提示            Toast toast = Toast.makeText(this, "获得焦点", Toast.LENGTH_SHORT);            TextVIEw tv = (TextVIEw) toast.getVIEw().findVIEwByID(androID.R.ID.message);            tv.setTextcolor(color.YELLOW); //设置吐司字体颜色            toast.show();                        //得到焦点时文本变成红色            t_text.setTextcolor(color.RED);        }else{            t_text.setTextcolor(color.BLACK);        }    }}

③ 测试效果

三、处理触摸事件

手机上具有触屏功能时,触碰屏幕产生该事件,监听器是VIEw.OntouchListener,事件处理方法是ontouch()。

(一)测试-移动位置

① 布局


② TestActivity.java

package com.example.test;import androID.annotation.Suppresslint;import androID.os.Bundle;import androID.vIEw.MotionEvent;import androID.vIEw.VIEw;import androID.Widget.ImageVIEw;import androID.Widget.linearLayout;import androIDx.appcompat.app.AppCompatActivity;public class TestActivity extends AppCompatActivity {    private ImageVIEw t_img;    private linearLayout t_layout;    private linearLayout.LayoutParams LayoutParams;    @Suppresslint("ClickableVIEwAccessibility")    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.test2);        //获取到控件        t_img = (ImageVIEw) findVIEwByID(R.ID.test_img);        t_layout = (linearLayout) findVIEwByID(R.ID.test_layout);        // 获取焦点        t_layout.setFocusable(true);        t_layout.requestFocus();        // 获取图像控件的布局参数        LayoutParams = (linearLayout.LayoutParams) t_img.getLayoutParams();        // 触摸监听事件        t_layout.setontouchListener(new VIEw.OntouchListener() {            @OverrIDe            public boolean ontouch(VIEw v, MotionEvent event) {                // 根据变化的触点坐标来更新图像控件的布局参数                LayoutParams.leftmargin = (int) event.getX();                LayoutParams.topmargin = (int) event.getY();                // 重新设置图像控件的布局参数                t_img.setLayoutParams(LayoutParams);                return true;            }        });    }}

③ 测试效果

由于是新建的一个活动窗口来测试的,所以需要先更改一下清单文件,如下。


四、补充

1、Toast(吐司)的基本使用

2、GestureOverlayView属性

总结

以上是内存溢出为你收集整理的安卓基础学习 Day10 |事件处理全部内容,希望文章能够帮你解决安卓基础学习 Day10 |事件处理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存