Gallery
小部件一起使用。也就是说,
getView()
立即返回一个ImageView
,稍后某些机制会异步调用其setImageBitmap()
方法。我通过创建一个“懒惰”的ImageView
来实现这一点,它扩展了ImageView
。public class GalleryImageView extends ImageView {
// ... other stuff here ...
public void setImage(final Looper looper, final int position) {
final Uri uri = looper.get(position);
final String path = looper.sharePath(position);
new Thread(new Runnable() {
@Override
public void run() {
GalleryBitmap gbmp = new GalleryBitmap(context, uri, path);
final Bitmap bmp = gbmp.getBitmap(); // all the work is here
handler.post(new Runnable() {
@Override
public void run() {
if (GalleryImageView.this.getTag().equals(uri)) {
setImageBitmap(bmp);
}
}
});
}
}).start();
}
}
当我在
Gallery
中缓慢滚动时,中心图像会一直跳到中心位置。很难准确地解释,但真的很烦人。我也尝试了同样的方法用于 spinner 适配器,在那里它完美地工作。你有什么想法吗?