对于相同的密度,英寸,分辨率设备位图大小差异(Bitmap size difference for

2019-10-18 13:41发布

我有两个平板设备:

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;

Answer 1:

我会尽力回答每一个问题,但我会以更重要的一个开始:

-为什么是规范未来的代码不同,给予不同的上网吗?

因为你在网上找到使用什么材料的设备,其通常是正确的值。 您可以通过由时,他们也建立了自己的Android版本为他们的设备构造设置代码规格找到。 含义:它可以是假的! 特别是从未知的构造函数或中国低成本的设备,如“weisung”。

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

-是否有负责产生不同的位图尺寸平板电脑两者的其他因素?

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

-如何区分它们?

明确不会从屏幕规格。 如果你真的需要管理“weisung”设备可以随时检查由码设备配置制造商。 (假设它们已正确设置它们的识别在制造商字段XD)

检查定值: android.os.Build.MANUFACTURER

我真的很想知道更多这个话题太所以任何更多的信息欢迎。



Answer 2:

该图是在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