首页 > 解决方案 > 设置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);
        }

标签: android

解决方案


使用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)
}

推荐阅读