Android实现随手指移动小球
作者:Gorky_19 时间:2021-06-03 23:38:46
本文实例为大家分享了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,移动小球
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
解析Spring Boot内嵌tomcat关于getServletContext().getRealPath获取得到临时路径的问题
2023-08-28 07:44:11
![](https://img.aspxhome.com/file/2023/4/99894_0s.png)
java基础中异常及包归纳整理
2022-11-08 17:46:02
![](https://img.aspxhome.com/file/2023/2/115892_0s.gif)
浅谈Java slf4j日志简单理解
2021-07-07 15:49:15
Android SDK Manager解决更新时的问题 :Failed to fetch URL...
2023-03-17 23:23:36
C# Socket数据接收的三种实现方式
2022-04-17 17:22:01
![](https://img.aspxhome.com/file/2023/7/98157_0s.png)
Android 开发使用PopupWindow实现加载等待界面功能示例
2023-03-26 07:51:36
![](https://img.aspxhome.com/file/2023/6/100646_0s.gif)
C#中Params的用法
2023-06-03 22:23:27
C#设计模式之策略模式
2023-08-08 21:00:11
![](https://img.aspxhome.com/file/2023/3/83223_0s.jpg)
解决logback的日志文件路径问题
2023-06-13 10:48:09
![](https://img.aspxhome.com/file/2023/9/63759_0s.jpg)
基于AForge实现C#摄像头视频录制功能
2023-08-25 02:21:26
![](https://img.aspxhome.com/file/2023/6/89746_0s.png)
Java如何实现定时任务
2021-11-07 02:57:38
Java基础教程之接口的继承与抽象类
2023-11-06 20:47:22
![](https://img.aspxhome.com/file/2023/5/58335_0s.jpg)
cmd中javac和java使用及注意事项详解
2022-03-25 10:37:36
![](https://img.aspxhome.com/file/2023/5/101925_0s.png)
基于Android6.0实现弹出Window提示框
2023-01-12 05:23:25
![](https://img.aspxhome.com/file/2023/5/106035_0s.jpg)
如何利用Spring把元素解析成BeanDefinition对象
2023-11-23 05:17:16
![](https://img.aspxhome.com/file/2023/9/59939_0s.png)
Android在自定义类中实现自定义监听器方式
2023-06-17 08:37:34
winform 实现选择文件和选择文件夹对话框的简单实例
2022-02-21 07:05:12
基于Spring概念模型:PathMatcher 路径匹配器
2022-08-20 12:52:38
Android入门教程之ListView的具体使用详解
2022-02-12 06:35:59
![](https://img.aspxhome.com/file/2023/5/122235_0s.jpg)
springboot vue组件开发实现接口断言功能
2023-11-12 10:26:53
![](https://img.aspxhome.com/file/2023/9/61869_0s.gif)