1.画圆类


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;/*****/
public class DrawCircle extends View {private Paint paint;private float x=300,y=300,oy,ox;public DrawCircle(Context context) {super(context);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paint=new Paint();paint.setColor(Color.RED);paint.setAntiAlias(true);//画笔设置抗拒是canvas.drawCircle(x,y,80,paint);//画圆ox=x;oy=y;}public void setXY(float q,float w){this.x=q;this.y=w;invalidate();//刷新}public Float[] getOldValues(){return  new Float[]{ox,oy};}
}

2.activity

package com.example.catchme;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;import java.util.Random;public class MainActivity extends AppCompatActivity {private int w,h;private DrawCircle drawCircle;private RelativeLayout layout;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);WindowManager wm= (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);//屏幕的宽和高w=wm.getDefaultDisplay().getWidth();h=wm.getDefaultDisplay().getHeight();layout=(RelativeLayout) findViewById(R.id.layouymain);drawCircle=new DrawCircle(this);drawCircle.setMinimumWidth(w);drawCircle.setMinimumHeight(h);drawCircle.invalidate();//刷新drawCircle.setBackgroundResource(R.mipmap.ic_launcher_round);//设置背景layout.addView(drawCircle);}@Overridepublic boolean onTouchEvent(MotionEvent event) {
//        MotionEvent.ACTION_DOWN手势落下if(MotionEvent.ACTION_DOWN==event.getAction()){float x=event.getX();float y=event.getY();//判断  手指点的是否在园内if(drawCircle.getOldValues()[0]+80>x&&drawCircle.getOldValues()[0]-80<=x&&drawCircle.getOldValues()[1]+80>y&&drawCircle.getOldValues()[1]-80<=y){Random random=new Random();int sendX,sendY;do {sendX=random.nextInt((w-80));sendY=random.nextInt((h-80));}while (sendX<80&&sendY<200&&(drawCircle.getOldValues()[1]+80)>sendX&&sendY>(drawCircle.getOldValues()[1]+80));drawCircle.setXY(sendX,sendY);}}return super.onTouchEvent(event);}public void onlcbtn(View view){}
}

3.界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/layouymain"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="开始抓"android:onClick="onlcbtn"></Button></RelativeLayout>

CatchMe(点不到我canvas+自定义view).rar-互联网文档类资源-CSDN下载

android-canvas-自定义视图-点击切换圆位置相关推荐

  1. Android中自定义视图View

    标签: 前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用 ...

  2. Android中自定义视图View之---前奏篇

    前言 好长时间没写blog了,心里感觉有点空荡荡的,今天有时间就来写一个关于自定义视图的的blog吧.关于这篇blog,网上已经有很多案例了,其实没什么难度的.但是我们在开发的过程中有时候会用到一些自 ...

  3. Android Studio自定义视图无法预览

    Android Studio自定义视图没有办法预览 我想大家应该都和我一样,如果看到布局的编码的时候如果右边能够非常直观地显示出对应的视图,心里会非常舒心,像官方提供的tools命名空间就是为了这个目 ...

  4. android切换字体颜色,Android开发实现按钮点击切换背景并修改文字颜色的方法

    本文实例讲述了Android开发实现按钮点击切换背景并修改文字颜色的方法.分享给大家供大家参考,具体如下: 其实原理很简单,用到的是selector,用来设置android:background和an ...

  5. 【eoe教程】Android中自定义视图的绘制方法

    原文链接 :http://android.eoe.cn/topic/ui 自定义视图最重要的部分是它的外观.你可以根据应用的需求简单或复杂的实现它. 这个教程包含了最常见的操作. 重写onDraw() ...

  6. Android TextView设置ClickableSpan 点击结尾空白位置也响应点击的问题

    解决办法,在后边紧接着追加一个0宽度字符: builder.append("\u200b"); 相关知识: "\u200b" 为 Unicode Charact ...

  7. android 自定义绘画,【整理】Android 自定义视图之画图

    Android 自定义视图之画图 首先简单的一个画矩形的例子 public class DrawView extends View { public DrawView(Context context) ...

  8. 【Android】自定义View、画布Canvas与画笔Paint

    安卓自定义View其实很简单.这个View可以像<[Android]利用Java代码布局,按钮添加点击事件>(点击打开链接)一样,利用Java代码生成一系列的组件.也可以配合画布Canva ...

  9. android canvas绘制圆角_Android自定义View撸一个渐变的温度指示器(TmepView)

    秦子帅明确目标,每天进步一点点..... 作者 |  andy 地址 |  blog.csdn.net/Andy_l1/article/details/82910061 1.概述 自定义View对需要 ...

最新文章

  1. STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
  2. 天天用Synchronized,底层原理是个啥?
  3. Scala入门到精通——第二十五节 提取器(Extractor)
  4. 吴裕雄 19-Mysql 连接的使用
  5. 【华为云实战开发】13.如何在云端快速搭建python网站
  6. 趣图:21 副 GIF 动图让你了解各种数学概念
  7. 君が呼ぶ メギドの丘で 美吉特之丘的呼唤 游戏感想
  8. 人工智能数学基础--概率与统计9:概率运算、加法公理、事件的独立性、概率乘法定理、条件概率、全概率公式以及贝叶斯公式
  9. 百度云网页视频加速播放
  10. 重启网卡提示Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
  11. 2021年海洋工程装备行业发展研究报告
  12. cpu倍频模式怎么调_CPU超频详细设置图文教程 CPU怎么超频
  13. 发票查验API,批量查验发票真伪
  14. 对视频声音,音频进行音量标准化和响度均化,归一化的标准,原理以及具体操作
  15. OSChina 周日乱弹 ——你除了顺从,还有别的办法么?
  16. 十一、PL/SQL过程
  17. 江苏计算机报名时间2021年上半年,关于2021年春季江苏省计算机等级考试报名的通知...
  18. 新增网络与信息安全​专硕!优秀双非重庆邮电大学
  19. 清华文康活动特刊:多重活动分享贴,不来你就OUT啦
  20. 动漫鬼刀MAC高清动态桌面壁纸

热门文章

  1. 逆风而行!从考研失败到收获到自己满意的后端开发Offer,分享一下自己的经历!
  2. 枚举到底是个什么鬼类型?
  3. Eplan如何修改PLC或IO模块的地址
  4. OpenStack快照分析:(一)从镜像启动的云主机离线快照分析
  5. 亚马逊无人机送货:过程心酸操碎心,但结果令人欣慰
  6. 用Python给微信好友自动发送祝福语
  7. HoloCubic小电视
  8. react proptypes
  9. fast-poster通用海报生成器V1.3.3
  10. php显示中文乱码怎么解决,PHP汉字出现乱码如何解决?