Androidで(コルドバスプラッシュ画面用の)xmlドローアブルが必要です。画面の中央に(引き伸ばさずに)透明なロゴを表示し、画面の残りの部分には背景色を設定したい。
私が最初に試したのは、xmlファイルに画像のみを追加することでした。
<?xml version="1.0" encoding="utf-8"?>
<bitmap
Android:src="@drawable/splashscreen"
Android:gravity="center_horizontal|center_vertical" />
これは、ロゴが画面の中央に表示されていることを示していますが、(明らかに)背景色はありません。
そこで、そのxmlに背景色を追加するためにさまざまなソリューションを試しました。例えば:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<solid Android:color="#FFFFFF" />
</shape>
</item>
<item>
<bitmap
Android:src="@drawable/splashscreen"
Android:gravity="center_horizontal|center_vertical" />
</item>
</layer-list>
これで、画像の背景色が変わりましたが、フルスクリーンではなくなりました。画像サイズに合わせて調整され、全画面表示時に引き伸ばされます。
では、どうすれば背景色で全画面描画可能になり、その上に中央の画像を表示できますか?
EDIT:すべての回答はRelativeLayoutの使用を提案しています-しかし、これは「drawable」のxmlファイル内では不可能だと思いますよね?編集できるレイアウトはありません。cordovaによって参照されるドローアブルのみです。
<?xml version="1.0" encoding="UTF-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/splash"
Android:gravity="fill_horizontal|fill_vertical" />
このようにして、
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/white" >//Set background color
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerInParent="true"
Android:adjustViewBounds="true"
Android:src="@drawable/splash_logo" />//set logo
</RelativeLayout>
必要に応じて、次のコードを使用できます。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item Android:drawable="@color/bg_color"/>
<item>
<bitmap
Android:gravity="center|bottom|clip_vertical"
Android:src="@drawable/your_image" />
</item>
</layer-list>