【问题标题】:Setting image view bitmap as a returned bitmap将图像视图位图设置为返回的位图
【发布时间】:2015-12-09 04:21:33
【问题描述】:

我正在尝试将图像视图的位图图像设置为另一个类返回的位图,下面是代码 sn-p:-

imageView = (ImageView) findViewById(R.id.imageView);
Bitmap myBitmap = myModel.loadBitmap(getResources(), R.drawable.nether);
imageView.setImageBitmap(myBitmap);

这是模型类:-

public class Model {

Bitmap cache;

public Bitmap loadBitmap(final Resources resource, final int i){

    new Thread(new Runnable(){
        public void run(){

            cache = BitmapFactory.decodeResource(resource, i);

        }
    }).start();

    return cache;
}
}

问题是图像不显示。它显示在同一类中设置图像视图位图之前是否使用了用于加载位图的代码,但返回的位图不起作用。

任何帮助都会很棒,谢谢!

【问题讨论】:

  • 我建议使用像 picassio 或 Universal Image loader 这样的图像加载库
  • 问题是什么?
  • 哎呀,凌晨 4 点的问题.. 图像没有显示,但是如果在设置图像视图位图的同一类中使用相同的代码,它可以工作,只是返回的位图不起作用.
  • 不要创建线程,只是使用它作为简单的方法,因为线程可能在后台运行,并且当您调用方法时缓存值可能为空
  • 相同的代码在与图像视图位图设置相同的类中工作正常,UI线程不应该真正用于解码位图

标签: java android bitmap imageview android-imageview


【解决方案1】:

-您使用了在后台运行的线程,因此它不会按顺序运行,并且您的缓存可能返回 null 这就是您无法设置位图的原因

使用这条简单的代码来解决您的问题:-

Bitmap bitmap= BitmapFactory.decodeResource(getResources(), R.drawable.icon);

【讨论】:

  • 是的,但是在同一个线程中使用相同的代码也可以在设置位图图像的同一类中工作,有没有办法通过仍然使用线程来让它工作?跨度>
【解决方案2】:

我设法解决了这个问题,并且仍然通过传递 imageView 将图像加载在线程内:

  new Thread(new Runnable(){
        public void run(){

            cache = BitmapFactory.decodeResource(resource, i);

            imageView.post(new Runnable(){
                public void run(){
                    imageView.setImageBitmap(cache);
                }
            });

        }
    }).start();

感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多