Android实现随手指移动小球
作者:Gorky_19 发布时间:2021-06-03 23:38:46
标签:Android,移动小球
本文实例为大家分享了Android实现随手指移动小球的具体代码,供大家参考,具体内容如下
这个随手指移动小球,首先要使用paint画笔在canvas画布画出一个圆,然后重写OnTouchEvent(),进行小球的坐标的获取和小球的重新绘画。
package com.bwei.self_view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
/**
* Created by ZhangTAO on 2017/11/2.
*/
public class MyView extends View{
// 初始化圆的位置
public int x = 200;
public int y = 600;
Context context;
public MyView(Context context) {
super(context,null);
this.context = context;
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs,0);
this.context = context;
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
this.context = context;
}
private void initView() {
setBackgroundColor(Color.BLUE);
}
/**
* @canvas 画布 paint 画笔
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//建立一根画笔
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
paint.setFakeBoldText(true);
//画布
canvas.drawCircle(DipUtils.dip(getContext(),x),
DipUtils.dip(getContext(),y),
DipUtils.dip(getContext(),50),paint);
}
/**
* 进行设置touch移动
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN :
case MotionEvent.ACTION_MOVE :
case MotionEvent.ACTION_UP :
//获取当前触摸点的x,y坐标
x = (int) event.getX();
y = (int) event.getY();
invalidate();
break;
}
// 获取屏幕的宽高
WindowManager manger = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
int width = manger.getDefaultDisplay().getWidth();
int height = manger.getDefaultDisplay().getHeight();
//重新绘制圆 ,控制小球不会被移除屏幕
if(x>=20 && y>=20 && x<=width-20 && y<height-20) {
invalidate();
}
//自己处理触摸事件
return true;
//修改当前的坐标
// this.x =(int) event.getX();
// this.y =(int) event.getY();
//重绘小球
// this.invalidate();
// return true;
}
}
效果图:
来源:https://blog.csdn.net/Gorky_19/article/details/78421547


猜你喜欢
- Android本身已经提供了ProgressDialog进度等待框,使用该Dialog,我们可以为用户提供更好的体验:在网络请求时,弹出此框
- 1、maven是什么,为什么存在?项目结构是什么样子,怎么定位jar官方网站说了好多,整的多复杂一样,简单说:maven是一个管理包的工具。
- 本文实例讲述了C#动态调用事件的方法。一般来说,传统的思路是,通过Reflection.EventInfo获得事件的信息,然后使用GetRa
- 原装的Android标题栏配色比较单调,就是黑色的一坨,现在假设你的软件需要独自添加标题栏,这样不仅美观而且可以将进度条等加进去,如何实现:
- 一、导论java技术体系中所提到的内存自动化管理归根结底就是内存的分配与回收两个问题,之前已经和大家谈过java回收的相关知识,今天来和大家
- 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某
- DES一共就有4个参数参与运作:明文、密文、密钥、向量。为了初学者容易理解,可以把4个参数的关系写成:密文=明文+密钥+向量;明文=密文-密
- 在WPF中,TreeView默认情况是不支持右键选定的,也就是说,当右键点击某节点时,是无法选中该节点的。当我们想在TreeViewItem
- 当需要将一个对象输出到显示器时,通常要调用他的toString()方法,将对象的内容转换为字符串.java中的所有类默认都有一个toStri
- 使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。前言:Spring d
- 本文是基于PDF文档转PNG图片,然后进行图片拼接,拼接后的图片转为base64字符串,然后拼接html文档写入html文件实现PDF文档转
- 关于[Cannot determine value type from string ‘xxx’]的
- 简介说明本文用实例介绍stream的使用。JDK8新增了Stream(流操作) 处理集合的数据,可执行查找、过滤和映射数据等操作。使用Str
- 前言上节在谈论Bean的实例化过程时,在说明实例化后阶段时只是粗略地看了一下populateBean,并未展开分析。本节接着populate
- 废话不多说了,直接给大家贴代码了,具体代码如下所述:/*** 把一个View的对象转换成bitmap*/private Bitmap get
- 二叉树的分类(按存储结构)树的分类(按存储结构) &nbs
- 本文实例讲述了C#实现TCP连接信息统计的方法。分享给大家供大家参考。具体实现方法如下:using System;using System.
- Java调用cmd命令,并输出显示信息:package com.anxin.cmd.test; import java.io.Buffere
- 1.数据数据(Data)是外部世界信息的载体, 是能够被计算机识别,加工,存储的。在现实生活中也就是我们的产品原材料。计算机中的数据包括数值
- 一、引言90坦克大战,很经典的一款游戏,当年与小伙伴一人一个手柄,搬上小板凳坐在电视机前,身体时不时跟随手柄摇晃着,时而表情严肃、眉头紧锁,