android ImageView 不工作

李水原

每当设置 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章