android - 设置json在线图片为壁纸
问题描述
我是 android 新手,我正在制作一个 android 壁纸应用程序。我将图像存储在谷歌驱动器上,并将链接保存在资产文件夹中的 json 文件中。问题是当我按下壁纸按钮时,壁纸没有改变,但是当我关闭/打开我的手机时它改变了。我不知道发生了什么。我搜索了更多但没有找到任何解决方案。请帮助我,谢谢。
WallpaperManager wallpaperManager ;
Bitmap bitmap1, bitmap2;
DisplayMetrics displayMetrics ;
int width, height;
BitmapDrawable bitmapDrawable ;
applyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
wallpaperManager = WallpaperManager.getInstance(activity);
bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
bitmap1 = bitmapDrawable.getBitmap();
GetScreenWidthHeight();
SetBitmapSize();
wallpaperManager = WallpaperManager.getInstance(activity);
try {
wallpaperManager.setBitmap(bitmap2);
wallpaperManager.suggestDesiredDimensions(width, height);
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(activity,"Image set as Wallpaper",Toast.LENGTH_SHORT).show();
}
});
public void GetScreenWidthHeight(){
displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
width = displayMetrics.widthPixels;
height = displayMetrics.heightPixels;
}
public void SetBitmapSize(){
bitmap2 = Bitmap.createScaledBitmap(bitmap1, width, height, false);
}
解决方案
使用Picasso从 url 加载图像并设置为墙纸:
在.gradle中:
implementation 'com.squareup.picasso:picasso:2.71828'
在你的setOnClickListener:
Picasso.with(this) .load(imageUrl).centerCrop() .into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
wallpaperManager.setBitmap(bitmap)
}
推荐阅读
- html - 通过 R 笔记本渲染 kable 对象时的白色字体
- python - Python、Django:原始 sql 查询的替代方案
- flutter - Flutter中如何实现多层循环ListView?
- python - AttributeError:“Line3D”对象没有属性“_verts3d”
- powerbi - 在 DAX(不是 powerquery)中,根据列删除重复项
- c# - FTPS 失败,但仅限于某些机器上的某些命令
- java - 在 Java swing 窗口中设置换行符
- java - 如何将一个 Maven 插件的输出转换为另一个?
- javascript - 更新到 Jest 26 后模拟中断
- json - 如何将地址转换为坐标以放置在 SwiftUI 中的地图上?