android - 空对象引用上的 Bitmap.getWidth()'

标签 android bitmap android-bitmap bitmapimage

我刚刚在 CreateScaledBitmap 线上遇到了这个问题,我试图将此图像设置为设备的墙纸,我需要将此图像缩放到设备,这就是我使用此方法的原因,但不幸的是我无法修复此位图宽度() 错误

            setWall.setOnClickListener(new View.OnClickListener() {
        @RequiresApi(api = Build.VERSION_CODES.KITKAT)
        @Override
        public void onClick(View view) {

            Picasso.with(getApplicationContext()).load(imageBrought).into(new Target() {
                @Override
                public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {

                    DisplayMetrics metrics = new DisplayMetrics();
                    getWindowManager().getDefaultDisplay().getMetrics(metrics);

                    int height = metrics.heightPixels;
                    int width = metrics.widthPixels;


                    bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);

                    WallpaperManager wallpaperManager = WallpaperManager.getInstance(AppMomentSelected.this);
                    wallpaperManager.setWallpaperOffsetSteps(1, 1);
                    wallpaperManager.suggestDesiredDimensions(width, height);


                    try {

                        wallpaperManager.setBitmap(bitmap);

                    } catch (IOException e) {

                        e.printStackTrace();
                    }

                }

                @Override
                public void onBitmapFailed(Drawable errorDrawable) {

                }

                @Override
                public void onPrepareLoad(Drawable placeHolderDrawable) {

                }
            });

最佳答案

您有来自 Firebase 的图像的 Url 但是您用来从 Url 获取 Bitmap 的方法是效率不高,可能不可能。您需要做的简单事情是使用一些自定义的 library 下载图像,例如 Picasso http://square.github.io/picasso/

添加到您的 app gradle:compile 'com.squareup.picasso:picasso:2.5.2'

现在您可以使用 PicassoUrl 下载图像并转换为 Bitmap:

                DisplayMetrics metrics = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(metrics);

                int height = metrics.heightPixels;
                int width = metrics.widthPixels;
                WallpaperManager wallpaperManager = WallpaperManager.getInstance(AppMomentSelected.this);
                wallpaperManager.setWallpaperOffsetSteps(1, 1);
                wallpaperManager.suggestDesiredDimensions(width, height);

                Picasso.with(this)
                .load(imageBrought)
                .resize(width, height)
                .into(new Target() {
                 @Override
                  public void onBitmapLoaded (final Bitmap bitmap, Picasso.LoadedFrom from) {
                 /* Save the bitmap or do something with it here */
                 wallpaperManager.setBitmap(bitmap);
         }
    });

关于android - 空对象引用上的 Bitmap.getWidth()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551226/

相关文章:

android - 如何处理android中位图的OOM异常

android - 如何显示视频路径中的视频缩略图?

android - 在 Android webview 中嵌入 Twitter Widget

java - 从 JSON 文件中检测和解析转义字符 "\"?

php - php-android 中未定义索引错误

android - 人脸检测不检测人脸,Android

android - 是否有比使用 AndroidBitmap_xxx 函数更快的视频渲染解决方案?

java - 将位图转换为圆形位图的最佳方法是什么

android - 为什么位图在android中显示黑色背景

android - 如果从Google Play商店下载了apk和obb,则无法在android 10设备上访问obb扩展文件