1

パスと、実装されたパスをたどるオブジェクトがあります。移動オブジェクトが通過したパスに別の色をペイントする方法。

ここに画像へのリンクがあります(私の言いたいことをよりよく説明しているかもしれません):パス上のオブジェクトの移動

あなたの助けのためのthx :)

4

1 に答える 1

0

これがどのように行われるかの例です:)

public class MainActivity extends Activity  {

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this));
    }

    private static class SampleView extends View {
        private Paint mPaint,followingPaint;
        private Path mPath=new Path();
        private PathEffect mEffect;
        private float mPhase;
        private PathMeasure pm;
        private float pmLen; 

        public SampleView(Context context) {
            super(context);
            setFocusable(true);
            setFocusableInTouchMode(true);

            mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            mPaint.setStyle(Paint.Style.STROKE);
            mPaint.setStrokeWidth(10);
            followingPaint= new Paint(Paint.ANTI_ALIAS_FLAG);
            followingPaint.setStyle(Paint.Style.STROKE);
            followingPaint.setStrokeWidth(8);

            mPath.moveTo(50, 150);
            mPath.quadTo(100,200,150, 150);
            mPath.quadTo(200,100,300, 150);
            pm=new PathMeasure(mPath,false);
            pmLen = pm.getLength();

        }

        @Override protected void onDraw(Canvas canvas) {
            canvas.drawColor(Color.WHITE);

            mEffect = new DashPathEffect(new float[] {pmLen, pmLen}, mPhase+pmLen);
                mPhase -= 4;
            invalidate();     
            followingPaint.setPathEffect(mEffect);
            mPaint.setColor(Color.BLACK);
            followingPaint.setColor(Color.WHITE);
            canvas.drawPath(mPath, mPaint);
            canvas.drawPath(mPath, followingPaint);
        }
    }
}
于 2012-08-09T10:50:17.877 に答える