Android自定义View画圆功能

发布时间 - 2026-01-11 03:29:28    点击率:

本文实例为大家分享了Android自定义View画圆的具体代码,供大家参考,具体内容如下

引入布局

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:id="@+id/activity_main" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
 android:paddingBottom="@dimen/activity_vertical_margin" 
 android:paddingLeft="@dimen/activity_horizontal_margin" 
 android:paddingRight="@dimen/activity_horizontal_margin" 
 android:paddingTop="@dimen/activity_vertical_margin" 
 tools:context="com.bwie.test.xuejian1508a20170928.MainActivity"> 
 
 <com.bwie.test.xuejian1508a20170928.ViView 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" 
  /> 
</RelativeLayout>

自定义View的java类,继承View

public class ViView extends View{ 
 Paint paint; 
 Context context; 
 //构造方法 
 public ViView(Context context) { 
 super(context); 
 } 
 
 public ViView(Context context, AttributeSet attrs) { 
 super(context, attrs); 
 } 
 
 public ViView(Context context, AttributeSet attrs, int defStyleAttr) { 
 super(context, attrs, defStyleAttr); 
 } 
 
 public ViView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
 super(context, attrs, defStyleAttr, defStyleRes); 
 this.context=context; 
 } 
 
 @Override 
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
 super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
 } 
 
 @Override 
 protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
 super.onLayout(changed, left, top, right, bottom); 
 
 } 
 
 /*绘图*/ 
 @Override 
 protected void onDraw(Canvas canvas) { 
 super.onDraw(canvas); 
 //得到屏幕宽高 
 int width = getWidth(); 
 int radius = width - 450/2; 
 int height = getHeight(); 
// 创建画笔 
 Paint paint1 = new Paint(); 
 Paint paint2 = new Paint(); 
 Paint paint3= new Paint(); 
// 消除锯齿 
 paint1.setAntiAlias(true); 
 paint2.setAntiAlias(true); 
 paint3.setAntiAlias(true); 
 //画笔颜色 
 paint1.setColor(Color.RED); 
 paint2.setColor(Color.WHITE); 
 paint3.setColor(Color.BLUE); 
// 画圆。确定位置 
// canvas.drawRect(100,100,width/2,height/2,paint1); 
// canvas.drawCircle(100,100,100,paint1); 
// canvas.drawCircle(250,250,200,paint2); 
// canvas.drawCircle(500,500,300,paint3); 
 //设置圆环形状和大小 
 RectF oval = new RectF(width-radius,width-radius,width+radius,width+radius); 
 paint1.setStrokeWidth(450); 
 canvas.drawArc(oval,-90,90,false,paint1); 
 
 canvas.drawCircle(width/2,height/2,450,paint1); 
 canvas.drawCircle(width/2,height/2,300,paint2); 
 canvas.drawCircle(width/2,height/2,200,paint3); 
 } 
 
 @Override 
 public boolean onTouchEvent(MotionEvent event) { 
 return super.onTouchEvent(event); 
 } 
} 

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # View  # 画圆  # 利用Android画圆弧canvas.drawArc()实例详解  # Android自定view画圆效果  # Android自定义组件跟随自己手指主动画圆  # Android项目实战手把手教你画圆形水波纹loadingview  # Android圆形控件实现画圆效果  # 自定义  # 大家分享  # 具体内容  # 大家多多  # paddingRight  # activity_horizontal_margin  # paddingLeft  # bwie  # context  # paddingTop  # activity_vertical_margin  # match_parent  # layout_width  # activity_main  # dimen  # paddingBottom  # layout_height 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  浅析上传头像示例及其注意事项  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何实现一对一模型关联?(Eloquent示例)  如何在IIS中新建站点并解决端口绑定冲突?  js实现点击每个li节点,都弹出其文本值及修改  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  如何在Windows环境下新建FTP站点并设置权限?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  JS碰撞运动实现方法详解  奇安信“盘古石”团队突破 iOS 26.1 提权  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  如何正确选择百度移动适配建站域名?  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  如何彻底删除建站之星生成的Banner?  如何在建站宝盒中设置产品搜索功能?  什么是javascript作用域_全局和局部作用域有什么区别?  如何在IIS管理器中快速创建并配置网站?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel定时任务怎么设置_Laravel Crontab调度器配置  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  简单实现Android文件上传  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  如何快速搭建安全的FTP站点?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  如何快速选择适合个人网站的云服务器配置?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  公司门户网站制作流程,华为官网怎么做?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Linux系统命令中tree命令详解  如何快速上传建站程序避免常见错误?  使用spring连接及操作mongodb3.0实例  香港服务器WordPress建站指南:SEO优化与高效部署策略  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何批量查询域名的建站时间记录?  如何快速搭建高效WAP手机网站?  JavaScript常见的五种数组去重的方式  Laravel如何配置任务调度?(Cron Job示例)  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解