2016-04-28 42 views
0

是android平臺的新功能,並嘗試爲每個像素繪製延遲線。但是當執行代碼時,他們不會延遲每個像素,他們將在完整循環執行後顯示,我不知道爲什麼要這樣做。我需要延遲每個像素,我的意思是在實時視圖中將像素繪製爲像素。有可能請建議示例代碼或示例。感謝提前。如何使用畫布設置繪製線的延遲

活動

public class MainActivity extends Activity { 

ImageView drawingImageView; 
int x1 = 50; 
int y1 = 100; 
int y2 = 100; 
int i; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    drawingImageView = (ImageView) this.findViewById(R.id.DrawingImageView); 
    Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager() 
      .getDefaultDisplay().getWidth(), (int) getWindowManager() 
      .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 
    drawingImageView.setImageBitmap(bitmap); 

    // Line 
    Paint paint = new Paint(); 
    paint.setColor(Color.GREEN); 
    paint.setStrokeWidth(5); 
    for (i = 0; i < 250; i++) { 
     try { 
      Thread.sleep(50); 
     } catch (InterruptedException ie) { 
      //error; 
     } 
     canvas.drawLine(x1, y1, x1 + i, y2, paint); 
    } 
    i++; 
}} 

回答

1

請通過this.Hope這會爲你工作去。 :)

公共類測試活動擴展AppCompatActivity {

ImageView drawingImageView; 
int x1 = 50; 
int y1 = 100; 
int y2 = 100; 
int x2=50, mCount = 1; 
private Handler mHandler; 
private Runnable mRunnable; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    drawingImageView = (ImageView) this.findViewById(R.id.DrawingImageView); 
    Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager() 
      .getDefaultDisplay().getWidth(), (int) getWindowManager() 
      .getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888); 
    final Canvas canvas = new Canvas(bitmap); 
    drawingImageView.setImageBitmap(bitmap); 

    final Paint paint = new Paint(); 
    paint.setColor(Color.GREEN); 
    paint.setStrokeWidth(5); 

    canvas.drawLine(x1, y1, x2, y2, paint); 

    mHandler = new Handler(getMainLooper()); 
    mRunnable = new Runnable() { 
     @Override 
     public void run() { 
      int x3 = x2 + mCount; 
      canvas.drawLine(x2, y1, x3, y2, paint); 
      x2 = x3; 
      mCount++; 
      drawingImageView.invalidate(); 
      if (mCount < 150) 
       mHandler.postDelayed(mRunnable, 50); 
     } 
    }; 

    mHandler.postDelayed(mRunnable,50); 


} 

}