Android 使用自定义View画圆

Android studio 自定义view 画圆 package day.com.day01_viewall; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.support.annotation.Nullable 阅读详情

创建 CircleView类继承View

package com.gss.jrtt.mycircleview;
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.widget.Toast;

/**
 * Created by lenovo on 2017/9/15.
 */

public class CircleView extends View {

    //画笔
    private Paint mPaint;

    //圆的半径
    private float mRadius = 50f;

    //圆的圆心的x坐标
    private float pointX = mRadius;

    //圆的圆心的Y坐标
    private float pointY = mRadius;

    //控制是否可以移动的变量 true的时候可以移动
    private boolean moveable;


    public CircleView(Context context) {
        super(context, null);
    }

    //自定义veiw在布局中使用,必须实现的一个构造器
    public CircleView(Context context, @Nullable AttributeSet attrs ) {
        super(context, attrs );
        //构造一个paint
        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setAntiAlias(true);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //根据圆心的坐标来绘制圆的位置的,而圆心的坐标,我们触摸屏幕的时候被我们修改了
        canvas.drawCircle(pointX,pointY,mRadius,mPaint);
    }

    //要单点拖动,保证手指在圆上的时候才移动,我们需要判断触摸的位置
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        //手指触摸的x坐标
        float touchX;

        //手指触摸的y坐标
        float touchY;

        //event.getAction()判断事件的类型
        switch (event.getAction()) {

            //按下的事件
            case MotionEvent.ACTION_DOWN:
                touchX = event.getX();
                touchY = event.getY();
                if (touchX > pointX - mRadius && touchX < pointX + mRadius && touchY > pointY - mRadius && touchY < pointY + mRadius) {
                    moveable = true;
                    Toast.makeText(getContext(), "我按下了", Toast.LENGTH_LONG).show();
                } else {
                    moveable = false;
                }
                break;

            //移动的事件
            case MotionEvent.ACTION_MOVE:
                if (moveable) {

                    //重新设置一下圆心的位置, 把我们圆心的位置(pointX,pointY)设置成
                    // 当前触摸的位置(event.getX(),event.getY())
                    pointX = event.getX();
                    pointY = event.getY();

                    //去重新绘制, 会重新走onDraw()方法
                    invalidate();
                }
                break;

            //抬起的事件
            case MotionEvent.ACTION_UP:
                break;
        }
        return true;
    }
}

最后直接在activity_main.xml实现布局就可以了
<?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"
    tools:context="com.gss.jrtt.mycircleview.MainActivity">

//你的包名加上继承View的类名
    <com.gss.jrtt.mycircleview.CircleView
        android:id="@+id/circle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        >
    </com.gss.jrtt.mycircleview.CircleView>

</RelativeLayout>

运行起来看下图,可以随着手指移动


 
Android 用自定义view画圆详解 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar 阅读详情

相关推荐

安卓自定义View基础-绘制点、线、矩形、圆形等

安卓自定义View基础-绘制点、线、矩形、圆形等详情查看http://blog.youkuaiyun.com/z1353095373/article/details/71601293

Android 自定义View之圆形进度条

需求是不停的,会有这些需求:可指定画笔(宽度、颜色等)、可指定动画时长等。这些可以通过创建 Java 接口来设置,但我要学自定义View,就要用attr。未完待续~~Android Canvas的drawText()和文字居中方案。

weixin_44021334的博客 6223

TC387 MCMCAN Message RAM配置详解:Tx Buffer与Rx FIFO地址布局

在嵌入式CAN/CAN FD通信系统中,缓冲区和FIFO是数据收发的核心机制,而AURIX TC3xx系列单片机将这一机制集成在了MCMCAN模块专用的Message RAM中。这是一块由CAN控制器独占的内存区域,开发人员需要按照寄存器规范手动划分Tx Buffer、Rx FIFO、过滤元素等子区间。合理的RAM布局能确保不同功能区域互不重叠、有序排列,避免数据覆盖与错帧。通过掌握TXBC、RXF0C等配置寄存器的字段含义,结合实用的地址布局表,可以显著降低多节点CAN通信的调试成本。本内容面向使用TC3

