自定义各种图形

  1 MainActivity:
  2 package com.example.lainxidraw;
  3 
  4 import android.os.Bundle;
  5 import android.app.Activity;
  6 import android.content.Intent;
  7 import android.view.Menu;
  8 
  9 public class MainActivity extends Activity {
 10  public static String name1;
 11  @Override
 12  protected void onCreate(Bundle savedInstanceState) {
 13   super.onCreate(savedInstanceState);
 14   Intent intent = getIntent();
 15   name1 = intent.getStringExtra("aaa");
 16   setContentView(R.layout.activity_main);
 17  }
 18 
 19 }
 20 
 21 ShouActivity:
 22 package com.example.lainxidraw;
 23 
 24 import android.os.Bundle;
 25 import android.app.Activity;
 26 import android.content.Intent;
 27 import android.view.View;
 28 import android.view.View.OnClickListener;
 29 import android.widget.Button;
 30 
 31 public class ShouActivity extends Activity {
 32  private Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8;
 33  @Override
 34  protected void onCreate(Bundle savedInstanceState) {
 35   super.onCreate(savedInstanceState);
 36   setContentView(R.layout.activity_shou);
 37   btn1 = (Button) findViewById(R.id.btn1);
 38   btn2 = (Button) findViewById(R.id.btn2);
 39   btn3 = (Button) findViewById(R.id.btn3);
 40   btn4 = (Button) findViewById(R.id.btn4);
 41   btn5 = (Button) findViewById(R.id.btn5);
 42   btn6 = (Button) findViewById(R.id.btn6);
 43   btn7 = (Button) findViewById(R.id.btn7);
 44   btn8 = (Button) findViewById(R.id.btn8);
 45   btn1.setOnClickListener(l);
 46   btn2.setOnClickListener(l);
 47   btn3.setOnClickListener(l);
 48   btn4.setOnClickListener(l);
 49   btn5.setOnClickListener(l);
 50   btn6.setOnClickListener(l);
 51   btn7.setOnClickListener(l);
 52   btn8.setOnClickListener(l);
 53  }
 54  OnClickListener l = new OnClickListener() {
 55   @Override
 56   public void onClick(View arg0) {
 57    // TODO Auto-generated method stub
 58    Intent intent = new Intent(ShouActivity.this,MainActivity.class);
 59    switch (arg0.getId()) {
 60    case R.id.btn1:
 61     intent.putExtra("aaa", btn1.getText());
 62     startActivity(intent);
 63     break;
 64    case R.id.btn2:
 65     intent.putExtra("aaa", btn2.getText());
 66     startActivity(intent);
 67     break;
 68    case R.id.btn3:
 69     intent.putExtra("aaa", btn3.getText());
 70     startActivity(intent);
 71     break;
 72    case R.id.btn4:
 73     intent.putExtra("aaa", btn4.getText());
 74     startActivity(intent);
 75     break;
 76    case R.id.btn5:
 77     intent.putExtra("aaa", btn5.getText());
 78     startActivity(intent);
 79     break;
 80    case R.id.btn6:
 81     intent.putExtra("aaa", btn6.getText());
 82     startActivity(intent);
 83     break;
 84    case R.id.btn7:
 85     intent.putExtra("aaa", btn7.getText());
 86     startActivity(intent);
 87     break;
 88    case R.id.btn8:
 89     intent.putExtra("aaa", btn8.getText());
 90     startActivity(intent);
 91     break;
 92    }
 93   }
 94  };
 95 }
 96 MyView:
 97 package com.example.view;
 98 
 99 import com.example.lainxidraw.MainActivity;
