`

Android中实现物体在屏幕的移动

阅读更多

程序效果是:在屏幕上画一个圆,可以用鼠标任意移动到屏幕上任何一个地方:

 

package com.ray.view;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class TestView extends Activity {
	float x = 0;
	float y = 0;
	View myView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //值得一提的是,由于画圆参照的坐标系(以系统信息栏的左下侧为原点)
        //和MotionEvent获取的x,y坐标参照(以屏幕坐上角为原点)的坐标系不同,
        //如果不设置全屏的话,会出现鼠标中心跟圆心不一致的情况。
        requestWindowFeature(Window.FEATURE_NO_TITLE);   
        getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,WindowManager.LayoutParams. FLAG_FULLSCREEN);  
        myView = new MyView(this);
        setContentView(myView);  
    }
    public boolean onTouchEvent(MotionEvent event) {
		x = event.getX();
		y = event.getY();
		switch(event.getAction()){
			case MotionEvent.ACTION_DOWN: 
				myView.invalidate();
				break;
			case MotionEvent.ACTION_UP: 
				myView.invalidate();
				break;
			case MotionEvent.ACTION_MOVE:
				myView.invalidate();
				break;
		}		
		return super.onTouchEvent(event);
	}
    class MyView extends View{
		protected void onDraw(Canvas canvas) {
			Paint mPaint = new Paint();
			
			mPaint.setColor(Color.BLUE);
			mPaint.setAntiAlias(true);
			canvas.drawCircle(x, y, 20, mPaint);
			super.onDraw(canvas);		
		}

		public MyView(Context context) {
			super(context);
		}
		
		
    }
}

 

14
1
分享到:
评论
5 楼 kldwq2002 2011-03-11  
永远把类的属性定义为private是一个好习惯。
4 楼 luren85 2010-09-08  
lz, 似乎写错了一个地方啊!
View myView; 似乎应该写成 MyView myView;
这样才能触发事件
3 楼 蒙太奇 2010-05-06  
invalidate()应该是和Flex里面的invalidateProperties()..差不多,使当前显示对象属性失效,下次屏幕刷新的时候再更新新的属性值,而不是所见即所得,以提高效率~
不知道我理解的对不对。
2 楼 kevin2562 2010-03-09  
这个方法很不错很简单。但是小弟还是有一点东西不能理解。。。希望指教一下。

myView.invalidate(); 这个方法执行后的效果是什么?消灭当前的图片,然后创建一个新的图片?
1 楼 happyljt 2010-01-25  
学习了。

相关推荐

    android 物体移动demo

    在Android开发中,物体移动是实现游戏或动态应用的核心功能之一。这个"android 物体移动demo"提供了关于如何在Android平台上实现物体动画的基础知识,包括人物行走、下雪等效果。下面我们将深入探讨这些知识点。 一...

    Android游戏开发之物体来回移动

    在这个主题中,我们将深入探讨如何实现物体在屏幕上来回移动的效果,并结合具体的项目实例"BusMoveTest2"进行讲解。 首先,我们需要了解Android中的坐标系统。Android屏幕的坐标系统是以左上角为原点(0,0),X轴向右...

    Android利用Scroller实现简单的物体漂浮移动效果

    本篇文章将深入探讨如何利用`Scroller`来实现一个简单的物体漂浮移动效果,即图像在屏幕上左右往返飘动。 首先,我们需要理解`Scroller`的工作原理。`Scroller`并不直接改变View的位置,而是计算出滚动的起始位置、...

    基于Android平台实现物体跟踪.pdf

    在移动设备上实现物体跟踪是一项关键的技术,尤其在Android平台上,这涉及到图像处理和计算机视觉领域。Android客户端应用开发中,物体跟踪常用于增强现实(AR)、游戏、智能监控等领域,能够实时追踪并分析目标物体...

    Unity3D教程:Android场景中物体的旋转平移2

    本文将详细介绍如何在 Unity3D 的 Android 场景中实现物体的旋转平移。 一、 Unity3D 的 Touch 事件处理 在 Unity3D 中,Touch 事件是指用户在 Android 设备上的触摸屏幕时所产生的事件。Touch 事件可以用来控制...

    unity UI跟随3d场景中的物体移动,相当于3d物体的介绍信息

    在Unity 3D游戏开发中,UI(用户界面)元素的动态跟随3D场景中的物体移动是一项常见的需求,尤其在创建交互式游戏或模拟应用时。这种技术可以让玩家或者用户获得与场景内对象互动的直观反馈,提升用户体验。标题和...

    android 游戏飞机移动模拟

    在Android平台上开发游戏,尤其是涉及动态物体移动时,如“飞机移动模拟”,通常会涉及到多个关键的技术点。这里,我们将深入探讨如何通过Android代码来实现屏幕上的飞机移动,并结合事件监听来增强游戏交互性。 ...

    android开发 小车跟随键盘上下左右键而移动

    在Android开发中,实现"小车跟随键盘上下左右键而移动"的功能,涉及到的主要知识点有Android用户界面(UI)设计、事件监听、动画处理以及多线程编程。下面将详细阐述这些关键点。 1. **Android UI设计**: - 使用...

    android 2d游戏的遮挡和碰撞实现

    在实现这些算法时,通常会结合特定的游戏需求进行优化,例如使用四叉树数据结构加速碰撞查询,或者使用分离轴定理(Separating Axis Theorem)处理复杂形状的碰撞。 在提供的文件"LayerManager.java"中,我们可以...

    android游戏开发原创实例人物移动+子弹+跳高

    然后在每一帧中,更新子弹的位置,直到它离开屏幕或撞击到其他物体。这个过程中,可能用到了线性代数中的向量运算来计算子弹的运动轨迹。 跳跃功能是2D游戏中的经典元素,通常通过物理引擎来模拟。在Android游戏...

    Android-循环绘制下落物体的View可以模拟雪花雨滴金币等物体样式的飘落效果

    在Android开发中,创建动态效果是提升用户体验的重要手段之一,特别是在游戏或互动应用中。"循环绘制下落物体的View"是一种常见的动画技术,用于模拟各种物体如雪花、雨滴或金币的飘落效果。本篇文章将深入探讨如何...

    Android-Prevent-Screen-Off这个库实现当用户看屏幕时将一直保持屏幕不关掉

    在Android开发中,保持屏幕常亮是一个常见的需求,特别是在用户观看视频、阅读或者进行其他需要长时间显示内容的应用场景。"Android-Prevent-Screen-Off"是一个专门为此目的设计的库,它允许开发者轻松地实现在用户...

    Android抖动动画效果(上下抖和以角旋转)

    "Android抖动动画效果(上下抖和以角旋转)"这个主题主要关注如何实现物体在屏幕上进行上下抖动和以角度旋转这两种动态效果。抖动动画通常用于错误提示、输入验证等场景,而角旋转则常见于按钮点击、加载图标等交互...

    Android实现3D立方体,带纹理贴图

    在Android平台上实现3D立方体并附带纹理贴图是一个相当基础且有趣的实践,它涉及到Android的OpenGL ES库,这是Android系统中用于处理图形渲染的API。本项目旨在通过使用鼠标拖动操作来控制3D立方体的旋转,同时利用...

    android游戏编程之从零开始飞机游戏触摸移动

    在源码中,你可能会看到`Activity`类的实现,这是Android应用程序的基本组件,负责处理用户交互和UI显示。在这个飞机游戏中,`Activity`会包含游戏的主要逻辑和画面更新。你可能需要创建一个自定义的`SurfaceView`...

    android 游戏虚拟摇杆实现

    在Android平台上开发游戏时,虚拟摇杆是一种常见的用户输入方式,尤其在移动设备上,它为玩家提供了控制游戏角色或物体的便捷手段。本教程将详细讲解如何在Android应用中实现一个可扩展到8方向控制的虚拟摇杆。 一...

    Android实现抖动窗口的方法实例.rar

    在这个实例中,我们将主要关注Translate动画,因为它可以用来模拟物体在屏幕上的左右移动,从而产生抖动的感觉。 在`srcfans.com`压缩包内的源码中,开发者可能创建了一个自定义的布局文件,包含一个按钮和一个...

    TLD及CMT跟踪算法Android源码实现

    在本文中,我们将深入探讨如何在Android平台上实现TLD(Tracking-Learning-Detection)和CMT(CamShift Tracker)目标跟踪算法。这两种算法是计算机视觉领域中广泛使用的对象跟踪技术,具有良好的实时性能和鲁棒性。...

    Android基于widget组件实现物体移动/控件拖动功能示例

    在Android开发中,实现物体移动或控件拖动功能是提高用户交互性和界面动态性的重要手段。本示例将详细讲解如何基于Widget组件,特别是使用AbsoluteLayout,来实现这一功能。AbsoluteLayout是一个过时的布局组件,但...

    Android开发界面阻尼效果的实现

    本篇文章将详细介绍如何在Android开发中实现上滑、下滑和侧滑等各种阻尼效果。 首先,我们需要了解Android中的滑动事件处理机制。在Android中,我们通常通过重写ViewGroup的`onInterceptTouchEvent`和`onTouchEvent...

Global site tag (gtag.js) - Google Analytics