2016-04-28 22 views
0

はアンドロイドプラットフォームには新しく、ピクセルごとに遅延線を描こうとします。しかし、コードを実行すると、完全なループ実行後に表示される各ピクセルの遅延が発生しません。このようにする理由はわかりません。私はいくつかの各ピクセルを遅らせる必要がある、私はライブビューでピクセルにピクセルを描画することを意味します。サンプルコードまたはサンプルを提案してください。ありがとうございます。キャンバスを使用して描画線で遅延を設定するには

活動

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を通じて行ってください。 :)

パブリッククラスTestActivityは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); 


} 

}

を拡張します
関連する問題