Android WallpaperManager setBitmap fitCenter

Android WallpaperManager setBitmap fitCenter

我正在尝试使用 WallpaperManager 将位图置于我 phone 的墙纸的中心。

我试过很多策略:

  1. myWallpaperManager.suggestDesiredDimensions(宽度, 高度);
  2. Bitmap.createScaledBitmap(mImage, width, height, true);
  3. Set Wallpaper with bitmap avoid crop and set fit center
  4. how to fit the whole image on screen as wallpaper
  5. Wallpaper not properly fit on device screen
  6. https://developer.android.com/reference/android/app/WallpaperManager.html
  7. http://androidexample.com/How_to_Set_WallPaper_in_Android/question_answer.php?view=qad&token=39

每次我得到一个不适合中心的奇怪位图,有人有什么建议吗?

我想要的样子:

图像信息:

我找到了答案:Scaled Bitmap maintaining aspect ratio

我做的是这样的:

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    int phoneHeight = metrics.heightPixels;
    int phoneWidth = metrics.widthPixels;

    Bitmap mBit = returnBitmap(mImage, phoneWidth, phoneHeight);

private Bitmap returnBitmap(Bitmap originalImage, int width, int height){
    Bitmap background = Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888);

    float originalWidth = originalImage.getWidth();
    float originalHeight = originalImage.getHeight();

    Canvas canvas = new Canvas(background);

    float scale = width / originalWidth;

    float xTranslation = 0.0f;
    float yTranslation = (height - originalHeight * scale) / 2.0f;

    Matrix transformation = new Matrix();
    transformation.postTranslate(xTranslation, yTranslation);
    transformation.preScale(scale, scale);

    Paint paint = new Paint();
    paint.setFilterBitmap(true);

    canvas.drawBitmap(originalImage, transformation, paint);

    return background;
}