例如: - 三星Galaxy S III(1280 x 720)和三星Galaxy S 4(1920 x 1080)使用来自xhdpi的资源。我正在连续左右,中间和右边排列3个图标,大小为(256 x 256),但它在SIII和s4上重叠,它们之间的差距很大。
图标的大小应该是屏幕宽度的1/3,还是有任何解决方法?
这是以下提到的解决方案后的布局示例快照。 http://postimg.org/image/97aabr2wd/
它正确缩放,但在顶部和底部留出空间。我希望此图像中的结果与快照类似http://postimg.org/image/r6ico4vil/
其中1,2和3的高度应相同。它只是连续3个红色,绿色和蓝色图像后的空间。怎么实现这个?提前谢谢。
答案 0 :(得分:1)
三星Galaxy S4是XXHDPI,而不是XHDPI。
这是一种检查设备密度的方法:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int density = dm.densityDpi;
switch(density)
{
case DisplayMetrics.DENSITY_LOW:
Toast.makeText(context, "ldpi", Toast.LENGTH_SHORT).show();
break;
case DisplayMetrics.DENSITY_MEDIUM:
Toast.makeText(context, "mdpi", Toast.LENGTH_SHORT).show();
break;
case DisplayMetrics.DENSITY_HIGH:
Toast.makeText(context, "hdpi", Toast.LENGTH_SHORT).show();
break;
case DisplayMetrics.DENSITY_XHIGH:
Toast.makeText(context, "xhdpi", Toast.LENGTH_SHORT).show();
break;
case DisplayMetrics.DENSITY_XXHIGH:
Toast.makeText(context, "xxhdpi", Toast.LENGTH_SHORT).show();
break;
}
我从这个answer开始。
关于填充整个屏幕宽度的3个图像,您可以使用具有布局权重的线性布局。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="9" >
<ImageView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3" />
<ImageView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3" />
<ImageView
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="3" />
</LinearLayout>
答案 1 :(得分:0)
在android -
中px = dp *(dpi / 160)
1.在您的第一个问题中,使用上述公式,横向模式下的960dp x 720dp,320dpi意味着1920px x 1440px用于xlarge屏幕。
2.640dp x 480dp 240dpi意味着960px x 720px适用于横向模式下的大屏幕。
答案 2 :(得分:0)
您无法仅使用图像保证1/3的屏幕。即使两个设备具有相同的dpi(或XHdpi),也不意味着它们具有相同的大小。 唯一的方法是使用代码或布局xml。 尝试使用wights。
android:layout_width="0dp"
android:layout_weight="0.33"
使用此代码,您可以保证如果宽度,视图将是屏幕的1/3。