具有相同密度,英寸和分辨率的设备的位图大小差异

时间:2013-08-30 11:13:12

标签: android android-layout bitmap android-resolution

我有两台平板电脑设备:

1)华硕Memo Pad 172V平板电脑

在线指定为:600 * 1024像素,7.0英寸(~170 ppi像素密度)LINK

规格到代码:1024 * 552像素,7.0英寸(160 ppi像素密度)

2) MID 7510平板电脑

在线提供的规格为:800 * 480像素,7.0英寸(任何地方都没有提到密度)LINK

规格到代码:1024 * 552像素,7.0英寸(160 ppi像素密度)

我的问题是:

- 这两款平板电脑都具有相同的密度和分辨率(按代码),因此我如何区分它们以便设置位图高度(宽度对两者都正确),以防万一MID7510的位图高度略微下降。

- 是否有任何其他因素导致两者的位图大小不同   平板电脑?

- 为什么规格会因代码而异,并且会在网上提供不同的内容?

获取密度和分辨率的代码:

 DisplayMetrics dm = new DisplayMetrics();
 getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);                       

    int screenWidth = dm.widthPixels;
    int screenHeight = dm.heightPixels;                     

    // Display device dpi (density) value in pixels
    int screenDPIy = (int)dm.ydpi;

2 个答案:

答案 0 :(得分:0)

我会尝试回答每个问题,但我会从更重要的问题开始:

- 为什么规范会因代码而异,并且在线提供不同的内容?

因为您在网上找到了用于设备的材料,通常是正确的值。您可以找到构造函数在为其设备构建Android版本时设置的代码规范。含义:它可能是假的!特别是对于来自未知构造函数或中国低成本的设备,如'weisung'。

鉴于此,其他问题的答案:

- 是否有任何其他因素导致两者导致不同的位图大小 片剂吗

我不这么认为,他们有不同的屏幕尺寸和密度,但系统认为它们是相同的...它解释了最终位图大小的差异。

- 如何区分它们?

最终不是来自屏幕规格。如果您真的需要管理'weisung'设备,您可以随时通过代码检查设备配置中的制造商。 (假设他们已在制造商领域XD中正确设置了他们的身份证明)

检查常数值:android.os.Build.MANUFACTURER

我真的很想在这个主题中了解更多,所以欢迎提供更多信息。

答案 1 :(得分:0)

图表位于drawable-hdpi文件夹中。

我只是这样做:

img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));

MID 7510 中的高度不合适。

设置这样的高度适用于平板电脑:

static int imgHeight = 0;

Drawable d = (BitmapDrawable) getResources().getDrawable(R.drawable.chart);

imgHeight = d.getIntrinsicHeight(); 

final ImageView img = new ImageView(getActivity());

img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (imgHeight * 1.5)));

这是因为 1 hdpi = 1.5 mdpi 。所以总高度应该是图像高度的1.5倍。