[android]_[그림]

3887 단어
android 개발에서 자주 사용자 정의view로 다양한 그림을 그려야 합니다. 자주 사용하는 그림을 어떻게 그리는지 간단하게 설명합니다.
1. 먼저 클래스 DrawView 계승View를 만들고 구조 함수와 Ondraw()를 다시 씁니다. 주로 onDraw에 여러 가지 도형을 그립니다. 코드 예는 다음과 같습니다.
public class DrawView extends View {

	public DrawView(Context context) {
		super(context);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		/*
		 *       drawRect      drawCircle      drawOval      drawPath        
		 * drawLine      drawPoin    
		 */
		//     
		Paint p = new Paint();
		p.setColor(Color.RED);//     

		canvas.drawText("  :", 10, 20, p);//    
		canvas.drawCircle(60, 20, 10, p);//   
		p.setAntiAlias(true);//          。 true   ,          
		canvas.drawCircle(120, 20, 20, p);//   

		canvas.drawText("     :", 10, 60, p);
		p.setColor(Color.GREEN);//     
		canvas.drawLine(60, 40, 100, 40, p);//   
		canvas.drawLine(110, 40, 190, 80, p);//   
		//     
		p.setStyle(Paint.Style.STROKE);//    
		RectF oval1=new RectF(150,20,180,40);
		canvas.drawArc(oval1, 180, 180, false, p);//   
		oval1.set(190, 20, 220, 40);
		canvas.drawArc(oval1, 180, 180, false, p);//   
		oval1.set(160, 30, 210, 60);
		canvas.drawArc(oval1, 0, 180, false, p);//   

		canvas.drawText("   :", 10, 80, p);
		p.setColor(Color.GRAY);//     
		p.setStyle(Paint.Style.FILL);//    
		canvas.drawRect(60, 60, 80, 80, p);//    
		canvas.drawRect(60, 90, 160, 100, p);//    

		canvas.drawText("      :", 10, 120, p);
		/*                    */
		Shader mShader = new LinearGradient(0, 0, 100, 100,
				new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW,
						Color.LTGRAY }, null, Shader.TileMode.REPEAT); //     ,              。
		p.setShader(mShader);
		// p.setColor(Color.BLUE);
		RectF oval2 = new RectF(60, 100, 200, 240);//         ,    
		canvas.drawArc(oval2, 200, 130, true, p);
		//   ,      RectF:              ,         ,             ,        
		//   , oval   
		oval2.set(210,100,250,130);
		canvas.drawOval(oval2, p);

		canvas.drawText("    :", 10, 200, p);
		//        ,          
		Path path = new Path();
		path.moveTo(80, 200);//          
		path.lineTo(120, 250);
		path.lineTo(80, 250);
		path.close(); //             
		canvas.drawPath(path, p);

		//             ,        
		p.reset();//  
		p.setColor(Color.LTGRAY);
		p.setStyle(Paint.Style.STROKE);//    
		Path path1=new Path();
		path1.moveTo(180, 200);
		path1.lineTo(200, 200);
		path1.lineTo(210, 210);
		path1.lineTo(200, 220);
		path1.lineTo(180, 220);
		path1.lineTo(170, 210);
		path1.close();//  
		canvas.drawPath(path1, p);
		/*
		 * Path     (          
		 *     *、    ,      ,      。drawPath(  、  ),         
		 * (       ),                 。
		 */
		
		//     
		p.setStyle(Paint.Style.FILL);//  
		p.setColor(Color.LTGRAY);
		p.setAntiAlias(true);//          
		canvas.drawText("     :", 10, 260, p);
		RectF oval3 = new RectF(80, 260, 200, 300);//         
		canvas.drawRoundRect(oval3, 20, 15, p);//      x  ,      y  
		
		//      
		canvas.drawText("      :", 10, 310, p);
		p.reset();
		p.setStyle(Paint.Style.STROKE);
		p.setColor(Color.GREEN);
		Path path2=new Path();
		path2.moveTo(100, 320);//  Path   
		path2.quadTo(150, 310, 170, 400); //                  
		canvas.drawPath(path2, p);//       
		
		//  
		p.setStyle(Paint.Style.FILL);
		canvas.drawText("  :", 10, 390, p);
		canvas.drawPoint(60, 390, p);//    
		canvas.drawPoints(new float[]{60,400,65,400,70,400}, p);//    
		
		//   ,    
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
		canvas.drawBitmap(bitmap, 250,360, p);
	}
}

2. xml 레이아웃 파일에서 다음을 사용합니다.
    <com.example.administrator.myapplication.DrawView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

좋은 웹페이지 즐겨찾기