在Android中获取运行时ImageDrawable的维度

时间:2014-03-28 16:59:24

标签: android image

我在android(纵向模式)中设置了Imageview的背景,其尺寸为400 X 400像素。这张图片在10" WXGA MDPI片剂(尺寸800×1280)。我碰巧使用相同的布局而没有修改7" Nexus 7(TVDPI 800 X 1280)平板电脑。图像看起来很紧张。我可以通过编程方式找出Nexus 7布局中背景的尺寸吗?我想在数学上缩小背景的尺寸,使其看起来像一个正方形。我觉得图像背景的宽度看起来超过400像素(比如X),高度也超过400像素(比如说Y)。还是Y> X使它看起来像一个矩形。如何在Nexus 7上以编程方式在Android中找到X和Y?请帮忙。是否有一套公式可以缩小或放大图像,以便所有Android手机上的外观保持一致。谢谢

2 个答案:

答案 0 :(得分:0)

波纹管代码可让您拍摄图像的宽度并相应地缩放图像

 try { 

       DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        SCREEN_WIDTH = displaymetrics.widthPixels;
        Drawable ob = new BitmapDrawable(getResources(), bm);
        float h = ob.getMinimumHeight();
        float w = ob.getMinimumWidth();
        float Hight = (h / w) *SCREEN_WIDTH;
        imageView.setVisibility(View.VISIBLE);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, (int) Hight);
        // imageView.setImageBitmap(bitmap);
        params.setMargins(5, 5, 5, 5);
        imageView.setLayoutParams(params);
        int sdk = android.os.Build.VERSION.SDK_INT;
        if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
            imageView.setBackgroundDrawable(ob);
        } else {
            imageView.setBackground(ob);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

您是否尝试在xml中使用android:scaleType="centerInside",而不是手动计算图像的大小?您可以以dp为单位设置ImageView的大小,以便在不同的屏幕上保持一致的大小。 scaleType将确保在缩放时保持纵横比。如果您想阻止缩放并在drawables-xxx文件夹中放置不同大小的图像,也可以使用android:scaleType="center"