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,移动小球
0
投稿
猜你喜欢
java二维数组遍历的2种代码
2022-05-03 08:52:50
Java深入浅出数组的定义与使用上篇
2022-03-10 22:32:58
Java操作Redis详细介绍
2023-07-27 06:53:04
C#利用DesignSurface如何实现简单的窗体设计器
2023-10-18 18:43:28
浅谈Java中Map和Set之间的关系(及Map.Entry)
2023-08-25 02:23:48
C#属性(Attribute)用法实例解析
2021-09-20 16:01:29
JFileChooser实现对选定文件夹内图片自动播放和暂停播放实例代码
2021-10-02 15:41:18
java自定义切面增强方式(关于自定义注解aop)
2022-05-30 15:16:58
Android实现屏幕旋转四个方向准确监听
2022-06-07 08:57:32
java 使用异常的好处总结
2023-11-29 13:35:49
Android实现沉浸式状态栏功能
2022-10-25 23:19:36
Android 实现滑动的六种方式
2021-12-05 08:27:48
Java解压和压缩带密码的zip文件过程详解
2023-07-16 15:32:16
Android AIDL实现两个APP间的跨进程通信实例
2022-03-29 08:37:54
C#使用Data Annotations进行手动数据验证
2022-11-19 11:23:15
Android7.0版本影响开发的改进分析
2022-06-06 03:40:37
IntelliJ IDEA使用git初始化仓库的使用方法
2022-05-24 12:37:26
Android UI设计与开发之仿人人网V5.9.2最新版引导界面
2022-10-10 17:34:16
Android异步回调中的UI同步性问题分析
2022-07-31 14:10:51
java实现鲜花销售系统
2023-08-29 20:23:42