今天在做一个界面程序的时候发现一个问题,先不说这是什么问题,先把代码发上来大家看看能不能看出问题来!
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开发学习资料
分享到:
相关推荐
在Android开发中,创建悬浮窗(FloatWindow)是一种常见的需求,它可以实现类似系统通知栏、桌面小部件等效果。在实现悬浮窗时,我们经常需要处理用户的触摸交互,包括单击(onClick)和滑动(onTouch)事件。标题...
在Android开发中,触摸事件是用户与应用交互的关键部分,`onTouchEvent`是处理这些事件的主要方法。本篇文章将深入探讨Android中处理`ontouch`事件的三种常见方式:通过接口实现、使用内部类以及利用匿名内部类。...
本资源“安卓Android源码——移动开发触摸控制实现代码.zip”包含了一组源码,旨在帮助开发者深入理解并实践如何在Android平台上实现触摸事件的处理。以下是关于安卓Android触摸事件处理的关键知识点: 1. 触摸事件...
【标题】"安卓Android源码——android 悬浮窗.rar" 涉及到的是Android系统中的悬浮窗功能实现,这是Android应用开发中一个相对高级且实用的技术。悬浮窗通常被用于实现类似通知、快捷操作或者辅助工具的功能,可以在...
在Android开发中,触摸事件处理是用户界面交互的关键部分,`onTouch`事件是其中的核心机制。本篇文章将深入探讨Android的`onTouch`事件传递机制,帮助开发者更好地理解和运用这一功能。 首先,Android的触摸事件...
"安卓Android源码——源码高仿IPhone锁屏.zip"这个压缩包文件,显然提供了一个实例,展示了如何在Android系统上实现一个与iPhone类似的锁屏界面。下面我们将深入探讨这个主题,讲解相关的技术要点和知识。 首先,...
在Android开发中,触摸事件处理是用户界面交互的基础,`onTouch`机制是这一过程的核心。本文将深入探讨Android的触摸事件处理流程,包括`dispatchTouchEvent`和`onTouchEvent`两个关键方法,以及如何通过日志来观察...
在本压缩包“Android源码——小米系统之便签源码.zip”中,我们主要探讨的是小米手机系统中便签应用的源代码。这个源代码分析对于深入理解Android开发,尤其是定制系统应用的开发有着重要的价值。以下是关于Android...
这个压缩包"安卓Android源码——城市列表特效-触摸查找源码.zip"提供了一个关于Android应用中城市列表特效的实现,特别是针对触摸查找功能的源代码。下面将详细探讨相关知识点。 首先,我们关注的是"城市列表"这一...
这个"安卓Android源码——点击屏幕更换图片源码.zip"就是一个典型的示例,它包含了实现这一功能的具体代码和相关资源。 首先,让我们分析一下这个源码的组成部分: 1. **1_121203124454_1.png 和 1_121203124454_2...
这时,可以利用Android提供的`GestureDetector`或`ScaleGestureDetector`等工具类,它们提供了预定义的手势检测功能,简化了开发过程。 例如,`GestureDetector`可以检测滑动(`Swipe`)和点击(`Tap`)等手势: `...
这个安卓Android源码项目是一个实现中国象棋人机对战的应用程序,对于想要学习安卓开发、游戏编程或者人工智能在移动平台应用的人来说,这是一个非常有价值的资源。以下是对该项目及相关知识点的详细解析: 1. **...
在Android开发中,`onTouch`事件监听器是处理用户触摸屏幕交互的重要工具。当我们想要追踪用户手指在屏幕上的滑动轨迹,例如实现一个虚拟触摸板(如`TouchpadDemo`项目所示),我们需要深入理解`MotionEvent`类以及...
在Android开发中,触摸事件是用户与应用交互的重要方式,`onTouch`事件处理机制是这一过程中的核心。本文将深入探讨`onTouch`事件在Android中的应用,以及如何利用它来实现丰富多彩的用户交互。 一、`MotionEvent`...
在Android开发中,实现半透明菜单效果是一种常见的增强用户体验的方式,它可以为用户界面增添现代感和优雅性。本文将深入探讨如何通过源码实现这样的效果,主要基于Android平台的特性来详细讲解。 首先,半透明菜单...
在安卓(Android)平台上,开发人员经常需要实现一些高级功能,比如浮动的活动(Activity),也就是我们常说的悬浮窗。这种技术通常用于创建类似于桌面小部件或者浮动歌词的应用,允许用户在使用其他应用的同时查看...
1、若return false说明没有成功执行onTouch事件,在执行完onTouch里面的代码之后,onTouch事件并没有结束。因此某些组件如Gallery会自动执行它所在view里onTouch方法的代码。若在onTouch方法里面增加你的代码并且...
在Android开发中,ListView是常用的一种视图组件,它用于展示大量的列表数据,通常用于创建具有滚动功能的应用界面。在很多应用中,如360手机卫士的后台通知管理,用户可以通过滑动手势来删除ListView中的条目,这种...
在Android开发中,点击事件(click)和触摸事件(onTouch)是两种常见的用户交互处理方式,它们在处理用户屏幕操作时起到了至关重要的作用。理解它们的事件处理机制是构建高效且响应良好的用户界面的关键。 首先,...
在安卓Android应用开发中,滑动按钮和滑动锁是常见的交互元素,它们通常用于开关功能或者确认操作,比如打开/关闭Wi-Fi、调整音量等。本篇将详细讲解如何实现这样的功能,并且提供了一个已经封装好的源码供直接使用...