每当设置 Bitmap 类的像素时,我都想更新 ImageView。但 ImageView 不起作用。我已经使用过ui线程。我应该怎么办?这是我的代码。
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){
}
}
}
});
}
}
在您的ImageView.post()
方法中使用 postDelayed 。在这里,我已经在我的机器上完成了这项工作。另外while(true)
,当你的像素结束时不要使用停止它。
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);
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句