2017-03-22 3 views
0

Ich möchte ImageView erneuern, wenn Pixel der Bitmap-Klasse gesetzt werden. aber ImageView funktioniert nicht. Ich benutze bereits einen Thread. was soll ich machen? das ist mein Code.android ImageView funktioniert nicht

public class MainActivity extends AppCompatActivity { 

    ImageView img; 
    DisplayMetrics dm; 
    Bitmap bit; 
    int x = 1, y = 1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     img = (ImageView)findViewById(R.id.image); 

     bit = Bitmap.createBitmap(300, 400, RGB_565); 

      for(int i = 0; i < 300; i++){ 
       for(int j = 0; j < 400; j++) 
        bit.setPixel(i,j, Color.WHITE); 
      } 

     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       while(true) { 
        bit.setPixel(x++, y++, Color.BLACK); 

        img.setImageBitmap(bit); 
        img.invalidate(); 
        try{ 
         Thread.sleep(100); 
        }catch (Exception e){ 

        } 
       } 
      } 
     }); 


    } 
} 
+0

Warum verwenden Sie während WAHR? – oskarko

+0

Verwenden Sie 'ImageView.post()' Methode anstelle von 'runOnUiThread()' Methode –

+0

@oskarkl Ich möchte kontinuierlich ändern. –

Antwort

0

Verwenden Sie postDelayed in Ihre ImageView.post() Methode. Hier habe ich das an meiner Maschine gemacht. Plus nicht while(true) stoppen Sie es, wenn Ihre Pixel endet.

img = (ImageView) findViewById(R.id.image); 

     bit = Bitmap.createBitmap(300, 400, RGB_565); 
     for(int i = 0; i < 300; i++){ 
      for(int j = 0; j < 400; j++) 
       bit.setPixel(i,j, Color.WHITE); 
     } 
     img.setImageBitmap(bit); 


     img.post(new Runnable() { 
      @Override 
      public void run() { 
       bit.setPixel(x, y, Color.BLACK); 
       img.setImageBitmap(bit); 
       if(++x < 300 && ++y < 400){ 
        img.postDelayed(this, 100); 
       } 
      } 
     }); 
0

Versuchen Sie, die Ansicht zu aktualisieren, indem Sie Handler verwenden.

+0

Ich ändere meinen Code img.post. aber es funktioniert nicht –