我正在设置一个背景图像到gallerylayout from gallery,它的工作正常,除非图像的大小太大,我已经实现了异常处理,如果有任何异常,那么我从资源设置默认背景,但是我的应用程序仍在崩溃。我的代码就是......
public static void setBackgroundImage(Context context,
LinearLayout linearLayout, Uri uri) {
try {
Bitmap bitmap = BitmapFactory.decodeStream(context
.getContentResolver().openInputStream(uri));
Drawable drawable = new BitmapDrawable(context.getResources(),
bitmap);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
setImageForJellyBeanOrLater(linearLayout, drawable);
} else {
linearLayout.setBackgroundDrawable(drawable);
}
} catch (Exception e) {
linearLayout.setBackgroundResource(R.drawable.ic_bg_image);
e.printStackTrace();
}
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private static void setImageForJellyBeanOrLater(LinearLayout linearLayout,
Drawable drawable) {
linearLayout.setBackground(drawable);
}
答案 0 :(得分:1)
这里的问题是应该裁剪从画廊中选择的图像。
尝试下面的代码,它对我有用。
获取布局大小:
final int width = frm_layout.getWidth();
final int height = frm_layout.getHeight();
然后使用下面的压缩,
thumbnail = (BitmapFactory.decodeFile(ImagePath));
thumbnail = Bitmap.createScaledBitmap(thumbnail, width, height ,true);