大家好,我正在创建一个Wallpapers应用程序,在该应用程序中,我从Firebase数据库中提取了所有String格式的图像。
现在我被困在“设置为墙纸”上,因为图像采用Url格式,并且wallpaperManager.setResource(int)仅支持int格式。
我也曾尝试将Url转换为Bitmap,但它也对我不起作用。
fabSetWallpaper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String urldisplay = list.get(position).getImageURL();
Bitmap bmp = null;
try {
URL ulrn = new URL(urldisplay);
HttpURLConnection con = (HttpURLConnection) ulrn
.openConnection();
InputStream is = con.getInputStream();
bmp = BitmapFactory.decodeStream(is);
int widthPx = getWindowManager().getDefaultDisplay()
.getWidth();
int heightPx = getWindowManager().getDefaultDisplay()
.getHeight();
bmp = Bitmap.createScaledBitmap(bmp, widthPx, heightPx,
true);
} catch (Exception ex) {
}
WallpaperManager myWallpaperManager = WallpaperManager
.getInstance(getApplicationContext());
try {
myWallpaperManager
.setBitmap(bmp);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(SecondTest2Activity.this, "Wallpaper Successfully Set On Screen ", Toast.LENGTH_LONG).show();
}
});
我已经尝试了上面的代码,但是没有用....也许这个问题可能是某人的重复,但是我在网上搜索了很多,但是没有找到任何解决方法
我找到了解决方法
String url = list.get(position).getImageURL();
ImageView img=new ImageView(SecondTest2Activity.this);
Picasso.get().load(url).into(img);
Bitmap bitmapImg = ((BitmapDrawable) img.getDrawable()).getBitmap();
WallpaperManager myWallpaperManager = WallpaperManager
.getInstance(getApplicationContext());
try {
myWallpaperManager
.setBitmap(bitmapImg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:1)
我想到的最简单的方法是在Android上使用Glide,在其中您可以将load()
传递给url
方法,该方法应为String类型。如果您有Url
个对象的列表,则只需获取该对象的String表示形式并使用以下代码行即可:
GlideApp
.with(myFragment)
.load(url)
.centerCrop()
.into(yourImageView);