我试图通过从互联网下载图片来设置壁纸,但它显示了" get()方法"找不到。 我的代码: 在此代码中,wall_set是一个按钮的名称
wall_set.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
Bitmap result=Glide.with(getApplicationContext())
.load("http://www.sport-stickers.com/images/2013/CARTOON%20IRON%20ONS/Doraemon/Doraemon%20Iron%20ons%20(Wall%20Stickers)%20N3715.jpg").get();
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(result);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
);
答案 0 :(得分:1)
更改代码的这一部分:
Bitmap result=Glide.with(getApplicationContext())
.load("http://www.sport-stickers.com/images/2013/CARTOON%20IRON%20ONS/Doraemon/Doraemon%20Iron%20ons%20(Wall%20Stickers)%20N3715.jpg").asBitmap().get();
添加" asBitmap"
you might need to add
asBitmap().into(20, 20). // Width and height
以下
答案 1 :(得分:0)
如果你遵循Glide样本用法,那么get()方法就属于java.util.concurrent.Future对象。未来的类定义由官方文档给出如下。
public interface Future<V>
未来代表了一个结果 异步计算。提供方法来检查是否 计算完成,等待其完成,并检索 计算的结果。结果只能使用 计算完成时获取方法,必要时阻塞 直到它准备好了。取消由取消方法执行。 提供了其他方法来确定任务是否完成 通常或被取消。计算完成后,即可 计算无法取消。如果您想使用Future 为了取消可行性而不提供可用的结果,你可以 声明Future的形式类型,并返回null作为结果 基本任务。样本用法(请注意,以下类都已编写。)
interface ArchiveSearcher { String search(String target); } class App { ExecutorService executor = ... ArchiveSearcher searcher = ... void showSearch(final String target) throws InterruptedException { Future<String> future = executor.submit(new Callable<String>() { public String call() { return searcher.search(target); }}); displayOtherThings(); // do other things while searching try { displayText(future.get()); // use future } catch (ExecutionException ex) { cleanup(); return; } } }
让我们一步一步看看会发生什么:
Bitmap theBitmap = Glide.
with(this). //in Glide class and returns RequestManager
load(image_url). // in RequestManager and returns RequestBuilder<Drawable>
asBitmap(). //in RequestBuilder and returns RequestBuilder<Bitmap>
submit(). // in RequestBuilder and returns FutureTarget<TranscodeType> which extends Future<>
get(); // this belongs to Future object which is the result of async computation
public static RequestManager with(Context context) {
return getRetriever(context).get(context);
}
public RequestBuilder<Drawable> load(@Nullable Object model) {
return asDrawable().load(model);
}
public RequestBuilder<Bitmap> asBitmap() {
return as(Bitmap.class).transition(new GenericTransitionOptions<Bitmap>())
.apply(DECODE_TYPE_BITMAP);
}
public FutureTarget<TranscodeType> submit() {
return submit(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
}
public interface FutureTarget<R> extends Future<R>, Target<R> {
}
但更合适和安全的解决方案是使用回调
Glide
.with(this)
.load(image_url)
.asBitmap()
.into(new SimpleTarget<Bitmap>(100,100) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//resource is the resulting bitmap
}
});