android如何在屏幕点击位置画一个小圆

点击屏幕任意位置就能在屏幕上画一个圆而且次圆随着点击坐标位置改变而改变... 点击屏幕任意位置 就能在屏幕上画一个圆 而且次圆随着点击坐标位置改变而改变 展开
 我来答
好程序员
2015-12-04 · HTML5前端培训/大数据培训/Java
好程序员
好程序员是IT高端课程培训基地,从平凡到卓越,为梦想而拼搏。
向TA提问
展开全部
主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置

代码:
Activity

package com.view;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// 隐藏状态栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

// 把Activity的标题去掉
requestWindowFeature(Window.FEATURE_NO_TITLE);

// 设置布局
this.setContentView(new MySurfaceView(this));
}
}

SurfaceView

package com.view;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;

public class MySurfaceView extends SurfaceView implements Runnable, Callback {

private SurfaceHolder mHolder; // 用于控制SurfaceView

private Thread t; // 声明一条线程

private boolean flag; // 线程运行的标识,用于控制线程

private Canvas mCanvas; // 声明一张画布

private Paint p; // 声明一支画笔

private int x = 50, y = 50, r = 10; // 圆的坐标和半径

public MySurfaceView(Context context) {
super(context);

mHolder = getHolder(); // 获得SurfaceHolder对象
mHolder.addCallback(this); // 为SurfaceView添加状态监听
p = new Paint(); // 创建一个画笔对象
p.setColor(Color.WHITE); // 设置画笔的颜色为白色
setFocusable(true); // 设置焦点
}

/**
* 自定义一个方法,在画布上画一个圆
*/
public void Draw() {
mCanvas = mHolder.lockCanvas(); // 获得画布对象,开始对画布画画
mCanvas.drawRGB(0, 0, 0); // 把画布填充为黑色
mCanvas.drawCircle(x, y, r, p); // 画一个圆
mHolder.unlockCanvasAndPost(mCanvas); // 完成画画,把画布显示在屏幕上
}

/**
* 当SurfaceView创建的时候,调用此函数
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
t = new Thread(this); // 创建一个线程对象
flag = true; // 把线程运行的标识设置成true
t.start(); // 启动线程
}

/**
* 当SurfaceView的视图发生改变的时候,调用此函数
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}

/**
* 当SurfaceView销毁的时候,调用此函数
*/
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
flag = false; // 把线程运行的标识设置成false
}

/**
* 当屏幕被触摸时调用
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
x = (int) event.getX(); // 获得屏幕被触摸时对应的X轴坐标
y = (int) event.getY(); // 获得屏幕被触摸时对应的Y轴坐标
return true;
}

/**
* 当用户按键时调用
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_DPAD_UP){ //当用户点击↑键时
y--; //设置Y轴坐标减1
}
return super.onKeyDown(keyCode, event);
}

@Override
public void run() {
while (flag) {
Draw(); // 调用自定义画画方法
try {
Thread.sleep(50); // 让线程休息50毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

}

MySurfaceView首先继承SurfaceView,然后实现Runnable和Callback接口

重写了Runnable的run方法和Callback的surfaceCreated(SurfaceHolder holder),surfaceChanged(SurfaceHolder holder, int format, int width,int height),surfaceDestroyed(SurfaceHolder holder)方法,
还实现了onTouchEvent(MotionEvent event),onKeyDown(int keyCode, KeyEvent event)方法来,详细的在代码里已注释。
百度网友6fe0dab
2012-12-17 · TA获得超过409个赞
知道答主
回答量:19
采纳率:0%
帮助的人:14.3万
展开全部
需要安卓4.0以上版本,在【设置】 【开发人员工具】中选择
追问
我是想写代码  不是设置   请问具体的代码应该怎么写啊
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xsmfzcy
2012-12-17 · 超过29用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:61.1万
展开全部
在布局中全屏幕使用surfaceview,监听ontouch事件,获取event事件的x值和y值,跑一个线程在sufaceview里用canvas的drawcircle函数画圆每次画之前先用canvas全屏幕以背景颜色重绘。
更多追问追答
追问
x,y坐标我通过一个辅助设备获得了,这个设备的代码给我提供了x,y坐标,现在我想用这些坐标在桌面上绘制一个随动的鼠标。
追答
如果获得就更好了,直接跑一个线程然后根据提供的x,y值直接在画布上画就行了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shendu33001
2012-12-17 · 超过18用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:27万
展开全部
自定义view,用canvas进行画图
更多追问追答
追问
您好,小弟初学,还请多多指教。
自定义一个view 如何让它显示在桌面上?(就是没有activity)
我的想法是建一个service ,获取坐标,然后根据坐标画圆,这是我的想法,可是我不知道如何实现。
追答
自定义view里面有个画图的方法,你每次获取到坐标后画就可以了..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式