0

720p の画面で非常にうまく機能するアプリを作成しています。このアプリをさまざまな画面サイズで実行したいと考えています。この記事を読みました: http://developer.android.com/guide/practices/screens_support.html

しかし、私は混乱しています。異なるレイアウト (layout-normal、layout-large、layout-xlarge) 用に 3 つのフォルダーを作成し、各フォルダーに異なる XML ファイルを配置しました。しかし、レイアウトが通常の画面がいくつかあり、私のアプリは、一部の画面では見栄えがよく、他の画面では見栄えが悪くなります。たとえば、これらのサイズは通常のレイアウトです: (4.7 インチ WXGA、4 インチ WVGA、3.7 インチ WVGA、...) しかし、私のアプリは 4 インチと 3.7 インチでは見栄えがよく、他のタイプでは非常に見栄えが悪くなります。

layout-normal フォルダー内の私の activity-main.xml は次のとおりです。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/backasli"
    android:orientation="vertical" >

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="100dp"
        android:paddingTop="140dp"
        android:stretchColumns="3" >

        <TableRow
            android:id="@+id/tableRow6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center" >

            <TextView
                android:id="@+id/txt1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="pray :"
                android:textColor="#031a7b"
                android:textSize="15sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center" >

            <TextView
                android:id="@+id/namaztxt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColor="#031a7b"
                android:textSize="20sp" />
        </TableRow>

        <TableRow android:gravity="center" >

            <Button
                android:id="@+id/buttonchange"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:background="@drawable/ubtn"
                android:text="change"
                android:textColor="#ffffff"
                android:textSize="20sp" />
        </TableRow>
    </TableLayout>

</LinearLayout>
4

1 に答える 1

2

Android は、複数の画面サイズをサポートする非常に優れた方法を提供します。それは重みと呼ばれます。LinearLayout 重みを使用し、グラフィカル ビューをチェックして、サイズを変更する方法を理解する必要があります。

完全に回避:

  1. 解像度と画面サイズの計算。あなたは混乱してしまうでしょう。
  2. dpi 間での複数のレイアウト。

私がこれまでに開発したすべてのアプリ (12) は、すべてのプラットフォームで 1 つのレイアウト ファイルの重みを使用して作成されています。それは機能し、驚異のように機能します。

編集:

また、パディングに 5 dp 以上、マージンに 10 dp 以上を使用することはありません。このようにして、コードをクリーンに保ち、Android の重みが空き領域を処理します。

重みの詳細については、この質問を確認してください。はじめから丁寧に説明されています。

再度編集:

考えてみてください。すべての電話で dp が物理的な mm (ミリメートル) で「同じ」であると想定しています。そうではありません。実際、X と Y の 1 dp は、「mm」で異なる意味を持っている可能性があります。dp は一貫性がありません。100dp などのコードを使用し、ハードコーディングされた幅と高さを設定する場合は注意してください。さらに悪いことに、複数のレイアウト ファイルがあります。それらを使用すると、多くのコード メンテナンスの悪夢に陥ることになります。

于 2014-03-05T07:35:25.603 に答える