weixin_34226182的博客 221

Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)

Android 绘图基础:Canvas画布——自定义View基础(绘制表盘、矩形、圆形、弧、渐变)

WULILL的博客 4932

PaddleOCR 3.x 最新版使用教程(2025)——从安装到实战身份证识别,一步到位!

本文针对PaddleOCR 3.x大版本更新带来的参数变化和兼容性问题,提供从环境配置到实际应用的全流程解决方案。

qq_58607032的博客 9787

用VSCode远程开发Jetson小车:告别Jupyter,在本地IDE高效调试Rosmaster Python程序

本文详细介绍了如何利用VSCode的Remote-SSH扩展在本地IDE中高效开发Jetson小车的Rosmaster Python程序。通过配置远程开发环境、调试技巧和项目管理方法,开发者可以告别Jupyter Notebook的碎片化编码,实现完整的机器人控制程序开发,显著提升工作效率。

weixin_30652491的博客 476

Android 自定义View之圆形旋钮

自定义View

weixin_42086951的博客 1296

Apache Kafka Connect任意文件读取漏洞(CVE-2025-27817)

由于Apache Kafka客户端未对用户输入进行严格验证和限制,未经身份验证的攻击者可通过构造恶意配置读取环境变量或磁盘任意内容,或向非预期位置发送请求,提升REST API的文件系统/环境/URL访问权限。(CVE-2025-27817)

iSee857的博客 2026

自定义View之实现一个简单的圆

自定义View之实现一个简单的圆

xiaokang666的博客 1095

2025.05.28【读书笔记】|如何用SILVA和RFAM数据库高效去除rRNA污染

摘要: 在Ribo-seq等测序数据分析中,清除rRNA污染对结果准确性至关重要。仅使用SILVA数据库可能遗漏5S rRNA污染,建议结合RFAM数据库(特别是RF00001家族)全面清除。操作要点包括:下载两库序列、将RNA碱基U替换为DNA的T、合并序列建立索引,使用bowtie2过滤rRNA reads。注意U/T转换是关键,否则会导致比对失败。该方法能有效提升数据清洁度,为后续分析奠定基础。

980

2025华为OD机试真题+全流程解析+备考攻略+面试技巧+机考经验分享+Java/python/JS/C++/C语言实现

本专栏包含华为 OD 机试最新的 A卷+B卷+C卷+D卷+E卷题库,为全网最全、最新题库,500+真题。每一篇文章都包含了题目描述、解题思路以及实现代码。同时免费提供最新的在线OJ 刷题系统。已有上百名小伙伴通过刷真题题库通过了华为od机考,拒绝一切形式的代考,替考行为!!!以下是本专栏详细内容介绍:本专栏提供在线OJ刷题系统:OJ题库OJ系统注册&使用教程:OJ使用教程其他专栏以及答疑介绍:50+ 高频面试手撕真题,已有上百位小伙伴高频认证。1:机试没过,半年的冷冻期。2:已经订阅过我专栏的同学,推荐新人

MISAYAONE的博客 2225

自定义View画圆,画扇形,进度条

自定义View画圆,画扇形 创建一个类继承自View public class lhjclass extends View { public lhjclass(Context context) { super(context); } public lhjclass(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public lhj

Lee_black_eggs的博客 273

开源的预测气象大模型与数据获取/可视化

「开源气象大模型与数据获取指南」摘要: 当前主流AI气象模型(如ECMWF的AIFS、DeepMind的GraphCast、华为Pangu等)主要基于ERA5/HRES数据训练。开源资源可通过ECMWF OpenData、GitHub仓库及Google Cloud获取,其中AIFS数据采用CCBY-4.0许可可商用,其他模型多有限制性许可。典型应用流程包括:1)通过Python包获取实时预报数据;2)加载预训练权重进行推理;3)使用xarray/cartopy或Zarr进行可视化。训练数据可从CDS下载ER

专注AI大模型,软件混淆,授权 794

自定义View(二)——文字滚动、动态画圆

反反复复

可乐淘的专栏 785

避坑指南:新手爬百度图片3个致命错,改完批量保存本地(亲测有效)

