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 FiveView extends View {public FiveView(Context context) {super(context);// TODO Auto-generated constructor stub}public FiveView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public FiveView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);// TODO Auto-generated constructor stub}@SuppressLint("NewApi")public FiveView(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;canvas.translate(r, r );  Path path=new Path();path.moveTo(0, -r);//Apath.lineTo(  r* sin(36), r*cos(36));//Cpath.lineTo( -r*sin(72), -r*cos(72) );//Epath.lineTo(  r*sin(72), -r*cos(72)  );//Bpath.lineTo(  -r*sin(36), r*cos(36)  );//Dpath.close(); Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.YELLOW);paint.setStyle(Style.STROKE);paint.setStrokeWidth(5);canvas.drawPath(path, paint);addCoordinateAndMark(canvas);ff2(canvas);}private void addCoordinateAndMark(Canvas canvas) {// TODO Auto-generated method stubint width=getWidth();int r=width/2;Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.BLACK);paint.setStrokeWidth(5);canvas.drawLine(-r, 0, r, 0, paint);canvas.drawLine(0, -r, 0, r, paint);paint.setColor(Color.BLUE);paint.setTextSize(30); r=(int) (r*0.9);canvas.drawText("A", 0, -r, paint);canvas.drawText("B", r*sin(72), -r*cos(72), paint);canvas.drawText("C", r*sin(36), r*cos(36), paint);canvas.drawText("D",-r*sin(36), r*cos(36)  , paint);canvas.drawText("E", -r*sin(72), -r*cos(72), paint);}/*** * 外点 </br> x=Rcos(72°*k) </br>  y=Rsin(72°*k) </br>    k=0,1,2,3,4 </br></br></br> 内点 </br> r=Rsin(18)/sin(180-36-18) </br> x=rcos(72°*k+36°)</br>   y=rsin(72°*k+36°) </br>     k=0,1,2,3,4 </br>  * @param canvas */private void ff2(Canvas canvas) {canvas.rotate(-18); float r=getWidth()/2 ;Paint paint=new Paint();paint.setAntiAlias(true);paint.setColor(Color.MAGENTA);paint.setStyle(Style.STROKE);paint.setStrokeWidth(5);Path path=new Path();path.moveTo(r*cos(72*0), r*sin(72*0));for (int i = 1; i <5 ; i++) {canvas.drawText(""+i,r*cos(72*i), r*sin(72*i), paint);path.lineTo(r*cos(72*i), r*sin(72*i));}path.close();canvas.drawPath(path, paint);r=r*sin(18)/sin(180-36-18);paint.setColor(Color.CYAN);path=new Path();path.moveTo(r*cos(72*0+36), r*sin(72*0+36));for (int i = 1; i <5 ; i++) {canvas.drawText(""+i,r*cos(72*i+36), r*sin(72*i+36), paint);path.lineTo(r*cos(72*i+36), r*sin(72*i+36));}path.close();canvas.drawPath(path, paint);}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][自定义进度条]④--圆形进度条的onMeasure
  2. Android——点击水纹效果
  3. Android设置虚线、圆角、渐变
  4. Drawable的详解
  5. Android(安卓)Paint之MaskFilter详解
  6. 对Android(安卓)canvas的一点粗浅理解
  7. Android坐标的简单方法介绍
  8. Android(安卓)实现对话框圆角功能
  9. Android(安卓)UI效果实现——滑动模糊渐变效果实现

随机推荐

  1. Android开发管理手机短信
  2. android动画的透明度渐变、旋转动画、缩
  3. Android异步任务AsyncTask的使用与原理分
  4. android下用itext修改pdf模板文件
  5. Android仿人人客户端(v5.7.1)——有关滑动
  6. Android(安卓)AIDL运用总结
  7. Android官方文档翻译--How Android(安卓)
  8. Android开发之 混淆加固和反编译
  9. android的Notifications的例子demo
  10. Android(安卓)Studio的使用 及 JDK环境配