Java 将图像壁纸设置为适合屏幕;

Java 将图像壁纸设置为适合屏幕;,java,android,Java,Android,我想将图像设置为适合所有屏幕,当用户将其作为其设备的背景时,我尝试了许多代码,但都不起作用。 这是我的密码 item_home_image = findViewById(R.id.item_home_image); item_home_image.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (checkPermission

我想将图像设置为适合所有屏幕,当用户将其作为其设备的背景时,我尝试了许多代码,但都不起作用。 这是我的密码

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();
                }
            });
        }
    }
});

您可以使用此ImageView属性

  android:scaleType="fitXY"

更多信息

您可以使用此ImageView属性

  android:scaleType="fitXY"
更多信息请尝试以下方法:

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();
}
试试这个:

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();
}

使用
wallpermanager
设置的位图可能与显示大小不同,因此,在传递到
wallpermanager

试一试

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();
                }
            });
        }
    }
});

使用
wallpermanager
设置的位图可能与显示大小不同,因此,在传递到
wallpermanager

试一试

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();
                }
            });
        }
    }
});

设置
ImageView
attribute
scaleType=“centerCrop”
@Joker我更新了问题以了解我的意思您需要将图像缩放为显示大小请检查答案可能会对您有所帮助谢谢大家,如果我想让图像响应屏幕并维护其内容,例如Zedge应用程序,当你将pic设置为壁纸时,无论屏幕大小有多大,它都会响应屏幕并保持其内容@Jokerset
ImageView
AttAttribute
scaleType=“centerCrop”
@Joker我更新了问题,以了解我的意思您需要将图像缩放为显示大小请检查答案可能对您有帮助谢谢大家,如果我想让图像响应屏幕并保持其内容,例如Zedge应用程序,当你将pic设置为壁纸时,无论屏幕大小有多大,它都会响应屏幕并保持其内容@笑话谢谢你,如果我想让图像响应屏幕并像Zedge应用程序一样维护其内容,例如,当你将pic设置为墙纸时,它会响应屏幕并维护其内容,无论屏幕大小有多大,我都无法理解你所说的“让图像响应并维护其内容”。你的图像现在正在滚动,你想修复它吗?还是反过来?或者你的意思是别的?请看一下这个视频,它描述了我的意思,第一个是我的应用程序,第二个是Zedge应用程序,同一张照片“视频只有14秒”谢谢,如果我想让图像响应屏幕并像Zedge应用程序一样维护其内容,例如,当你将pic设置为壁纸时,它会响应屏幕并保持其内容,无论屏幕大小有多大不同,都无法理解你所说的“使图像响应并保持其内容”。你的图像现在正在滚动,你想修复它吗?还是反过来?或者你是说别的什么?请看一下这个视频,它描述了我的意思,第一个是我的应用程序,第二个是Zedge应用程序,同一张照片“视频只有14秒”