在讲使用path绘制多边形时,讲下Canvas的translate(),rotate()方法的使用,本博客中会使用这方面的知识,先单独讲下,搞懂了这个,下面讲path绘制多边形就简单的多,我们知道每次我们使用canvas.draw...()绘制什么图形的时候,都是创建了一个新的图层,如果不知道图层是啥意思,就去看下我之前写的关于canvas基础,有讲这方面的,其实你可以理解成每次新创建了一个activity,然后把这个activity压入栈中,translate()是画布平移,其实每次画布还是同一个画布,通过paint绘制的图形都是在这同一个canvas上,但是绘制的内容跟你是否使用了translate()有关系,下面通过简单的demo来演示下:
package smart.com.pathview; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * 绘制多边形 */ public class PathmMultiView extends View { private Paint paint; public PathmMultiView(Context context) { this(context,null); } public PathmMultiView(Context context, AttributeSet attrs) { this(context, attrs,0); } public PathmMultiView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initPaint(); } private void initPaint() { paint = new Paint(); paint.setAntiAlias(true); paint.setStrokeWidth(5); paint.setTextSize(24); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint.setColor(Color.GREEN); canvas.drawText("杭州是个美丽的城市",20,20,paint); paint.setColor(Color.RED); canvas.drawPoint(100,100,paint); canvas.translate(100,100);