我有一个包含壁纸选择器的Android应用程序。
它将缩略图加载到图库窗口小部件中,当选择一个时,它会显示在图库后面的大图像视图中。一体化活动
所有壁纸和拇指都是通过清单解析器和节点从Web加载的。他们装得很好。
问题是,在加载imageview之前按下保存/应用壁纸的菜单项时会出现问题。如果我等到imageview加载它没有问题。
我尝试通过执行以下操作来解决这个问题。 除非加载完成,否则我将mImageDrawableSet布尔值设置为false
ImageLoader.getInstance().displayImage(mNode.url, mImageView, new ImageLoadingListener() {
@Override
public void onLoadingStarted () {
mImageDrawableSet = false;
mImageView.setVisibility(View.GONE);
mPending.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingFailed (FailReason failReason) {
mImageDrawableSet = false;
Toast.makeText(getActivity(), "Image Failed To Load!", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoadingComplete (Bitmap bitmap) {
mImageDrawableSet = true;
mImageView.setVisibility(View.VISIBLE);
mImageView.setImageBitmap(bitmap);
mImageView.setZoomable(true);
mPending.setVisibility(View.GONE);
if (mApplyImageOnDisplay)
applyImage();
if (mSaveImageOnDisplay)
exportImage();
}
@Override
public void onLoadingCancelled () {
}
});
然后当调用exportImage()时,它会查看mImageDrawableSet是否会闪烁,如果是,则将mSaveImageOnDisplay设置为true。因此,当加载完成时,它将调用exportImage()并处理超出我在下面发布的内容。
public void exportImage () {
if (this.mImageDrawableSet == false) {
this.mSaveImageOnDisplay = true;
return;
}
try {
final Bitmap bitmap = getImageBitmap();
上面的例子来自一个代码,它在一个片段中显示了一个imageview。我现在正在使用一个活动,其中所有壁纸都显示在一个图像视图中,具体取决于所选的缩略图。 我也放弃了UIL,并没有使用Picasso,也没有开始加载。只是加载失败并完成。
所以我能够做到这一点的唯一方法就是创建一个在活动开始时设置为false的布尔值。
然后在选项菜单项上我有这个
if (ReadyBoolean.getValue()){
setProgressBarIndeterminateVisibility(true);
applyCrop();
} else {
Toast.makeText(this, "Please wait until wallpaper loads", Toast.LENGTH_SHORT).show();
}
return true;
在毕加索加载完成后,我将其设置为true,然后在保存功能运行后返回false。
所以,它有效,但我讨厌我必须显示一条消息说请等到壁纸加载。我希望它能在imageview加载后才能工作。我似乎无法弄清楚如何做到这一点