android 如何绘制一串圆形跟随手指指甲前端白色弧线是气血亏虚吗做弧线运动

android中如何通过手指在屏幕上滑动来动态画出一条直线?
[问题点数:40分,结帖人baidu_]
本版专家分:200
结帖率 66.67%
CSDN今日推荐
本版专家分:200
本版专家分:200
匿名用户不能发表回复!|
其他相关推荐Android 小球随手指移动,如何绘制出小球移动的轨迹
[问题点数:20分,结帖人zwb]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:4190
本版专家分:1929
本版专家分:6
匿名用户不能发表回复!|
其他相关推荐【关注移动App研发、运营推广、盈利】爱上了IT这一行,因为干上了这一行!...
【Android应用实例之二】跟随手指的小球——自定义View应用
转载请注明出处,原文网址:
作者:张燕广
实现的功能:手指在屏幕上滑动,变幻颜色的小球始终跟随手指移动。
实现的思路:1)自定义View,在onDraw中画圆作为小球;2)重写自定义View的onTouchEvent方法,记录触屏坐标,用新的坐标重新绘制小球。
关键技术点:自定义View应用、触摸事件处理、canvas绘图、Paint应用
第一步:新建一个工程,命名为BallViewDemo,Activity命名为BallActivity。
第二步:编写自定义View类BallView,本例中将BallView作为BallActivity的内部类,BallActivity代码如下:
package com.zyg.customview.
import java.util.R
import android.app.A
import android.content.C
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.os.B
import android.view.D
import android.view.MotionE
import android.view.V
import android.view.W
import android.view.WindowM
public class BallActivity extends Activity {
private int screenW;
//屏幕宽度
private int screenH;
//屏幕高度
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Display dis = this.getWindowManager().getDefaultDisplay();
// 设置全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 获取屏幕宽度
screenW = dis.getWidth();
// 获取屏幕高度
screenH = dis.getHeight();
setContentView(new BallView(this));
//自定义绘图类
class BallView extends View{
//定义画笔
private float cx = 50;
//圆点默认X坐标
private float cy = 50;
//圆点默认Y坐标
private int radius = 20;
//定义颜色数组
private int colorArray[] = {Color.BLACK,Color.BLACK,Color.GREEN,Color.YELLOW, Color.RED};
private int paintColor = colorArray[0]; //定义画笔默认颜色
public BallView(Context context) {
super(context);
//初始化画笔
initPaint();
private void initPaint(){
paint = new Paint();
//设置消除锯齿
paint.setAntiAlias(true);
//设置画笔颜色
paint.setColor(paintColor);
//重写onDraw方法实现绘图操作
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//将屏幕设置为白色
canvas.drawColor(Color.WHITE);
//修正圆点坐标
//随机设置画笔颜色
setPaintRandomColor();
//绘制小圆作为小球
canvas.drawCircle(cx, cy, radius, paint);
//为画笔设置随机颜色
private void setPaintRandomColor(){
Random rand = new Random();
int randomIndex = rand.nextInt(colorArray.length);
paint.setColor(colorArray[randomIndex]);
//修正圆点坐标
private void revise(){
if(cx &= radius){
}else if(cx &= (screenW-radius)){
cx = screenW-
if(cy &= radius){
}else if(cy &= (screenH-radius)){
cy = screenH-
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
cx = (int) event.getX();
cy = (int) event.getY();
// 通知重绘
postInvalidate(); //该方法会调用onDraw方法,重新绘图
case MotionEvent.ACTION_MOVE:
cx = (int) event.getX();
cy = (int) event.getY();
// 通知重绘
postInvalidate();
case MotionEvent.ACTION_UP:
cx = (int) event.getX();
cy = (int) event.getY();
// 通知重绘
postInvalidate();
* 备注1:此处一定要将return super.onTouchEvent(event)修改为return true,原因是:
* 1)父类的onTouchEvent(event)方法可能没有做任何处理,但是返回了false。
* 2)一旦返回false,在该方法中再也不会收到MotionEvent.ACTION_MOVE及MotionEvent.ACTION_UP事件。
//return super.onTouchEvent(event);
main.xml与AndroidManifest.xml未作修改,不再贴出~
备注:代码中的备注1介绍了onTouchEvent方法在实际开发中的一个Bug的解决方法,详见代码。
第三步:运行程序,效果如下:
下一篇将用自定义SurfaceView代替自定义View实现该实例功能,并总结一下自定义View与自定义SurfaceView区别与应用场景。
android中碰撞屏幕边界反弹问题
android练习:碰撞的小球
实现view跟着手指滑动的效果(实现方式一)
Android 自定义View控件,实现跟随手指触摸移动的小球
Android---26---跟随手指移动的小球
OpenGL.ES在Android上的简单实践:9-曲棍球(交互、相交测试)
Android开发——自定义View之实现跟随手指移动的小球
Android-通过自定义View组件实现跟随手指移动的ImageView组件
没有更多推荐了,&>&android 图片跟随手指滑动
android 图片跟随手指滑动
上传大小:22.08MB
android 图片跟随手指滑动
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
热门资源标签
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
android 图片跟随手指滑动
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
dfskhgalshgkajghljgh
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
android 图片跟随手指滑动引言:在图形绘制中,控制一个图形(圆形,椭圆形,矩形,三角形)移动时,其实计算的都是该图形的中心点移动。在绘制过程中,首先计算出中心点,然后根据中心点的位置计算重图形的上下左右位置。我们假设图形左边为lx,图形右边为rx,图形上边为ty,图形下边为by,图形的中心点位置坐标为(cx,cy).手指触摸位置坐标为(x,y)
下面是控制图形移动的具体代码:
GameView.java
package com.yw.mygame.
import android.content.C
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.graphics.RectF;
import android.view.KeyE
import android.view.MotionE
import android.view.V
public class GameView extends View{
private Paint paint = null;
private int x = 0;
private int y = 0;
//椭圆形的left,right,top,buttom初始位置
private float lx = 0.0f;
private float rx = 50.0f;
private float ty = 0.0f;
private float by = 100.0f;
* 椭圆形的中心点坐标(要始终保证中心点的这两个值不变)
private float cx = 25.0f;
private float cy = 50.0f;
public GameView(Context context) {
super(context);
this.setFocusable(true);//允许获取上层焦点
paint = new Paint();
paint.setColor(Color.GREEN);
new GameViewThread().start();
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(x, 0, x, 480, paint);
RectF rectf = new RectF(lx, ty, rx, by);
canvas.drawOval(rectf, paint);
/*class GameViewThread extends Thread{
public void run() {
while(x &= 480){
postInvalidate();
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
public boolean onTouchEvent(MotionEvent event) {
x = (int)event.getX();
//触摸位置
float x = event.getX();
float y = event.getY();
/*lx = cx - (rx-lx)/2;
rx = cx + (rx-lx)/2;
ty = cy - (by-ty)/2;
by = cy + (by-ty)/2;*/
//改变椭圆形位置
//对View进行重新绘制
postInvalidate();
return true;
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
public boolean onKeyUp(int keyCode, KeyEvent event) {
return super.onKeyUp(keyCode, event);
GameViewActivity.java
package com.yw.
import com.yw.mygame.view.GameV
import android.app.A
import android.os.B
public class GameViewActivity extends Activity{
private GameView gameV
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
gameView = new GameView(this);
setContentView(gameView);
阅读(...) 评论()

我要回帖

更多关于 手指指甲前端白色弧线是气血亏虚吗 的文章

 

随机推荐