2

マルチスクリーン Android 2.2.2 アプリケーションを開発しています。

さまざまな画面サイズをテストするために、Eclipse (Juno リリース)グラフィック レイアウトを使用しています。これは私が持っているものです。

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-smallには、 、values-normalvalues-largeおよびの4 つがありvalues-xlargeます。

これらのファイルを使用すると、Nexus One7in WSVGA Tabletおよび10.1in WXGA Tablet. Galaxy Nexusただし、 、 、5.4 FWVGAでは見栄えがよくありませ5.1 WVGA4.7in WXGA

見栄えがよくないと言うとき、すべてTextViewImageButton、 などが移動し、適切な場所にないことを意味します。

さらにファイルが必要ですか?

4

3 に答える 3

1

これは Android の初期設計の制限だと思います。その XML レイアウトでは、HTML テーブルに似たパーセントベースまたはテーブルのようなレイアウト、つまり正確な寸法のないレイアウトを指定できません。

「重み」属性はオプションではありません。任意のレイアウトを指定しようとすると、Eclipse から「ネストされた重みはパフォーマンスに悪い」と表示されるためです。

HTC One S / HTC One X など、2 つの異なるデバイスが同じ「画面密度」ペアの下で認定される可能性があるため、修飾子も優れたアーキテクト ソリューションではありません。 .

Android 2.3 では、480x800 に最適化された「デフォルト」UI を作成し、画面中央にレイアウトできます。540x960 以上の画面では小さく見えますが、それでも壊れません。

于 2012-09-08T13:36:33.007 に答える
0

ギャラクシーネクサス(およびギャラクシーs3、およびhtc one x)の画面サイズは通常で、密度はxhdpiです。

参照:

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

于 2012-07-24T19:00:51.077 に答える
0

Galaxy Nexus にはnormal画面 (解像度は1280 x 720) があり、xhdpi密度があります。

于 2012-07-24T18:58:45.380 に答える