我在Android中设计了一款Native应用。我的查询很少,我不太清楚:
我们是否真的需要为所有类型的设备(xhdpi,mdpi,hdpi等)定义布局xml,如果想要支持所有尺寸的设备,或者只有一种布局可以在所有尺寸的设备中使用?< / p>
我在我的应用中创建了几个按钮,这些按钮将放置在设备的中心底部和顶部。我已经使用了相对和线性布局,dp用于按钮和布局的宽度。但它并没有在每个设备上显示相似之处,我是否需要为所有类型的设备重新设计应用程序?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/Container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="MergeRootFrame" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="118dip" >
</RelativeLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout1"
android:background="@drawable/blackboard"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="346dp" >
<View
android:id="@+id/view2"
android:layout_width="180dip"
android:layout_height="3dip"
android:layout_alignRight="@+id/result"
android:layout_below="@+id/second"
android:layout_marginTop="22dip"
android:background="#0000ff" />
<Button
android:id="@+id/second"
android:layout_width="150dip"
android:layout_height="50dip"
android:layout_alignLeft="@+id/first"
android:layout_centerVertical="true"
android:background="@drawable/curve_shape"
android:text="2"
android:textSize="30sp" />
<Button
android:id="@+id/first"
android:layout_width="150dip"
android:layout_height="50dip"
android:layout_above="@+id/second"
android:layout_alignParentRight="true"
android:layout_marginBottom="56dip"
android:layout_marginRight="190dip"
android:background="@drawable/curve_shape"
android:text="1"
android:textSize="30sp" />
<Button
android:id="@+id/result"
android:layout_width="150dip"
android:layout_height="50dip"
android:layout_alignLeft="@+id/second"
android:layout_below="@+id/view2"
android:layout_marginTop="27dp"
android:background="@drawable/curve_shape"
android:text="res" />
</RelativeLayout>
</LinearLayout>
<Button
android:id="@+id/ansBtn3"
android:layout_width="114dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ansBtn2"
android:layout_alignRight="@+id/ansBtn2"
android:layout_below="@+id/linearLayout2"
android:layout_marginTop="58dp"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn1"
android:layout_width="180dip"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ansBtn4"
android:layout_below="@+id/ansBtn4"
android:layout_marginTop="39dp"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn2"
android:layout_width="180dip"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ansBtn1"
android:layout_alignBottom="@+id/ansBtn1"
android:layout_alignParentLeft="true"
android:layout_marginLeft="31dp"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn4"
android:layout_width="118dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ansBtn3"
android:layout_alignBottom="@+id/ansBtn3"
android:layout_marginLeft="68dp"
android:layout_toRightOf="@+id/ansBtn3"
android:onClick="checkResult"
android:text="2345" />
</RelativeLayout>
答案 0 :(得分:1)
xhdpi和hdpi等实际上并没有定义屏幕大小。它们是屏幕密度的标识符(read more)您可以为所有这些标识符设置一个布局。但是,最好使用所有这些密度的图像来保持所有设备的UI质量一致
这样的事情:
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@drawable/blackboard"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/first"
android:layout_width="150dip"
android:layout_height="50dip"
android:layout_marginBottom="56dip"
android:background="@drawable/curve_shape"
android:text="1"
android:textSize="30sp" />
<Button
android:id="@+id/second"
android:layout_width="150dip"
android:layout_height="50dip"
android:background="@drawable/curve_shape"
android:text="2"
android:textSize="30sp" />
<View
android:id="@+id/view2"
android:layout_width="180dip"
android:layout_height="3dip"
android:layout_marginTop="22dip"
android:background="#0000ff" />
<Button
android:id="@+id/result"
android:layout_width="150dip"
android:layout_height="50dip"
android:layout_marginTop="27dp"
android:background="@drawable/curve_shape"
android:text="res" />
</LinearLayout>
<Button
android:id="@+id/ansBtn3"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ansBtn2"
android:layout_alignRight="@+id/ansBtn2"
android:layout_marginBottom="20dp"
android:layout_above="@+id/ansBtn1"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/ansBtn4"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn2"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ansBtn1"
android:layout_alignBottom="@+id/ansBtn1"
android:layout_alignParentLeft="true"
android:onClick="checkResult"
android:text="2345" />
<Button
android:id="@+id/ansBtn4"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/ansBtn3"
android:layout_alignBottom="@+id/ansBtn3"
android:layout_alignParentRight="true"
android:onClick="checkResult"
android:text="2345" />
您的布局在各种屏幕尺寸上会略有不同,因为对每种屏幕尺寸和屏幕密度设置不同的设计是不合逻辑的(可能)。我建议您通过Supporting Multiple Screens阅读。它清楚地解释了你如何做到这一点(它很长但值得一读)
答案 1 :(得分:0)
应该有一个布局。您可以将不同的布局用于其他目的,例如添加仅从特定API可用的功能,如果处于纵向或横向模式,则具有不同的布局等。
没有看到代码很难说。从理论上讲,它应该看起来很相似,是的。根据我的经验,Android版本对此类内容的影响要大于设备的大小。