package com.example.test;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;/** *  *  假设五角星外接圆半径为1,有一个角朝上,以五角星中心为原点:外点 x=Rcos(72°*k)  y=Rsin(72°*k)   k=0,1,2,3,4 内点 r=Rsin(18)/sin(180-36-18) x=rcos(72°*k+36°)  y=rsin(72°*k+36°)   k=0,1,2,3,4  * @author Young * */public class FiveView2 extends View {public FiveView2(Context context) {super(context);// TODO Auto-generated constructor stub}public FiveView2(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public FiveView2(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@SuppressLint("NewApi")public FiveView2(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {super(context, attrs, defStyleAttr, defStyleRes);// TODO Auto-generated constructor stub} @Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);int width=getWidth();int r=width/2;float outR=getWidth()/2 /5;float inR=outR*sin(18)/sin(180-36-18);Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.YELLOW);paint.setStrokeWidth(5);canvas.translate(r/5, r );canvas.rotate(-18);Path path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);path = getHalfPath(outR, inR);paint.setStyle(Style.FILL);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);paint.setStyle(Style.FILL);canvas.drawPath(path, paint); canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getCompletePath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getHalfPath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);canvas.rotate(18);canvas.translate(r/5*2+15,0 );canvas.rotate(-18);path = getHalfPath(outR, inR);paint.setStyle(Style.STROKE);canvas.drawPath(path, paint);paint.setStyle(Style.FILL);canvas.drawPath(path, paint);}private Path getHalfPath(float outR, float inR) {Path path;path=new Path();path.moveTo(outR*cos(72*4), outR*sin(72*4));path.lineTo(inR*cos(72*1+36), inR*sin(72*1+36));path.lineTo(outR*cos(72*2), outR*sin(72*2));path.lineTo(inR*cos(72*2+36), inR*sin(72*2+36));path.lineTo(outR*cos(72*3), outR*sin(72*3));path.lineTo(inR*cos(72*3+36), inR*sin(72*3+36));path.close();return path;}private Path getCompletePath(float outR, float inR) {Path path=new Path();path.moveTo(outR*cos(72*0), outR*sin(72*0));path.moveTo(outR*cos(72*0), outR*sin(72*0));path.lineTo(inR*cos(72*0+36), inR*sin(72*0+36));path.lineTo(outR*cos(72*1), outR*sin(72*1));path.lineTo(inR*cos(72*1+36), inR*sin(72*1+36));path.lineTo(outR*cos(72*2), outR*sin(72*2));path.lineTo(inR*cos(72*2+36), inR*sin(72*2+36));path.lineTo(outR*cos(72*3), outR*sin(72*3));path.lineTo(inR*cos(72*3+36), inR*sin(72*3+36));path.lineTo(outR*cos(72*4), outR*sin(72*4));path.lineTo(inR*cos(72*4+36), inR*sin(72*4+36));path.close();return path;}  float cos(int num){return (float) Math.cos(num*Math.PI/180);} float sin(int num){return (float) Math.sin(num*Math.PI/180);}}


更多相关文章

  1. android shape的使用
  2. android shape
  3. android shape 常用到属性的设置
  4. android 动画之水波纹效果ripple
  5. Shape Drawable
  6. Android(安卓)微信拍照控件
  7. Android中drawable使用Shape资源
  8. android shape的使用
  9. Android中Shape 和 Selector的用法

随机推荐

  1. [RK3288][Android6.0] 调试笔记 --- 替换
  2. Android深入浅出之Audio
  3. Android(安卓)APK瘦身之Android(安卓)Stu
  4. NCNN: 应用于手机上的卷积加速
  5. Android与H5互调
  6. android 禁用或开启四大组件setComponent
  7. 文章标题
  8. 我的android 第19天 - 上下文菜单
  9. 【Android(安卓)应用开发】 Android(安卓
  10. Android(安卓)电子罗盘 --指南针(方向传感