我有两个平板设备:
1)华硕便条172V片剂
规格在线表示为:600个* 1024个像素,7.0英寸(170〜PPI像素密度) LINK
通过代码规格:1024个* 552个像素,7.0英寸(PPI 160像素密度)
2)MID 7510片剂
规格在线表示为:800×480个像素,7.0英寸(无密度提及任何地方) LINK
通过代码规格:1024个* 552个像素,7.0英寸(PPI 160像素密度)
我的问题是:
-无论是片剂具有相同的密度和分辨率(通过代码),所以我怎样才能以设置该位图的高度区分它们(宽度来校正两者)作为时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倍。
文章来源: Bitmap size difference for devices with same density, inches and resolution