新手爬百度图片的核心是“绕开静态HTML,抓准API接口+处理反爬+提取原图”,改完本文提到的3个核心错,就能稳定批量保存高清图片。这套思路可复用在其他图片网站(如必应图片、360图片),只需修改API接口和参数即可。如果想进一步优化,可添加代理IP池、多线程下载(新手不建议,容易触发反爬)、图片去重等功能!

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1586

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android 自定义View入门学习(一):自定义一个简单的时钟

今天我们来一起学习一下怎么通过自定义view画一个时钟出来。 自定义view是一个比较有意思,同时难度也是很高的工作。现在市面上有很多动画效果很棒的页面,无非都是一步一步从最基础的学起的,正所谓万丈高楼平地起。所以,这篇文章很适合新手入门练习哦。 首先先贴上最终的效果图吧,这样到时看代码不会特别抽象。 下面我说一下,实现的步骤是什么吧。 画一个外圆(确定圆心位置,然后给一个...

liufulin520328的博客 449

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

android studio画圆,Android studio 自定义view 画圆

package day.com.day01_viewall;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.support.annotation.Nullable;impor...

weixin_29256771的博客 966

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

android canvas_Android 自定义View篇(二)Canvas详解

作者:宋者为王连接:https://cnblogs.com/andy-songwei/p/10960012.html前言 上一篇讲 View 的绘制流程中讲到过,最后一步是 draw 流程,在这个过程中,子 view 需要重写 onDraw 方法来画出自己的内容。在自定义 View 绘制自身内容的时候,系统提供了 3 个非常重要的类来帮助开发者画各种炫酷的图形:Canvas、Paint、...

weixin_39815456的博客 721

指纹识别和自定义View

权限:自定义View自动画圆自定义属性:

yc_2001的博客 203

Android自定义View基础

就像平时一样画图需要纸和笔 android中Paint类就是画笔,而Canvas类就是纸(画布) 所以可以得知 笔的属性就是在paint类中设置 画出的形状就会在 canvas中进行绘制 首先实现一个自定义动画–画圆: package com.example.adminstator.myviewdesign.PaintBasic; import android.conte...

DLUT_WJX的博客 238

android_studio的canvas画圆

1.怎样设置代码 package com.example.rk1130; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import ...

qq_43603372的博客 1662

Android自定义控件(十二)——自定义属性及应用

本文目录如何自定义属性format取值类型引入自定义属性代码中获取自定义属性自定义属性画圆 如何自定义属性 我们经常使用XML引入各种控件,比如TextView,Button等,使用过程中,我们通过设置各种属性值,让控件变的多姿多彩,比如我们使用android:layout_width定义控件的宽度,使用android:layout_height定义控件的高度。那么现在我有一个需求,我想自己定义个...

李元静 2万+

Android画布画圆,android_studio的canvas画圆

1.怎样设置代码package com.example.rk1130;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android...

weixin_32101285的博客 432

Android自定义view--雷达扫描

雷达扫描view,先看下整体效果: 项目地址:https://github.com/buder-cp/CustomView/blob/master/buder_DN_view/buderdn03/src/main/java/com/test/buderdn03/RadarGradientView.java 准备两个画笔,一个是一圈圈的圆圈,另一个是扫描画笔; 动画实现 这里实现动画的...

王温暖的博客 992

android 圆圈百分比,Android自定义View圆形百分比控件(一)

做一个自定义view的小练习,效果如下只需要画一个圆、一个圆弧、一个百分比文本,添加一个点击事件,传入百分比重绘1、在res/values文件夹下新建attrs.xml文件,编写自定义属性:2、新建circlepercentview继承view,重写构造方法:public circlepercentview(context context) {this(context, null);}public...

weixin_39607937的博客 336

自定义View画圆环(嵌套圆环)

首先创建一个RingView.javapublic class RingView extends View{ //声明变量 private Paint paint; private Context context; public RingView(Context context) { super(context); } public Ring

qq_40332858的博客 1267
下一篇: 使用RecyclerView展示checkBox全选反选
老伞czx
博客等级 码龄9年 8粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值