Bitmap.getWidth()' 在空对象引用上
Bitmap.getWidth()' on a null object reference
我刚刚在 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'
现在您可以使用 Picasso
从 Url
下载图像并转换为 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);
}
});
我刚刚在 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'
现在您可以使用 Picasso
从 Url
下载图像并转换为 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);
}
});