Android编程绘图操作之弧形绘制方法示例
发布时间 - 2026-01-11 02:54:28 点击率:次本文实例讲述了Android编程绘图操作之弧形绘制方法。分享给大家供大家参考,具体如下:
/**
* 绘制弧形图案
* @description:
* @author ldm
* @date 2016-4-25 下午4:37:01
*/
public class ArcsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}
/**
* 自定义绘制图案的View
*
* @description:
* @author ldm
* @date 2016-4-25 下午4:19:40
*/
private static class SampleView extends View {
// 画圆形图案的画笔数组
private Paint[] mPaints;
// 画矩形的画笔
private Paint mFramePaint;
// 是否以矩形中心画图
private boolean[] mUseCenters;
// 矩形框数组
private RectF[] mOvals;
// 上面较大的矩形框
private RectF mBigOval;
// 画圆弧起点
private float mStart;
// 画圆弧角度
private float mSweep;
// 画大图形对应角标index
private int mBigIndex;
// 角度变化增量
private static final float ANGLE_STEP = 3;
// 初始角度
private static final float START_ANGLE = 15;
public SampleView(Context context) {
super(context);
mPaints = new Paint[4];
mUseCenters = new boolean[4];
mOvals = new RectF[4];
mPaints[0] = new Paint();
mPaints[0].setAntiAlias(true);// 设置抗紧钜齿
mPaints[0].setStyle(Paint.Style.FILL);// 设置画笔填充风格
mPaints[0].setColor(0x88FF0000);// 设置颜色
mUseCenters[0] = false;
mPaints[1] = new Paint(mPaints[0]);
mPaints[1].setColor(0x8800FF00);
mUseCenters[1] = true;
mPaints[2] = new Paint(mPaints[0]);
mPaints[2].setStyle(Paint.Style.STROKE);// 设置画笔空心风格
mPaints[2].setStrokeWidth(4);// 设置画笔宽度
mPaints[2].setColor(0x880000FF);// 设置颜色
mUseCenters[2] = false;
mPaints[3] = new Paint(mPaints[2]);
mPaints[3].setColor(0x88888888);
mUseCenters[3] = true;
mBigOval = new RectF(40, 10, 280, 250);// 初始化较大的矩形
mOvals[0] = new RectF(10, 270, 70, 330);// 初始化4个较小矩形
mOvals[1] = new RectF(90, 270, 150, 330);
mOvals[2] = new RectF(170, 270, 230, 330);
mOvals[3] = new RectF(250, 270, 310, 330);
mFramePaint = new Paint();
mFramePaint.setAntiAlias(true);
mFramePaint.setStyle(Paint.Style.STROKE);
mFramePaint.setStrokeWidth(0);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
// 画大矩形
canvas.drawRect(mBigOval, mFramePaint);
// 在大矩形分别 画4个圆弧图形
canvas.drawArc(mBigOval, mStart, mSweep, mUseCenters[mBigIndex],
mPaints[mBigIndex]);
for (int i = 0; i < 4; i++) {
canvas.drawRect(mOvals[i], mFramePaint);// 画四个小矩形
canvas.drawArc(mOvals[i], mStart, mSweep, mUseCenters[i],// 在四个小矩形中分别画圆弧
mPaints[i]);
}
mSweep += ANGLE_STEP;// 弧度改变
if (mSweep > 360) {// 弧度控制
mSweep -= 360;
mStart += START_ANGLE;
if (mStart >= 360) {
mStart -= 360;
}
mBigIndex = (mBigIndex + 1) % mOvals.length;
}
invalidate();
}
}
}
静态效果如图:
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
# Android
# 弧形
# 绘制
# android图像绘制(七)ClipRect局部绘图/切割原图绘制总结
# Android绘图之Paint的使用方法详解
# Android 通过onDraw实现在View中绘图操作的示例
# Android编程之OpenGL绘图技巧总结
# Android自定义View绘图实现渐隐动画
# 简单实现Android绘图板
# Android UI效果之绘图篇(一)
# Android绘图常用方法汇总
# Android编程之绘图canvas基本用法示例
# Android绘图技巧使用详解
# 进阶
# 下午
# 相关内容
# 矩形框
# 感兴趣
# 给大家
# 自定义
# 如图
# 较小
# 更多关于
# 解决方法
# 所述
# 图像处理
# 程序设计
# 讲述了
# View
# length
# private
# SampleView
# Bundle
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Python自动化办公教程_ExcelWordPDF批量处理案例
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
如何基于云服务器快速搭建网站及云盘系统?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
网站建设整体流程解析,建站其实很容易!
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
如何在新浪SAE免费搭建个人博客?
浅析上传头像示例及其注意事项
Laravel安装步骤详细教程_Laravel环境搭建指南
长沙做网站要多少钱,长沙国安网络怎么样?
利用JavaScript实现拖拽改变元素大小
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
Laravel如何实现事件和监听器?(Event & Listener实战)
如何快速选择适合个人网站的云服务器配置?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
大学网站设计制作软件有哪些,如何将网站制作成自己app?
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
jquery插件bootstrapValidator表单验证详解
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
深圳网站制作的公司有哪些,dido官方网站?
Laravel如何使用Collections进行数据处理?(实用方法示例)
手机网站制作与建设方案,手机网站如何建设?
Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑
Laravel怎么使用Intervention Image库处理图片上传和缩放
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
如何用景安虚拟主机手机版绑定域名建站?
JS去除重复并统计数量的实现方法
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
微信推文制作网站有哪些,怎么做微信推文,急?
Laravel怎么使用artisan命令缓存配置和视图
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
香港服务器部署网站为何提示未备案?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
BootStrap整体框架之基础布局组件
音乐网站服务器如何优化API响应速度?
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
javascript事件捕获机制【深入分析IE和DOM中的事件模型】

