首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android WallpaperManager setBitmap fitCenter

Android WallpaperManager setBitmap fitCenter
EN

Stack Overflow用户
提问于 2017-07-03 14:44:08
回答 1查看 993关注 0票数 0

我正试着用WallpaperManager来给我手机的壁纸贴上一张位图。

  • 图像大小:3840x2160
  • 电话号码: 1080 x 1920

我尝试过很多策略:

  1. myWallpaperManager.suggestDesiredDimensions(width,高度);
  2. Bitmap.createScaledBitmap(mImage,宽度,高度,真);
  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. answer.php?view=qad&token=39

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

我想要的是什么样子:

图像信息:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-03 16:42:04

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

我所做的是:

代码语言:javascript
复制
    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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44888472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档