繁体   English   中英

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

[英]Bitmap size difference for devices with same density, inches and 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;

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

-为什么规范在代码上会有所不同,并且在线提供的名称有所不同?

因为您可以在线找到设备使用的材料,所以通常是正确的值。 您可以通过构造函数在为其设备构建其android版本时设置的代码规范来查找。 含义:可能是错误的! 尤其适用于构造商不明或价格低廉的“ weisung”等设备。

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

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

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

-如何区分它们?

绝对不是屏幕规格。 如果您确实需要管理“ weisung”设备,则可以随时通过代码检查设备配置中的制造商。 (假设他们已经在制造商字段XD中正确设置了其标识)

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

我真的很想知道更多有关此主题的信息,因此欢迎您提供更多信息。

图表位于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倍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM