程序效果是:在屏幕上画一个圆,可以用鼠标任意移动到屏幕上任何一个地方:
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);
}
}
}
分享到:
相关推荐
`Scroller`类是Android系统提供的一种用于处理平滑滚动和动画的关键工具,尤其在没有触摸事件或者手势操作时,它可以帮助我们实现各种复杂的滚动和动画效果。本篇文章将深入探讨如何利用`Scroller`来实现一个简单的...
在Android开发中,物体移动是实现游戏或动态应用的核心功能之一。这个"android 物体移动demo"提供了关于如何在Android平台上实现物体动画的基础知识,包括人物行走、下雪等效果。下面我们将深入探讨这些知识点。 一...
通过自定义View类,我们可以实现对物体运动的各种定制化需求,包括速度、方向等属性的控制。下面将详细介绍如何实现这一功能。 首先,创建自定义View类。在Android中,我们通常继承自`View`或`ViewGroup`来创建...
阻尼效果通常指的是在用户进行滑动操作时,界面元素以一种缓慢、平滑的方式停止,模拟真实世界物体运动的阻力感。这种效果使得用户在与屏幕交互时感觉更加自然流畅。本篇文章将详细介绍如何在Android开发中实现上滑...
在Android游戏开发的基础阶段,小球运动是一个常见的学习主题,它可以帮助开发者理解基本的游戏物理引擎、碰撞检测以及动画原理。这个教程可能包含了如何创建一个简单的2D游戏,其中一个小球在屏幕上移动并与其他...
同时,了解如何使用 invalidate() 方法来刷新视图,实现动态效果,如物体下落的动画。 4. **事件处理**:游戏中的交互性很重要。学习如何监听用户触摸事件,如ACTION_DOWN、ACTION_UP等,以控制物体的移动或启动...
7. **触摸事件处理**:Android的MotionEvent类和onTouchEvent()方法可能被用来处理玩家的触摸输入,控制游戏对象的移动和交互。 8. **游戏逻辑和状态管理**:游戏的逻辑(如计分、生命值、关卡设计等)会存在于Java...
在Android开发中,实现“撒花效果”和“类微信下落效果”是常见的动态UI设计,这可以增强用户交互体验,使应用更加生动有趣。这些效果通常在庆祝、完成任务或者用户达到某个里程碑时使用,营造出愉快的氛围。在本篇...
Matrix提供了多种矩阵变换操作,如平移、旋转、缩放等,通过巧妙地组合这些操作,可以实现3D空间中的物体运动。 3. **绘图基础**:自定义3D画廊需要在onDraw()方法中进行复杂的绘图逻辑。Android的Canvas提供了基本...
了解如何模拟物体运动和碰撞检测是制作这类游戏的基础。 5. **Android 游戏 2048源码**:与前一个2048游戏项目相似,这个源码可能是另一种实现方式,可以对比学习不同的编程策略和优化技巧。 6. **Android ...
- OpenCV中运动目标检测的算法原理和实现方法; - 实时视频帧的捕获、处理和分析技术; - 目标跟踪算法的使用和效果优化; - 对跟踪结果进行评估和调试的技巧。 由于文档内容无法直接访问,我们无法提供具体的代码...
- 动画效果的实现可能包括精灵动画(Sprite Animation)、粒子系统(Particle System)以及平滑的物体运动路径。 3. **物理引擎** - 愤怒的小鸟中的弹射机制和物体碰撞依赖于物理引擎。如Box2D或AndEngine的物理...
物理模拟在飞行射击游戏中用于处理物体的运动和碰撞。虽然简单的游戏可能不需要复杂的物理引擎,但理解基本的运动规律和碰撞检测算法(如分离轴定理)能帮助创建更真实的体验。 音频处理也是增强游戏氛围的重要部分...
根据提供的文档信息,本文将详细解析“基于Android平台游戏引擎的设计与实现”这一主题下的关键知识点,主要包括游戏引擎概述、Android平台特性、图形引擎模块、物理引擎模块(特别是刚体动力学及其碰撞检测)、粒子...
在Android开发中,实现书籍翻页效果是一种常见的增强用户体验的方式,尤其在电子阅读应用中尤为重要。这个项目"Android 实现书籍翻页效果(升级版)"可能是为了提供一种更为逼真、流畅的翻页动画,使得用户在数字阅读...
愤怒的小鸟的玩法依赖于精确的物理模拟,如弹射、碰撞检测和物体运动。源码中可能包含对Box2D物理引擎的使用,这是一个广泛应用于Android游戏的开源物理库。Box2D处理了游戏中的重力、速度、碰撞反弹等物理现象,...
开发者需要将摇杆的运动状态转化为游戏世界中的角色或物体的移动,这涉及到坐标转换和物理模拟等知识。 6. 性能优化:在Android设备上,为了确保游戏运行流畅,性能优化至关重要。开发者可能需要考虑减少不必要的...
- **运动模拟**:源码可能包含基于物理的物体运动计算,如抛物线投掷、弹性碰撞等。 5. **音频处理** - **MediaPlayer与SoundPool**:Android提供了两种音频播放方式,MediaPlayer适合长时间的音频流播放,...
4. **反弹逻辑**:当物体碰到屏幕边缘时,需要改变其运动方向,这就涉及到了反弹逻辑。这通常通过计算物体与边界的夹角并反转速度的x或y分量来实现。例如,如果物体的x速度为正且碰到右侧边界,那么x速度应变为负,...
而实现平滑滑动翻页的关键在于模拟真实世界的物理运动,让页面在用户的手势驱动下呈现出平滑的滚动和弹性反弹效果。这通常涉及到触摸事件处理、动画计算以及视图的缓存策略等多个方面。 1. 触摸事件处理:为了识别...