[英]Identify devices uniquely with same density and screen size category but different screen size in inches
[英]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.