2016-04-28 7 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 это будет работать для вас. :)

общественного класса 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); 


} 

}

 Смежные вопросы

  • Нет связанных вопросов^_^