`
hoyee1223
  • 浏览: 12725 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Android开发——关于OnTouch()开发过程中容易出错的地方

阅读更多

今天在做一个界面程序的时候发现一个问题,先不说这是什么问题,先把代码发上来大家看看能不能看出问题来!

public boolean onTouch(View v, MotionEvent event) {
 
     
 
          int id = v.getId();
 
          switch(id)
 
          {
 
          case R.id.start:
 
                   if(selectedWeapCounts==4)//selectedWeapCounts是一个整数
 
                           {
 
                            changeScreen = new ChangeScreen(this,new Main(),pointsNum);
 
                            weapDesc.setText("Start");//weapDesc是一个TextView对象
 
                            v.setBackgroundDrawable((BitmapDrawable)getResources().getDrawable(R.drawable.selected));//设置背景
 
                            changeScreen.changeToNew(selectedWeapon);//changeScreen是我写的一个工具类,可以把一个selectWeapon传递给另外一个Activity对象                            
                            }
 
                  else weapDesc.setText("请选择完“四种”武器");
 
                  break;
 
          case R.id.goback:
 
                  weapDesc.setText("goback");
 
                  v.setBackgroundDrawable((BitmapDrawable)getResources().getDrawable(R.drawable.selected));
 
                  break;
 
          }
 
   
 
   return true;
 
        }

 

以上是重写OnTouchListener里面的一个OnTouch()方法,大家发现有什么代码部分不妥没?
我在调试的时候发现每点击一次每次会创建两个ChangeScreen对象,这就表明了这个事件响应了两次,仔细一看是这样子的,onTouch()事件会在这里响应两次,因为它响应了一次按下事件,还响应了一次弹起事件,因为点击一次是按下和弹起两次事件,所以每当满足selectedWeapCounts==4就会执行两次 changeScreen = new ChangeScreen(this,new Main(),pointsNum);这就会产生很多问题了,所以应该将代码写成下面这样:

public boolean onTouch(View v, MotionEvent event) {
 
     
 
         if(event==MotionEvent.ACTION_DOWN)
 
         {
 
          int id = v.getId();
 
          switch(id)
 
          {
 
          case R.id.start:
 
                   if(selectedWeapCounts==4)//selectedWeapCounts是一个整数
 
                           {
 
                            changeScreen = new ChangeScreen(this,new Main(),pointsNum);
 
                            weapDesc.setText("Start");//weapDesc是一个TextView对象
 
                            v.setBackgroundDrawable((BitmapDrawable)getResources().getDrawable(R.drawable.selected));//设置背景
 
                            changeScreen.changeToNew(selectedWeapon);//changeScreen是我写的一个工具类,可以把一个selectWeapon传递给另外一个Activity对象                            
                           }
 
                  else weapDesc.setText("请选择完“四种”武器");
 
                  break;
 
          case R.id.goback:
 
                  weapDesc.setText("goback");
 
                  v.setBackgroundDrawable((BitmapDrawable)getResources().getDrawable(R.drawable.selected));
 
                  break;
 
          }
 
          
         return true;
 
        }
 
       return false;
 
     }
 
        

 

大家以后开发的时候也应该注意,不要像我一样犯这样的错误!
更多Android开发学习资料

0
0
分享到:
评论

相关推荐

    android悬浮框的onTouch和onClick事件同时存在

    在Android开发中,创建悬浮窗(FloatWindow)是一种常见的需求,它可以实现类似系统通知栏、桌面小部件等效果。在实现悬浮窗时,我们经常需要处理用户的触摸交互,包括单击(onClick)和滑动(onTouch)事件。标题...

    Android ontouch事件处理的三种方式

    在Android开发中,触摸事件是用户与应用交互的关键部分,`onTouchEvent`是处理这些事件的主要方法。本篇文章将深入探讨Android中处理`ontouch`事件的三种常见方式:通过接口实现、使用内部类以及利用匿名内部类。...

    安卓Android源码——移动开发触摸控制实现代码.zip

    本资源“安卓Android源码——移动开发触摸控制实现代码.zip”包含了一组源码,旨在帮助开发者深入理解并实践如何在Android平台上实现触摸事件的处理。以下是关于安卓Android触摸事件处理的关键知识点: 1. 触摸事件...

    安卓Android源码——android 悬浮窗.rar

    【标题】"安卓Android源码——android 悬浮窗.rar" 涉及到的是Android系统中的悬浮窗功能实现,这是Android应用开发中一个相对高级且实用的技术。悬浮窗通常被用于实现类似通知、快捷操作或者辅助工具的功能,可以在...

    Android onTouch事件传递机制

    在Android开发中,触摸事件处理是用户界面交互的关键部分,`onTouch`事件是其中的核心机制。本篇文章将深入探讨Android的`onTouch`事件传递机制,帮助开发者更好地理解和运用这一功能。 首先,Android的触摸事件...

    安卓Android源码——源码高仿IPhone锁屏.zip

    "安卓Android源码——源码高仿IPhone锁屏.zip"这个压缩包文件,显然提供了一个实例,展示了如何在Android系统上实现一个与iPhone类似的锁屏界面。下面我们将深入探讨这个主题,讲解相关的技术要点和知识。 首先,...

    Android onTouch机制

    在Android开发中,触摸事件处理是用户界面交互的基础,`onTouch`机制是这一过程的核心。本文将深入探讨Android的触摸事件处理流程,包括`dispatchTouchEvent`和`onTouchEvent`两个关键方法,以及如何通过日志来观察...

    Android源码——小米系统之便签源码.zip

    在本压缩包“Android源码——小米系统之便签源码.zip”中,我们主要探讨的是小米手机系统中便签应用的源代码。这个源代码分析对于深入理解Android开发,尤其是定制系统应用的开发有着重要的价值。以下是关于Android...

    安卓Android源码——城市列表特效-触摸查找源码.zip

    这个压缩包"安卓Android源码——城市列表特效-触摸查找源码.zip"提供了一个关于Android应用中城市列表特效的实现,特别是针对触摸查找功能的源代码。下面将详细探讨相关知识点。 首先,我们关注的是"城市列表"这一...

    安卓Android源码——点击屏幕更换图片源码.zip

    这个"安卓Android源码——点击屏幕更换图片源码.zip"就是一个典型的示例,它包含了实现这一功能的具体代码和相关资源。 首先,让我们分析一下这个源码的组成部分: 1. **1_121203124454_1.png 和 1_121203124454_2...

    手势操作onTouch事件demo

    这时,可以利用Android提供的`GestureDetector`或`ScaleGestureDetector`等工具类,它们提供了预定义的手势检测功能,简化了开发过程。 例如,`GestureDetector`可以检测滑动(`Swipe`)和点击(`Tap`)等手势: `...

    安卓Android源码——中国象棋人机对战项目.zip

    这个安卓Android源码项目是一个实现中国象棋人机对战的应用程序,对于想要学习安卓开发、游戏编程或者人工智能在移动平台应用的人来说,这是一个非常有价值的资源。以下是对该项目及相关知识点的详细解析: 1. **...

    android ontouch(记录滑动坐标)

    在Android开发中,`onTouch`事件监听器是处理用户触摸屏幕交互的重要工具。当我们想要追踪用户手指在屏幕上的滑动轨迹,例如实现一个虚拟触摸板(如`TouchpadDemo`项目所示),我们需要深入理解`MotionEvent`类以及...

    Android中丰富多彩的onTouch事件.rar

    在Android开发中,触摸事件是用户与应用交互的重要方式,`onTouch`事件处理机制是这一过程中的核心。本文将深入探讨`onTouch`事件在Android中的应用,以及如何利用它来实现丰富多彩的用户交互。 一、`MotionEvent`...

    Android源码——半透明Menu效果源码.zip

    在Android开发中,实现半透明菜单效果是一种常见的增强用户体验的方式,它可以为用户界面增添现代感和优雅性。本文将深入探讨如何通过源码实现这样的效果,主要基于Android平台的特性来详细讲解。 首先,半透明菜单...

    安卓Android源码——悬浮Activity并可拖动(访悬浮歌词).zip

    在安卓(Android)平台上,开发人员经常需要实现一些高级功能,比如浮动的活动(Activity),也就是我们常说的悬浮窗。这种技术通常用于创建类似于桌面小部件或者浮动歌词的应用,允许用户在使用其他应用的同时查看...

    Android onTouchEvent事件中onTouch方法返回值(介绍)

    1、若return false说明没有成功执行onTouch事件,在执行完onTouch里面的代码之后,onTouch事件并没有结束。因此某些组件如Gallery会自动执行它所在view里onTouch方法的代码。若在onTouch方法里面增加你的代码并且...

    Android源码——listview 滑动删除(具体效果360手机卫士后台通知).7z

    在Android开发中,ListView是常用的一种视图组件,它用于展示大量的列表数据,通常用于创建具有滚动功能的应用界面。在很多应用中,如360手机卫士的后台通知管理,用户可以通过滑动手势来删除ListView中的条目,这种...

    android click 和onTouch 事件处理机制.

    在Android开发中,点击事件(click)和触摸事件(onTouch)是两种常见的用户交互处理方式,它们在处理用户屏幕操作时起到了至关重要的作用。理解它们的事件处理机制是构建高效且响应良好的用户界面的关键。 首先,...

    安卓Android源码——滑动按钮,滑动锁的实现(已封装好,可直接使用).zip

    在安卓Android应用开发中,滑动按钮和滑动锁是常见的交互元素,它们通常用于开关功能或者确认操作,比如打开/关闭Wi-Fi、调整音量等。本篇将详细讲解如何实现这样的功能,并且提供了一个已经封装好的源码供直接使用...

Global site tag (gtag.js) - Google Analytics