2012-08-08 92 views
1

我有一個路徑和一個跟隨實現的路徑的對象。如何使移動對象在其路徑上繪製另一種顏色。更改動畫路徑上的顏色(android)

這裏的鏈接圖像(也許它更好地解釋我的意思):moving object on path

THX對您有所幫助:)

+0

你的代碼在哪裏?什麼不起作用?等 – 0gravity 2012-08-08 19:52:00

+0

如果你需要簡單的路徑和油漆聲明和初始化的代碼,然後你回答這個問題... 我只需要一個提示,如「你應該看看DashPathEffect」。我相信你會做得更好,下次:) – Crodel 2012-08-09 10:44:56

回答

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); 
     } 
    } 
}