canvas.drawArc(new RectF(0, 0, 128, 128), 0, 360, true, new Paint(
Paint.ANTI_ALIAS_FLAG));
参数1:圆的范围大小
参数2:起始角度
参数3:圆心角角度,360为圆,180为半圆
参数4:中心
参数5:画笔Paint,可以设置画线or填充,设置颜色,设置线的粗细等等第四个参数
最关键的是第一个参数RectF,在什么地方绘制圆弧就是由这个矩形的位置确定的。根据上文,这个RectF应该是内切圆弧的外圆(尽管没画,但还是有)。所以其左上点及右下点坐标为:
RectF rect2 = new RectF(center-(innerCircle + 1 +ringWidth/2),center-(innerCircle + 1 +ringWidth/2), center+(innerCircle + 1 +ringWidth/2), center+(innerCircle + 1 +ringWidth/2));
为了绘制出透明度不同的圆环分两部来绘制:
this.paint.setARGB(200, 127, 255, 212);
this.paint.setStrokeWidth(ringWidth);
//绘制不透明部分
canvas.drawArc(rect2, 180+startAngle, 90, false, paint);
canvas.drawArc(rect2, 0+startAngle, 90, false, paint);
//绘制透明部分
this.paint.setARGB(30, 127, 255, 212);
canvas.drawArc(rect2, 90+startAngle, 90, false, paint);
canvas.drawArc(rect2, 270+startAngle, 90, false, paint);
上面的代码当startAngle = 0时,绘制的是一个静态的透明度交替的圆弧。接着要让它转起来。增加代码:
startAngle+=10;
if(startAngle == 180)
startAngle = 0;
事实上后两句也可以不增加,仿照前文SurfaceView绘制旋转动画的例子用这种求余的思想,(rotate += 48) % 360,把上面角度也弄个%360,也是可以的。
剩下的事就是让这个东西循环执行了。在super.onDraw(canvas);这句代码后面加 invalidate();就可以了!透明圆环就转起来了。
canvas.drawCircle(mCirX, mCirY, mRadius, paint);
paint.setAlpha(0);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawCircle(mCirX, mCirY, mRadius-mRingWidth, paint);
在android中要绘制圆环,暂时知道有三种方式。分别是:一、设置画笔的style为stoke,绘制圆这里是先绘制内圆,然后绘制圆环(圆环的宽度就是paint设置的paint.setStrokeWidth的宽度),最后绘制外圆。请看核心源码:[java] view plaincopyprint?"http://
功能:该方法用于在画布上绘制圆形,通过指定圆形圆心的坐标和半径来实现。该方法是绘制圆形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆形。
基本语法:public void drawCircle (float cx, float cy, float radius, Paint paint)
cx:圆心的x坐标。
cy:圆心的y坐标。
radius:
绘制圆弧方法
public void drawArc (RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint)
oval:圆弧所在的椭圆对象。
startAngle:圆弧的起始角度。
sweepAngle:圆弧的角度。
useCenter:是否显示半径连线,true表示显示圆弧与圆心的半径连线,false表示不显示。
paint:
绘制时所使用的画笔。
绘制圆环的控件,支持时间设置,角度设置,背景设置等一、使用方法1)在Layout中使用如下声明 android:id="@ id/arc_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:radius="100dp"
app:isRing="false"
/>其中radus表示半径,isRing表示是否绘制圆环2)初始化参数 ring.setBg(0, 360,Color.rgb(30, 96, 200));//设置圆环背景
ring.setFrontColor(Color.rgb(255, 255, 255));//设置圆环前景
ring.setPrimaryTextParam(primaryTextSize,Color.rgb(255, 255, 255), cpuPercent "%");//设置主标题属性
ring.setSecondryTextParam(secondaryTextSize, Color.rgb(255, 255, 255), "CPU");//设置负标题属性
ring.setRingWidth(ringWidth);3)绘制Ring/**
* @param startAngle开始角度
* @param percent 百分比
* @param radius 半径
* @param totalDrawTime 动画总时间
//绘制圆环
public void drawCircleRing(int startAngle,int percent,int totalDrawTime)
//绘制扇形
public void drawArcRing(int startAngle, int percent, int totalDrawTime)
drawCircle方法:
绘制圆形
【功能说明】该方法用于在画布上
绘制圆形,通过指定圆形圆心的坐标和半径来实现。该方法是
绘制圆形的主要方法,同时也可以通过设置画笔的空心效果来
绘制空心的圆形。
【基本语法】public void drawCircle (float cx, float cy, float radius
你可以使用pymunk中的`pymunk.util.poly_circle`函数来绘制90°的圆环。该函数用于在一个圆的扇形上绘制一个多边形,从而模拟一个圆弧。您可以指定圆弧的角度,因此可以绘制任意大小的圆弧。下面是一个简单的例子:
import pymunk
import pymunk.pygame_util
import pygame
def main():
pygame.init()
screen = pygame.display.set_mode((600, 600))
clock = pygame.time.Clock()
space = pymunk.Space()
circle = pymunk.Circle(space.static_body, 50)
circle.body.position = (300, 300)
space.add(circle)
arc = pymunk.util.poly_circle(circle.body, circle.radius, 0, 90)
space.add(arc)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit(0)
elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
sys.exit(0)
screen.fill((255, 255, 255))
space.debug_draw(pymunk.pygame_util.DrawOptions(screen))
pygame.display.flip()
clock.tick(50)
if __name__ == '__main__':
sys.exit(main())
上面的代码将绘制一个从0°到90°的圆弧。您可以通过更改第三个和第四个参数来更改圆弧的角度。
【android studio】解决layout预览出现Rendering Problems Exception Unable to find the layout for Action Bar.
25967