android编程绘图,Android编程绘图操作之弧形绘制方法示例

本文实例讲述了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();

}

}

}

静态效果如图:

3ff5bddfee37f66022a7884c8be2d0ae.png

希望本文所述对大家Android程序设计有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS多个对象添加到一个对象中

var obj1 {"qq":10}; var obj2{"mm":2,"nn":3}; var obj3{"xx":1,"yy":5}; obj1.field1 obj2; obj1.field2 obj3; console.log(obj1)转载于:https://www.cnblogs.com/thiaoqueen/p/7111697.html

Caffe cuDNN

Ref: http://jetsonhacks.com/2015/01/20/nvidia-jetson-tk1-cudnn-install-caffe-example/ 转载于:https://www.cnblogs.com/nn0p/p/4351026.html

linux平台之如何查看svn账号

1、平台 在ubuntu 2、如何查看svn账号 1)、 到svn.simple目录 cd ~/.subversion/auth/svn.simple 2&#xff09;、然后在svn.simple目录下查看文件 这个目录很多文件&#xff0c;我们随便cat/vim一下就可以看到了

C#将dataGridView中显示的数据导出到Excel(大数据量超实用版)

开发中很多情况下需要将dataGridView控件中显示的数据结果以Excel或者Word的形式导出来,本例就来实现这个功能。由于从数据库中查找出某些数据列可能没必要显示出来,在dataGridView中将对应的列隐藏了,这时导出时就会将隐藏的列导出来,显然不是我们所预期的。做法是先将dat…

BeetleX实现MessagePack和Protobuf消息控制器调用websocket服务详解

最近有用户问如何使用BeetleX封装一个基于Protobuf格式的websocket服务并支持控制器调用&#xff1b;其实BeetleX.FastHttpApi是支持Websocket服务和自定义数据格式的&#xff0c;但需要对组件有一定了解的情况才能进行扩展&#xff1b;接下来通过封装一个支持Protobuf和Messag…

vue 获取url地址的参数_2020年 vue常见面试问题总结(干货)!

1.什么是mvvm模式&#xff0c;谈谈你的理解&#xff1f; MVVM - Model View ViewModel&#xff0c;数据&#xff0c;视图&#xff0c;视图模型view 可以通过 事件绑定 的方式影响 model&#xff0c;model 可以通过 数据绑定 的形式影响到view&#xff0c;viewModel是把 model 和…

CSS 定位之绝对与相对

static,relative,absolute,fixed含义 static(静态定位):元素框正常生成。块级元素生成一个矩形框&#xff0c;作为文档流的的一部分&#xff0c;行内元素则会常见一个或多个行框&#xff0c;至于其父元素中。默认值。没有定位&#xff0c;元素出现在正常的流中&#xff08;忽略…

理解云计算备份与灾难恢复

如今&#xff0c;云计算和用户生态系统有一个新的转变&#xff0c;IT的转化创造了一个独特的“数据需求”环境。这意味着有放在这些工作负荷的详细的信息工作和更大的恢复需求。IT管理人员负责管理他们的备份系统&#xff0c;并必须准备好他们的灾难恢复策略。适当的恢复方法是…

SQL Server CLR 集成简介

公共语言运行库 (CLR) 是 Microsoft .NET Framework 的核心,为所有 .NET Framework 代码提供执行环境。 在 CLR 中运行的代码称为托管代码。 CLR 提供执行程序所需的各种函数和服务,包括实时 (JIT) 编译、分配和管理内存、强制类型安全性、异常处理、线程管理和安全性。 …

安卓 收起软件盘

public static void collapseSoftInputMethod(Context context, View v) {if (v ! null) {InputMethodManager imm (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(v.getWindowToken(), 0);}}传入上下文&#xff…

IOS学习笔记之十七 (NSDate、NSDateFormatter、NSCalendar、NSDateComponents、NSTimer)

1、NSDate 时间与日期的初始化,主要有 [NSDate date]; 2、NSDateFormatter 主要用于NSString和Date之间相互转化//NSDate转NSStringstringFromDate:dt//NSString转NSDatedateFromString 3、NSCalendar和NSDateComponents Date打印出具体时间的年月日和把年月日转化为Date4、N…

android studio adil位置,在Android Studio 中正确使用adil ”绝对经典“

今天调用远程服务中遇到了一个问题&#xff0c;哎&#xff0c;调了2个小时&#xff0c;后来终于解决&#xff0c;总结来看还是对新的Android Studio 不够熟悉。那么。。。。就可以睡觉啦&#xff01;&#xff01;&#xff01;在Android Studio中使用进程通信机制adil时一定要注…

[第二篇]如何在ASP.Net Core的生产环境中使用OAuth保护swagger ui

在我上篇文章如何在ASP.Net Core的生产环境中保护swagger ui中&#xff0c;我们讨论了如何使用基本身份验证来保护 swagger ui。使用 OAuth 2.0 和 OpenIdConnect 进行保护随着应用程序越来越多地使用 OAuth 和 OpenIdConnect&#xff0c;应用程序很有可能使用 OAuth 和 OpenID…

python opencv 图像切割_【OpenCV+Python】图像的基本操作与算术运算

图像的基本操作在上个教程中&#xff0c;我们介绍了使用鼠标画笔的功能。本次教程&#xff0c;我们将要谈及OpenCV图像处理的基本操作。本次教程的所有操作基本上都和Numpy相关&#xff0c;而不是与OpenCV相关。要使用OpenCV编写更好的优化代码&#xff0c;需要Numpy的丰富知识…

CLR触发器

using System; using System.Data; using System.Data.SqlClient; using Microsoft.SqlServer.Server;public partial class Triggers {// 为目标输入现有表或视图并取消对属性行的注释[Microsoft.SqlServer.Server.SqlTrigger (Name"Trigger1", Target"Unit_E&…

IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)

1、 copy、mutableCopy方法 copy方法返回对象的不可修改的副本 mutableCopy方法返回的对象可修改的副本 1)、测试demo int main(int argc, char * argv[]) {autoreleasepool {NSMutableString *book [NSMutableString stringWithString:"chenyu"];NSMutableStrin…

编程心得03

新的一年2016&#xff0c;再接再厉&#xff01; 转载于:https://www.cnblogs.com/Anzhongliu/p/6091848.html

光伏领跑者火热前行 可靠性护航“长跑”

随着第三批光伏领跑者申报标准的出台&#xff0c;在目前普通电站指标有可能缩水的情况下&#xff0c;2017年8-10GW的光伏领跑者项目又将成为各电站投资商争夺的“红海”。光伏领跑者在过去两年时间里为行业带来的变化有目共睹&#xff0c;从模式创新到电价下降&#xff0c;快速…

鸿蒙os系统被推送,鸿蒙来了!华为大规模推送鸿蒙OS系统,造成网站一度瘫痪...

千呼万唤始出来&#xff0c;期盼已久的手机鸿蒙OS系统终于迎来了大规模推送&#xff01;今年2月份在华为Mate X2折叠屏手机发布会上&#xff0c;华为就曾表示将在4月份开始大规模推送鸿蒙OS系统&#xff0c;4月27日通过测试申请的用户正式接到升级鸿蒙OS系统的通知&#xff0c;…

jps、jinfo、jstat、jstack、jmap、jconsole等命令简介

2019独角兽企业重金招聘Python工程师标准>>> JDK提供了几个很实用的工具&#xff0c;如下&#xff1a; jinfo&#xff1a;观察运行中的java程序的运行环境参数&#xff1a;参数包括Java System属性和JVM命令行参数&#xff0c;java class path等信息。命令格式&…