来自图库的Android LinearLayout背景图片在某些设备中无效

时间:2013-12-02 12:22:27

标签: android android-layout android-bitmap

我正在设置一个背景图像到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);
}

1 个答案:

答案 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);