2

我正在开发一个多屏 Android 2.2.2 应用程序。

为了测试不同的屏幕尺寸,我使用了 eclipse (Juno release)图形布局。这就是我所拥有的。

main_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/no_conectado" >

    <TextView
        android:id="@+id/labelSelGateName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/labelSelGateName_marginTop"
        android:gravity="center_horizontal"
        android:textSize="@dimen/labelSelGateName_textsize" />


    <TextView
        android:id="@+id/labelSelOpened"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/labelSelGateName"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/labelSelOpened_marginTop"
        android:gravity="center_horizontal"
        android:textSize="@dimen/labelSelOpened_textsize" />

    <ProgressBar
        android:id="@+id/indicatorActivityView"
        android:layout_width="@dimen/indicatorActivityView_height"
        android:layout_height="@dimen/indicatorActivityView_width"
        android:layout_below="@+id/labelSelOpened"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="@dimen/indicatorActivityView_marginTop" />

    <ImageButton
        android:id="@+id/btnMyGates"
        android:layout_width="@dimen/btnMyGates_width"
        android:layout_height="@dimen/btnMyGates_height"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/indicatorActivityView"
        android:layout_marginLeft="@dimen/btnMyGates_marginLeft"
        android:layout_marginTop="@dimen/btnMyGates_marginTop"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onGateClick" />

    <ImageButton
        android:id="@+id/btnOpen"
        android:layout_width="@dimen/btnOpen_width"
        android:layout_height="@dimen/btnOpen_height"
        android:layout_alignTop="@+id/btnMyGates"
        android:layout_centerHorizontal="true"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onOpenDoorClick" />


    <ImageButton
        android:id="@+id/btnClose"
        android:layout_width="@dimen/btnClose_width"
        android:layout_height="@dimen/btnClose_height"
        android:layout_alignBottom="@+id/btnMyGates"
        android:layout_alignLeft="@+id/btnOpen"
        android:layout_marginBottom="@dimen/btnClose_marginBottom"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onCloseDoorClick" />

    <ImageButton
        android:id="@+id/btnOptions"
        android:layout_width="@dimen/btnOptions_width"
        android:layout_height="@dimen/btnOptions_height"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/btnMyGates"
        android:layout_marginRight="@dimen/btnOptions_marginRight"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onOptionClick" />

    <ImageButton
        android:id="@+id/btnFaqs"
        android:layout_width="@dimen/btnFaqs_width"
        android:layout_height="@dimen/btnFaqs_height"
        android:layout_marginTop="@dimen/btnFaqs_marginTop"
        android:layout_toLeftOf="@+id/btnOptions"
        android:layout_below="@+id/btnClose"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onFAQClick" />

    <ImageButton
        android:id="@+id/btnInfo"
        android:layout_width="@dimen/btnInfo_width"
        android:layout_height="@dimen/btnInfo_height"
        android:layout_alignLeft="@+id/btnOptions"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="@dimen/btnInfo_marginLeft"
        android:background="@null"
        android:contentDescription="@string/layout_empty"
        android:onClick="onInfoClick" />

</RelativeLayout>

尺寸.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="labelSelGateName_marginTop">40dp</dimen>
    <dimen name="labelSelGateName_textsize">14sp</dimen>

    <dimen name="labelSelOpened_marginTop">0dp</dimen>
    <dimen name="labelSelOpened_textsize">14sp</dimen>

    <dimen name="indicatorActivityView_width">20dp</dimen>
    <dimen name="indicatorActivityView_height">20dp</dimen>
    <dimen name="indicatorActivityView_marginTop">28dp</dimen>

    <dimen name="btnMyGates_width">70dp</dimen>
    <dimen name="btnMyGates_height">110dp</dimen>
    <dimen name="btnMyGates_marginLeft">29dp</dimen>
    <dimen name="btnMyGates_marginTop">60dp</dimen>

    <dimen name="btnOpen_width">90dp</dimen>
    <dimen name="btnOpen_height">55dp</dimen>

    <dimen name="btnClose_width">90dp</dimen>
    <dimen name="btnClose_height">50dp</dimen>
    <dimen name="btnClose_marginBottom">0dp</dimen>

    <dimen name="btnOptions_width">70dp</dimen>
    <dimen name="btnOptions_height">110dp</dimen>
    <dimen name="btnOptions_marginRight">30dp</dimen>

    <dimen name="btnFaqs_width">110dp</dimen>
    <dimen name="btnFaqs_height">70dp</dimen>
    <dimen name="btnFaqs_marginTop">10dp</dimen>

    <dimen name="btnInfo_width">110dp</dimen>
    <dimen name="btnInfo_height">60dp</dimen>
    <dimen name="btnInfo_marginLeft">14dp</dimen>
</resources>

dimens.xml在这些文件夹中有四个: values-smallvalues-normal和。values-largevalues-xlarge

有了这些文件,它在Nexus One,7in WSVGA Tablet10.1in WXGA Tablet. Galaxy Nexus但是,它在、5.4 FWVGA和中看起来不太5.1 WVGA4.7in WXGA

当我说它看起来不太好时,我的意思是每个TextView,ImageButton等都已移动并且它们不在正确的位置。

我需要更多文件吗?

4

3 回答 3

1

我认为这是 Android 初始设计的一个限制——它的 XML 布局不允许指定类似于 HTML 表格的基于百分比或类似表格的布局,即没有精确尺寸的布局。

“权重”属性不是一个选项,因为当我尝试指定任意布局时,Eclipse 告诉我“嵌套权重不利于性能”

限定符也不是一个好的架构解决方案,因为两个不同的设备可能在相同的“屏幕密度”对下限定,例如 HTC One S / HTC One X。这就是为什么谷歌重新设计它在 3.x 中引入 swdp 限定符.

对于 Android 2.3,您可以创建针对 480x800 优化的“默认”用户界面并将其布局在屏幕中心。它在 540x960 和更高的屏幕上看起来会更小,但仍然没有损坏。

于 2012-09-08T13:36:33.007 回答
0

Galaxy Nexus 有一个normal屏幕(它的分辨率是1280 x 720)并且有xhdpi密度。

于 2012-07-24T18:58:45.380 回答
0

Galaxy nexus(和 Galaxy s3 和 htc one x)具有正常的屏幕尺寸,具有 xhdpi 密度。

参考:

http://www.youtube.com/watch?feature=player_detailpage&v=PwC1OlJo5VM#t=3047s

于 2012-07-24T19:00:51.077 回答