Android path類動態繪制 – Android移動開發技術文章_手機開發 Android移動開發教學課程

package com.wcs;

import android.R.color;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ComposePathEffect;
import android.graphics.CornerPathEffect;
import android.graphics.DashPathEffect;
import android.graphics.DiscretePathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathDashPathEffect;
import android.graphics.PathEffect;
import android.graphics.SumPathEffect;
import android.os.Bundle;
import android.view.View;

public class PathTest extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));
    }

    class MyView extends View {

        float phase;
        PathEffect[] effects = new PathEffect[7];
        int[] colors;
        private Paint paint;
        Path path;

        public MyView(Context context) {
            super(context);
            paint = new Paint();
            paint.setStyle(Paint.Style.STROKE);
            paint.setStrokeWidth(4);
            path = new Path();
            path.moveTo(0, 0);
            for (int i = 1; i <= 15; i++) {
                path.lineTo(i * 20, (float) Math.random() * 60);
            }
            colors = new int[] { Color.BLACK, Color.BLUE, Color.CYAN,
                    Color.GREEN, Color.MAGENTA, Color.RED, Color.YELLOW };

        }

        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.WHITE);
            effects[0]=null;
            effects[1]=new CornerPathEffect(10);
            effects[2]=new DiscretePathEffect(3.0f, 5.0f);
            effects[3]=new DashPathEffect(new float[]{20,10,5,10}, phase);
            Path p=new Path();
            p.addRect(0, 0,8,8,Path.Direction.CCW);
            effects[4]=new PathDashPathEffect(p, 12, phase,PathDashPathEffect.Style.ROTATE);
            effects[5]=new ComposePathEffect(effects[2], effects[4]);
            effects[6]=new SumPathEffect(effects[4], effects[3]);
            canvas.translate(8, 8);
            for(int i=0;i<effects.length;i++){
                paint.setPathEffect(effects[i]);
                paint.setColor(colors[i]);
                canvas.drawPath(path,paint);
                canvas.translate(0, 60);
                phase+=1;
                invalidate();
            }
           
        }
    }
}
 

摘自  溫昌壽2
  

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *