目录

安卓常用事件介绍

具体例子:


安卓常用事件介绍

1、单击事件

当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的监听器View.OnClickListener,事件处理方法是onClick()

2、焦点事件
 组件得到或者失去焦点时产生该事件,监听器是View.OnFocusChangeListener,事件处理方法是onFocusChange()。
3、按键事件
用户按下或者释放手机键盘上的某个按键时产生,监听器是View.OnKeyListener, 事件处理方法是onKey()。

4、触碰事件

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

二、安卓事件处理方式
1、基于回调的事件处理机制
基于回调的事件处理方式,在Activity生命周期那部分已经涉及到了七个回调方法。 (onCreate - onDestroy, onStart - onStop, onResume - onPause, onRestart )

具体例子:

新建一个安卓应用,并导入一张背景图片和图像

将默认的约束布局改成线性布局,设置相关属性

具体代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/img01"android:gravity="center"android:orientation="vertical"tools:context=".MainActivity"><ImageViewandroid:id="@+id/iv_mickey"android:layout_width="100dp"android:layout_height="120dp"android:scaleType="fitXY"android:src="@drawable/mickey"/>
</LinearLayout>

打开strings 改变应用标题

具体代码:

<resources><string name="app_name">通过按键移动米老鼠</string>
</resources>

打开MainActivity实现主界面功能

实现代码:

具体代码:

package net.zyt.movemickeybykey;import androidx.appcompat.app.AppCompatActivity;import android.content.res.Resources;
import android.graphics.Point;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private final int STEP=10;//移动步长private ImageView ivMickey;//米老鼠图像控件private LinearLayout root;//线性根布局private  LinearLayout.LayoutParams layoutParams;//布局参数@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//利用布局资源文件设置用户界面setContentView(R.layout.activity_main);//通过资源标识符获取控件实例ivMickey=findViewById(R.id.iv_mickey);root=findViewById(R.id.root) ;//线性根部局获得焦点root.setFocusable(true);root.requestFocus();//获取图像控件的布局参数layoutParams= (LinearLayout.LayoutParams) ivMickey.getLayoutParams();//(alt+enter)//给线性根布局注册监听器,实现监听接口,编写事件处理方法root.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {//根据按键来修改米老鼠图形控件的布局参数-改变图像的位置switch (keyCode){case KeyEvent.KEYCODE_DPAD_UP://19,按的上方向健// 上边界碰撞检测if (ivMickey.getTop() >= 10) {//判断米老鼠控件是否碰到上边界layoutParams.topMargin = layoutParams.topMargin - STEP;} else {Toast.makeText(MainActivity.this, "温馨提示:碰到上边界~", Toast.LENGTH_SHORT).show();}break;case KeyEvent.KEYCODE_DPAD_DOWN://20,按的下方向健// 下边界碰撞检测if (ivMickey.getTop() <=1660) {layoutParams.topMargin = layoutParams.topMargin + STEP;} else {Toast.makeText(MainActivity.this, "温馨提示:碰到下边界~", Toast.LENGTH_SHORT).show();}break;case KeyEvent.KEYCODE_DPAD_LEFT://21,按的左方向健// 左边界碰撞检测if (ivMickey.getLeft() >=10) {//判断米老鼠控件是否碰到左边界layoutParams.leftMargin=layoutParams.leftMargin-STEP;} else {Toast.makeText(MainActivity.this, "碰到左边界~", Toast.LENGTH_SHORT).show();}break;case KeyEvent.KEYCODE_DPAD_RIGHT://22,按的右方向健Log.d("Mickey","ivMickey.getLeft():"+ivMickey.getLeft());// 右边界碰撞检测if (ivMickey.getLeft() <=800) {layoutParams.leftMargin=layoutParams.leftMargin+STEP;} else {Toast.makeText(MainActivity.this, "碰到右边界~", Toast.LENGTH_SHORT).show();}break;}//重新设置米老鼠图像控件的布局参数,改变其位置ivMickey.setLayoutParams(layoutParams);return false;//事件要往后传播}});}
}

运行效果:

