【Android Studio】小游戏 | 实现两个小动物随手指移动

简介: 【Android Studio】小游戏 | 实现两个小动物随手指移动



注:实验环境 Android studio 2021.2.1

1、具体说明

在本例子中,以两个小动物为例,这两个小动物为自定义的view,可以根据点击位置实时更改其位置。

1.1、首先就是触摸监听事件的设置。

setOnTouchListener中的OnTouch方法。

该方法只要有手在屏幕上就会调用,比如按下,滑动,抬起,会时刻调用该函数的。

1.2、屏幕操作

屏幕操作在framelayout布局中的的传递顺序:

framelayout布局是分层的,每层只有一个控件。

假如该framelayout上有多层,每次对屏幕的操作会从顶层开始向下判断,如果其中某一层的onTouch 方法return true,那么下面的层将不会接收到这些操作事件,也就是下面层对应的onTouch方法不会被调用。只有上层的返回false,底层的才能接收到屏幕事件。

1.3、对于函数:public boolean onTouch(View view, MotionEvent motionEvent)

  • motionEvent.getAction() //获取状态值,就是上面的action_xx
  • motionEvent.getX()//获取按下的x坐标
  • motionEvent.getY()//获取按下的y坐标
  • 可以看到其形参有一个motionEvent,其就是当用户对屏幕进行操作时的操作类型,比如我们按屏幕滑动时,分为三个步骤大概,比如按下一瞬间ACTION_DOWN,按下后的滑动ACTION_MOVE,以及抬起ACTION_UP。我们可以通过motionEvent.getAction()函数来获得此事件。
  • 手只要没离开屏幕,ontouch方法会一直不停的调用。
  • 在ontouch中设置一个switch()对该值进行判断。每次调用该方法都会触发一次判断。
    综上所述,要控制framelayout中,多层控件的触摸就变得非常清晰了。

1.4、判断有没有按到该图片

利用ACTION_DOWN在按下的一瞬间才会被判断的性质,设置两个变量记录下初始的按压位置,可以通过motionEvent.getX(),motionEvent.getY()两个函数获得该位置。如果该位置与该对象的位置相差较为大的时候,就可以认为该对象没有被点击。可以设置一个全局变量,canmove,若判断成功则canmove=true,判断失败则继续false。

· 手指滑动时的判断:当手指在屏幕上滑动时,motionEvent.getAction()返回的状态为ACTION_MOVE,此时如果通过canmove判断是在对目前图片进行操作,则可以进行一些位置的更新操作,操作完成后根据具体情况判断需不需要将事件向下层传递,本次实验显然不用向下层传递

· 抬起时canmove的恢复:利用ACTION_UP只有抬起时才会被判断到,如果canmove为true则恢复为false;

2、文件结构

3、演示

4、源代码

https://github.com/xinyangwy/Android_game

(含有build、release文件夹,约80多M)

相关文章
|
3月前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
251 1
|
1月前
|
Java Unix Linux
Android Studio中Terminal运行./gradlew clean build提示错误信息
遇到 `./gradlew clean build`命令执行出错时,首先应检查错误信息的具体内容,这通常会指向问题的根源。从权限、环境配置、依赖下载、版本兼容性到项目配置本身,逐一排查并应用相应的解决措施。记住,保持耐心,逐步解决问题,往往复杂问题都是由简单原因引起的。
243 2
|
2月前
|
XML IDE 开发工具
🔧Android Studio高级技巧大公开!效率翻倍,编码不再枯燥无味!🛠️
【9月更文挑战第11天】在软件开发领域,Android Studio凭借其强大的功能成为Android开发者的首选IDE。本文将揭示一些提升开发效率的高级技巧,包括自定义代码模板、重构工具、高级调试技巧及多模块架构。通过对比传统方法,这些技巧不仅能简化编码流程,还能显著提高生产力。例如,自定义模板可一键插入常用代码块;重构工具能智能分析并安全执行代码更改;高级调试技巧如条件断点有助于快速定位问题;多模块架构则提升了大型项目的可维护性和团队协作效率。掌握这些技巧,将使你的开发之旅更加高效与愉悦。
64 5
|
3月前
|
Dart Android开发
Android Studio New里面没有New Flutter Project
Android Studio New里面没有New Flutter Project
143 1
Android Studio New里面没有New Flutter Project
|
3月前
|
编解码 Android开发
【Android Studio】使用UI工具绘制,ConstraintLayout 限制性布局,快速上手
本文介绍了Android Studio中使用ConstraintLayout布局的方法,通过创建布局文件、设置控件约束等步骤,快速上手UI设计,并提供了一个TV Launcher界面布局的绘制示例。
58 1
|
3月前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
1365 0
Android Studio: 解决Gradle sync failed 错误
|
3月前
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
137 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
3月前
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
235 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
3月前
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
309 4
|
3月前
|
Java 网络安全 开发工具
UNITY与安卓⭐一、Android Studio初始设置
UNITY与安卓⭐一、Android Studio初始设置