当用户将其设置为设备的背景时,我想将图像设置为适合所有屏幕,我尝试了许多代码,但是它不起作用。 这是我的代码
item_home_image = findViewById(R.id.item_home_image);
item_home_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (checkPermission()) {
final Intent intent = getIntent();
String url = intent.getStringExtra("imageUrl");
Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
try {
wallpaperManager.setBitmap(bitmap);
} catch (IOException ex) {
ex.printStackTrace();
}
Toasty.normal(PicassoDisplayImageAdapter.this, "تم تغيير الخلفية بنجاح", Toast.LENGTH_SHORT).show();
}
@Override
public void onBitmapFailed(final Drawable errorDrawable) {
Toasty.error(PicassoDisplayImageAdapter.this, "فشل تحميل الصورة", Toast.LENGTH_SHORT).show();
}
@Override
public void onPrepareLoad(final Drawable placeHolderDrawable) {
Toasty.normal(PicassoDisplayImageAdapter.this, "جاري التحميل", Toast.LENGTH_SHORT).show();
}
});
}
}
});
答案 0 :(得分:1)
尝试一下:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
try {
wallpaperManager.setBitmap(newBitmap);
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
您使用wallpaperManager
设置的位图可能与显示尺寸不同,因此,您需要先缩放该位图,然后再传递给wallpaperManager
尝试使用
item_home_image = findViewById(R.id.item_home_image);
item_home_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (checkPermission()) {
final Intent intent = getIntent();
String url = intent.getStringExtra("imageUrl");
Picasso.with(PicassoDisplayImageAdapter.this).load(url).into(new Target() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(PicassoDisplayImageAdapter.this);
try {
int height = getResources().getDisplayMetrics().heightPixels;
int width = getResources().getDisplayMetrics().widthPixels;
bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
wallpaperManager.setBitmap(bitmap);
} catch (IOException ex) {
ex.printStackTrace();
}
Toasty.normal(PicassoDisplayImageAdapter.this, "تم تغيير الخلفية بنجاح", Toast.LENGTH_SHORT).show();
}
@Override
public void onBitmapFailed(final Drawable errorDrawable) {
Toasty.error(PicassoDisplayImageAdapter.this, "فشل تحميل الصورة", Toast.LENGTH_SHORT).show();
}
@Override
public void onPrepareLoad(final Drawable placeHolderDrawable) {
Toasty.normal(PicassoDisplayImageAdapter.this, "جاري التحميل", Toast.LENGTH_SHORT).show();
}
});
}
}
});
答案 2 :(得分:0)