AndroidStudio图像随键盘按动在屏幕移动(按键事件)相关推荐

  1. AndroidStudio 图像随键盘按动在屏幕移动(按键事件)

    目录 安卓常用事件介绍 具体例子: 安卓常用事件介绍 1.单击事件 当用户触碰到某个组件或者方向键被按下时产生该事件,该事件的监听器View.OnClickListener,事件处理方法是onClic ...

  2. android 模拟点击 不发出声音,【Android】代码实现模拟屏幕点击和键盘按键事件...

    最近参加某比赛写了一个Android手机控制Android电视的程序,其中需要控制电视端模拟"鼠标"点击,和模拟按键盘的事件. 下面直接贴上程序: // 模拟屏幕点击事件 publ ...

  3. 开机直接进入键盘布局_屏幕虚拟键盘的使用

    在购物和开机时都需要输入密码,为了防止密码被窃就需要虚拟键盘. 『1』屏幕虚拟键盘所在: 点左下角的开始, 点程序栏, 点开附件, 往下拉, 在轻松访问里的屏幕键盘就是虚拟键盘,这时可以右键发送为桌面 ...

  4. C语言程序设计教程_第四章:键盘输入与屏幕输出_笔记整理

    第四章 键盘输入与屏幕输出[

  5. 笔记本 键盘 唤醒计算机,笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...

    ‍ 通常情况下,我们如果有一段时间没有使用笔记本电脑,那么笔记本会自动进入睡眠状态.有用户发现笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕,那么应该怎么解决这个问题呢?大家可以参考下面提供的方 ...

  6. 笔记本电脑无法进入睡眠状态_笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...

    ‍ 通常情况下,我们如果有一段时间没有使用笔记本电脑,那么笔记本会自动进入睡眠状态.有用户发现笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕,那么应该怎么解决这个问题呢?大家可以参考下面提供的方 ...

  7. 计算机桌面打开图像管理,​电脑屏幕出现:图像设定自动设定,屏幕优化中请稍等...怎么解决?...

    电脑是如今办公与家用娱乐不可缺少的电器,给我们的生活带来了巨大的颠覆性,不管是用来看电影玩游戏,还是用来办公使用,它都已经成为了我们生活不可缺少的一部分.而电脑也是会出现问题的,也会出现许多小毛病困扰 ...

  8. 头歌:键盘输入与屏幕输出练习1

    任务描述 本关任务:编写一个屏幕输出程序. 相关知识 为了完成本关任务,你需要掌握:C 语言基础. 键盘输入与屏幕输出练习 原始代码块: #include <stdio.h> int ma ...

  9. C语言的键盘输入和屏幕输出

    键盘输入和屏幕输出是编写简单的顺序结构程序时最常用到的操作.C程序中的键盘输入和屏幕输出都是通过调用输入/输出函数实现的.本章介绍常用的输入/输出函数. 一.单个字符的输入/输出 1.字符常量 C语言 ...

最新文章

  1. Amazon Aurora是如何设计原生云关系型数据库的?
  2. Hive 2.3.2 Installation Guide
  3. UOJ#454-[UER #8]打雪仗【通信题】
  4. SQL SERVER 数据库主键和外键的思考
  5. 图形显卡_选核芯显卡还是独立显卡?这才是决定笔记本电脑性能的关键
  6. MongoDB学习之(二)java连接
  7. AB伺服电机维修CAT MPM-B1152C-SJ72AA详解
  8. 南航计算机考研专业课复习重点
  9. 利用mybatis插件开发动态更改sql
  10. C语言文件输入输出函数总结
  11. 超级推荐:网工必备模拟器PNETLab,附下载链接,全球第一篇最优质的帖子
  12. Docker Swarm集群与Kubernetes的搭建与试用
  13. 001我和Python的第一次亲密接触
  14. Hadoop权威指南——关于Sqoop
  15. COBIT+2019框架治理和管理目标(资料下载)
  16. 近期要读的书(经济类)
  17. c语言 尾递归,尾递归的笔记
  18. java编写出一个小船的代码
  19. CI框架下 新浪微博登录接口完整版
  20. javascript正则表达式大括号、中括号、小括号的作用以及应用场景

热门文章

  1. z变换的零极点图matlab,实验三 Z变换零极点分布及部分分式展开的MATLAB实现
  2. FPGA是什么?为什么要使用它?
  3. 梦游天姥吟留别 ——李白
  4. ASP.NET Core中数据绑定的Attribute
  5. TApplication
  6. 《下一代互联网(IPv6)搭建与运维》1+X证书
  7. C++——多项式拟合
  8. Search Bar On Browser_4
  9. 在线教育产品的引流方法
  10. 聚类分析实例-标注聚类中心