设置墙纸时不会扭曲和裁剪图像。它也应该填充设备的整个宽度吗?

时间:2018-08-03 07:57:21

标签: android android-studio android-wallpaper

我正在创建一个墙纸应用程序,其中有一个选项可以将图像设置为墙纸,但是图像的尺寸大于设备尺寸,因此我想将其设置为墙纸,并且应在整个设备屏幕上伸展而不拉伸,裁切和扭曲图像。我正在使用毕加索。代码已随附。

 @Override
    public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
        Log.d("TAG", "onBitmapLoaded: ");
      
        ContentResolver r = contentResolverWeakReference.get();
        AlertDialog dialog = alertDialogWeakReference.get();
        WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
        try {
            //centerCropWallpaper(bitmap,wallpaperManager.getDesiredMinimumWidth(),wallpaperManager.getDesiredMinimumHeight())
            wallpaperManager.setBitmap(bitmap);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        if (dialog.isShowing()) {
            dialog.dismiss();
        }

        Snackbar.make(view, "Image Set as Wallpaper", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();


    }

我也尝试了中心裁切,但是由于裁切了图像区域,因此没有成功。中心裁剪的代码附在下面

private Bitmap centerCropWallpaper(Bitmap wallpaper, int desiredWidth, int desiredHeight){
        Display display = ((Activity)context).getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        //int width = size.x;
        int height = size.y;

        float scale = (float) desiredHeight / wallpaper.getHeight();
        int scaledWidth = (int) (scale * wallpaper.getWidth());
        int deviceWidth = size.x;
        int imageCenterWidth = scaledWidth /2;
        int widthToCut = imageCenterWidth - deviceWidth / 2;
        int leftWidth = scaledWidth - widthToCut;
        Bitmap scaledWallpaper = Bitmap.createScaledBitmap(wallpaper, size.x, size.y, false);
//        Bitmap croppedWallpaper = Bitmap.createBitmap(
//                scaledWallpaper,
//                widthToCut,
//                0,
//                leftWidth,
//                desiredHeight
//        );
        return scaledWallpaper;
    }

我正在使用的图像大小是1440 x 2560

0 个答案:

没有答案