100 
101 import android.content.Context;
102 import android.graphics.Canvas;
103 import android.graphics.Color;
104 import android.graphics.LinearGradient;
105 import android.graphics.Paint;
106 import android.graphics.Path;
107 import android.graphics.RectF;
108 import android.graphics.Shader;
109 import android.util.AttributeSet;
110 import android.util.Log;
111 
112 public class MyView extends View{
113  private Paint p;
114  public String name = MainActivity.name1;
115  public View(Context context, AttributeSet attrs, int defStyle) {
116   super(context, attrs, defStyle);
117   // TODO Auto-generated constructor stub
118  }
119  public View(Context context, AttributeSet attrs) {
120   super(context, attrs);
121   // TODO Auto-generated constructor stub
122  }
123  public View(Context context) {
124   super(context);
125   // TODO Auto-generated constructor stub
126  }
127  @Override
128  protected void onDraw(Canvas canvas) {
129   // TODO Auto-generated method stub
130   super.onDraw(canvas);
131   Log.i("aaa", name);
132   draw(name,canvas);
133  }
134  public void draw(String name,Canvas canvas){
135   p = new Paint();
136   if(name.equals("画圆")){
137    p.setColor(Color.RED);
138    canvas.drawText("画圆:", 10, 20, p);
139    //x.y.直径.画笔
140    canvas.drawCircle(60, 20, 10, p);
141    p.setAntiAlias(true);
142    canvas.drawCircle(120, 20, 20, p);
143   }else if(name.equals("画线及弧形")){
144    canvas.drawText("画线及弧线:", 10, 60, p);  
145    p.setColor(Color.GREEN);
146    //起始X.Y.结束X.Y.画笔
147    canvas.drawLine(60, 40, 150, 20, p);
148    canvas.drawLine(110, 40, 190, 80, p);
149    
150    p.setStyle(Paint.Style.STROKE);
151    RectF oval1=new RectF(150,20,180,40);
152    canvas.drawArc(oval1, 180, 180, false, p);
153    oval1.set(190, 20, 220, 40);
154    canvas.drawArc(oval1, 180, 180, false, p);
155    oval1.set(160, 30, 210, 60);
156    canvas.drawArc(oval1, 0, 180, false, p);
157   }else if(name.equals("画矩形")){
158    canvas.drawText("画矩形:", 10, 80, p);  
159    p.setColor(Color.GRAY);
160    p.setStyle(Paint.Style.FILL);
161    //X-左,Y-上,X-右,Y-下距离
162    canvas.drawRect(60, 60, 80, 80, p);
163    canvas.drawRect(60, 90, 160, 150, p);
164   }else if(name.equals("画扇形和椭圆")){
165    canvas.drawText("画扇形和椭圆:", 10, 120, p);  
166    Shader mShader = new LinearGradient(0, 0, 100, 100,new int[]{ Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW,Color.LTGRAY }, null, Shader.TileMode.REPEAT);
167    p.setShader(mShader);  
168    RectF oval2 = new RectF(60, 100, 200, 240);
169    canvas.drawArc(oval2, 200, 130, true, p);
170    oval2.set(210,100,250,130);  
171    canvas.drawOval(oval2, p);
172   }else if(name.equals("画三角形")){
173    canvas.drawText("画三角形:", 10, 200, p);
174    Path path = new Path();
175    path.moveTo(80, 200);
176    path.lineTo(120, 250);
177    path.lineTo(80, 250);
178    path.close();
179    canvas.drawPath(path, p);
180    p.reset();
181    //设置空心
182    p.setStyle(Paint.Style.STROKE);
183    Path path2 = new Path();
184    path2.moveTo(180, 200);
185    path2.lineTo(200, 200);
186    path2.lineTo(210, 210);
187    path2.lineTo(200, 220);
188    path2.lineTo(180, 220);
189    path2.lineTo(170, 210);
190    path2.close();
191    canvas.drawPath(path2, p);
192   }else if(name.equals("画圆角矩形")){
193    //充满
194    p.setStyle(Paint.Style.FILL);
195    p.setColor(Color.LTGRAY);
196    p.setAntiAlias(true);
197    canvas.drawText("画园角矩形", 10, 260, p);
198    RectF rectF = new RectF(80,260,200,300);
199    canvas.drawRoundRect(rectF, 80, 80, p);
200   }else if(name.equals("画贝赛尔曲线")){
201    p.reset();
202    p.setStyle(Paint.Style.STROKE);
203    p.setColor(Color.GREEN);
204    canvas.drawText("画贝塞尔曲线", 10, 260, p);
205    Path path3 = new Path();
206    path3.moveTo(100, 320);
207    path3.quadTo(150, 310, 170, 400);
208    canvas.drawPath(path3, p);
209   }else if(name.equals("画点")){
210    p.setStyle(Paint.Style.FILL);
211    canvas.drawText("画点", 10, 390, p);
212    canvas.drawPoint(69, 390, p);
213    canvas.drawPoints(new float[]{60,400,65,400,70,400}, p);
214   }
215  }
216 }
原文地址:https://www.cnblogs.com/pastor/p/5156721.html