簡単なクイズテストアプリ「TargetSDKAPI 16(4.1 Jelly Beans)」画面3.7(480x800 hdpi)を作成しています。
このアプリは3.7(480x800)で見栄えがしますが、2.7(240x320)、7.0(1024x600)、10.1(1280x800)などの別のスクリーニングデバイスでこれを実行すると、画面の解像度が乱れたり、見栄えが悪くなります。
理解を深めるには、スクリーンショットを参照してください。
2.7(240x320)
http://postimg.cc/image/m3sob88mp/
3.7(480x800)
http://postimg.cc/image/wf513w0c1/
7.0(1024x600)
http://postimg.cc/image/fc298djn5/
10.1(1280x800)
http://postimg.cc/image/isk5gon7p/
3.7(480x800)のように、すべての画面サイズで互換性がある/完璧に見えるようにしたい
すべてのAndroidデバイスの画面サイズを自動サイズ変更、互換性のあるものにし、すべての画面解像度で完璧に見えるように調整する方法は?
または、別のアプリや別の画面サイズを作成する必要がありますか?
画面互換にしようとしたのは、これらの行を「AndroidManifest.xml」に追加したことです。
<supports-screens>
Android:resizeable="true"
Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true"
</supports-screens>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.usd.quiztest"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8"
Android:targetSdkVersion="16" />
<supports-screens>
Android:resizeable="true"
Android:smallScreens="true"
Android:normalScreens="true"
Android:largeScreens="true"
Android:xlargeScreens="true"
Android:anyDensity="true"
</supports-screens>
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="com.usd.quiztest.Logo"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name="com.usd.quiztest.First"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q1"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q2"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q3"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q4"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Q5"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.FinalPage"
Android:label="@string/app_name" >
</activity>
<activity
Android:name="com.usd.quiztest.Score"
Android:label="@string/app_name" >
</activity>
</application>
</manifest>
first_screen.xml(これはスクリーンショットに表示されている画面です)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/RelativeLayout1"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="30dp"
Android:contentDescription="ql"
Android:gravity="center"
Android:src="@drawable/ql" />
<Button
Android:id="@+id/start_button"
Android:layout_width="254dp"
Android:layout_height="wrap_content"
Android:layout_below="@+id/imageView1"
Android:layout_centerHorizontal="true"
Android:layout_marginTop="30dp"
Android:text="Start Quiz Test"
Android:textColor="#000000" />
</RelativeLayout>
さまざまな画面サイズをサポートしたい場合、重要なことがいくつかあります。
drawables-hdpi
、drawables-xhdpi
など)dp
の代わりにpx
を使用します。複数の画面サイズのサポートについて詳しくは、 こちら をご覧ください。
編集:
異なるボタン/フォントサイズと余白を使用するには、dimens.xml
を使用する必要があります。
res/values-hdpi/dimens.xml
res/values-xhdpi/dimens.xml
例dimens.xml
:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>
線形レイアウトをメインレイアウトとして使用し、weightSumを使用して、それをパート3、4、または5に分割します。次に、他のサブ線形レイアウトを使用して、メインレイアウト全体から各サブ線形レイアウトにweightSumを割り当てます。サブレイアウトでUIウィジェットを管理します。これが以下の例です
制約レイアウトを使用する必要があります。オブジェクト間に制約を作成できます...サイズには "match_constraints"、 "match_parent"、 "wrap_content"を使用する必要があります。また、マージンも使用する必要があります。 ConstraintLayoutを使用してレスポンシブUIを構築する方法 ==
異なるlayoutフォルダーとvaluesフォルダーを異なるセットで作成する必要があります寸法の。次に、特定のレイアウトフォルダーを参照するディメンションフォルダーからxmlのサイズを適用します。
以下のリンクで、問題なくすべてのアプリに使用している優れたソリューションと、画面の互換性を実現するための新しい手法を見つけました。