Java代码:
public boolean onTouch(View v, MotionEvent event)
参数v:参数v同样为事件源对象。
参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。
节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继续采用该案例的思路,通过监听接口的方式实现在屏幕上拖动按钮移动的案例。开发步骤如下。
创建一个名为Sample的Android项目。
准备字符串资源,打开strings.xml文件,用下列代码替换原有代码。
Java代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- XML的版本及编码方式 -->
<resources>
<string name="hello">Hello World, Sample</string>
<!--定义hello字符串 -->
<string name="app_name">Sample</string>
<!--定义app_name字符串-->
<string name="location">位置</string>
<!--定义location字符串-->
</resources>
说明:与前面介绍的案例相同,对程序中用到的字符串资源进行定义。
开发布局文件。打开res/layout目录下的main.xml,用下列代码替换其原有代码。
Java代码:
<?xml version="1.0" encoding="utf-8"?>
<!-- XML的版本及编码方式 -->
<AbsoluteLayout
android:id="@+id/AbsoluteLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- XML的版本及编码方式 -->
<Button
android:layout_y="123dip"
android:layout_x="106dip"
android:text="@string/location"
android:layout_height="wrap_content"
android:id="@+id/Button01"
android:layout_width="wrap_content"/>
<!-- XML的版本及编码方式 -->
</AbsoluteLayout>
说明:该布局文件非常简单,只是在一个绝对布局中添加一个按钮控件即可,需要注意的是应该为该按钮指定ID,以便在Java代码中可以得到该按钮的引用。
接下来开始开发主要的逻辑代码。编写Sample.java文件,其代码如下所示。
Java代码:
package wyf.ytl;
//声明所在包
import android.app.Activity;
//引入相关类
//该处省略了部分类的引入代码,读者可以自行查阅随书光盘中的源代码\
import android.widget.Button;
//引入相关类
public class Sample extends Activity {
final static int WRAP_CONTENT=-2;
//表示WRAP_CONTENT的常量
final static int X_MODIFY=4;
//在非全屏模式下X坐标的修正值
final static int Y_MODIFY=52;
//在非全屏模式下Y坐标的修正值
int xSpan;
//在触控笔点击按钮的情况下相对于按钮自己坐标系的
int ySpan;
//X,Y位置
public void onCreate(Bundle savedInstanceState) {
//重写的onCreate方法
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//设置当前的用户界面
Button bok=(Button)this.findViewById(R.id.Button01);
//得到按钮的引用
bok.setOnTouchListener(
//添加监听
new OnTouchListener(){
//创建监听类
public boolean onTouch(View view, MotionEventevent) {
//重写的监听方法
switch(event.getAction()){
//监听事件
case MotionEvent.ACTION_DOWN:
//触控笔按下
xSpan=(int)event.getX();
//得到X坐标
ySpan=(int)event.getY();
//得到Y坐标
break;
case MotionEvent.ACTION_MOVE:
//触控笔移动
Button bok=(Button)findViewById(R.id.Button01);
//让按钮随着触控笔的移动一起移动
ViewGroup.LayoutParams lp= new AbsoluteLayout.LayoutParams( WRAP_CONTENT,
WRAP_CONTENT,(int)event.getRawX()-xSpan-X_MODIFY,(int)event.getRawY()-ySpan-Y_MODIFY ) ;
bok.setLayoutParams(lp);
//设置按钮的坐标
break;
}
return true;
}
}
);
}
public boolean onKeyDown (int keyCode, KeyEvent event){
//键盘键按下的方法
Button bok=(Button)this.findViewById(R.id.Button01);
//得到按钮的引用
bok.setText(keyCode+" Down");
//设置按钮的文字
return true;
}
public boolean onKeyUp (int keyCode,KeyEvent event){
//键盘键抬起的方法
Button bok=(Button)this.findViewById(R.id.Button01);
//得到按钮的引用
bok.setText(keyCode+" Up");
//设置按钮的文字
return true;
}
public boolean onTouchEvent (MotionEventevent){
//让按钮随触控笔的移动一起移动
Button bok=(Button)this.findViewById(R.id.Button01);
//得到按钮引用
ViewGroup.LayoutParams lp=
new AbsoluteLayout.LayoutParams(
//创建
LayoutParams WRAP_CONTENT, WRAP_CONTENT, (int)event.getRawX()-xSpan-X_MODIFY,
//X坐标
(int)event.getRawY()-ySpan-Y_MODIFY
//Y坐标
) ;
bok.setLayoutParams(lp);
return true;
}
}
第6~10行声明了程序中需要的一些变量。
第11~40行重写了Activity中的onCreate方法,在方法中设置当前的用户界面,然后得到按钮的引用并为其注册监听。第16~38行创建监听器类并重写onTouch方法,然后根据事件的类型执行不同的操作。
第41~45行重写了onKeyDown回调方法,在该方法中得到按钮的引用并设置按钮上的文字,第46~50行重写了onKeyUp回调方法,同样也是设置按钮上的文字。
第51~61行重写了onTouchEvent回调方法,用来处理屏幕事件的监听方法,在方法中得到按钮的引用,然后设置按钮的坐标。
运行该案例,通过触控笔便可拖动屏幕中的按钮移动,如图所示。
分享到:
相关推荐
在移动图片时,应避免长时间占用大量内存,可能导致OOM(Out Of Memory)错误。可以使用流式操作减少内存占用,或者使用`BitmapFactory.Options`来控制解码时的尺寸和质量。 综上所述,"android图片移动"涉及到...
Android 移动应用开发习题答案 Android 移动应用开发是指使用 Android 操作系统开发移动应用程序的过程。 Android 作为最流行的移动操作系统之一,拥有庞大的用户群体和丰富的第三方应用程序生态系统。为了帮助...
在Android中,通常使用`ImageView`组件来展示静态图片,而动态移动图片则需要利用`Canvas`和`Bitmap`。`Bitmap`是Android中用于存储图像数据的对象,而`Canvas`则提供了一个画布,允许开发者在其上进行绘图操作,...
在Android开发中,"Android左右移动图片+放大"通常指的是实现一个类似相册的功能,让用户可以左右滑动浏览图片,并支持图片的放大操作。这种功能常用于应用中的图片展示模块,比如个人相册、产品展示等。核心组件是`...
在Android开发中,图片动态效果是用户界面设计中不可或缺的一部分,尤其在游戏或者动画应用中。本主题将探讨如何利用线程技术实现图片在屏幕上的水平循环往返移动。线程在Android中扮演着处理后台任务的重要角色,它...
在Android平台上进行图片移动操作,通常涉及到用户界面(UI)交互和触摸事件处理。这个"Android 图片移动"的功能,主要是让用户能够通过触摸屏幕,拖动图片在界面上自由移动,实现一种交互式的用户体验。以下是一些...
在Android开发中,实现背景图片缓慢移动的效果,通常涉及到图像动画这一重要概念。这不仅仅是为了增强用户界面的视觉吸引力,也是提升用户体验的关键因素之一。在本案例中,我们看到的标题"Android背景图片缓慢移动...
"Android animation图片移动效果.zip"这个压缩包文件显然包含了一个关于如何在Android平台上实现图片移动动画的示例代码。在这个项目中,开发者可能通过XML或者Java代码来创建动画效果,使得图片能够在屏幕上平滑地...
Android实现图片手势缩放、移动、双击放大缩小。
在Android开发中,实现按钮或图片的移动效果是一项常见的需求,尤其在创建交互式用户界面时。本篇文章将深入探讨如何让Android应用中的按钮或图片跟随用户的触摸手势自由移动。 首先,我们需要理解Android中的触控...
在Android中,移动图片通常涉及到改变其在布局中的坐标。这可以通过设置ImageView的`translationX`和`translationY`属性来实现。这两个属性分别控制视图沿水平轴和垂直轴的平移。 三、无限循环移动 要实现图片的...
android 图片移动实现,点击控制图片移动。
《Android移动开发基础案例教程(第2版)》是一份专为初学者设计的教学资料,旨在帮助学习者掌握Android应用开发的基本技能。这份PPT涵盖了Android开发的核心概念、工具使用以及实战案例,对于想要踏入Android开发...
在Android开发中,图片的处理是一项常见的任务,包括图片的加载、显示、缩放和移动等操作。这个“android 图片放大缩小移动 demo”项目旨在提供一个实例,演示如何在Android应用中实现这些功能。接下来,我们将深入...
2. 使用Matrix的setTranslate方法来移动图片。该方法接受两个参数,分别代表X轴和Y轴上的偏移量。 3. 在触摸事件中获取用户的滑动距离,并更新Matrix,然后调用ImageView的setImageMatrix方法来更新显示。 缩放图片...
在Android开发过程中,图片资源是应用界面设计的重要组成部分,它们能够增强用户体验,提供直观的视觉信息。本资源包“android开发常用图片”包含了全面的图片素材,适合Android开发者在构建应用时参考和使用。以下...
本示例代码是针对"android手势移动代码(动态图片跟随手势移动)",主要用于实现动态图片跟随用户的触摸手势进行移动,这对于游戏开发或是任何需要图形对象移动的应用都极其有用。下面我们将详细讲解这一技术。 ...
在Android开发中,图片处理是一项常见的任务,包括图片模糊处理和图片移动功能的实现。本文将深入探讨这两个关键知识点,并提供实现方法。 首先,我们来讨论图片模糊处理。在Android中,图片模糊效果通常用于创建...
本话题主要聚焦于"图片移动效果",这通常涉及到Android中的视图动画(View Animation)和属性动画(Property Animation)系统。 **视图动画**是Android早期版本(API level 8及以下)中提供的动画机制,它并不真正...