0

ここでは、320X480の画像(写真)があり、それをアプリケーションの背景画像として配置したいと考えています。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="@drawable/background">    

</RelativeLayout>

ただし、別のデバイスに配置すると、画像が非常に奇妙になります(画像のサイズが変更されるため、奇妙かどうかはわかりません)。
では、この問題をどのように解決するのですか?
写真があり、写真には一人がいるからです。人がデバイスAで非常に薄く見えるが、デバイスBで非常に太っている場合、それは非常に奇妙になります。

4

1 に答える 1

1

フルスクリーンの背景を作成する方法はたくさんあります。私がお勧めする3つの解決策は次のとおりです。

背景ソリューションとしての1つの画像は、これが機能するために最も頻繁に使用されるものであり、主要な画面サイズ= ldpi、mdpi、hdpi、およびxhdpiごとに1つ作成し、作成する必要があります。

  1. レイアウトの中央に配置され、中央の画像と混ざり合う無地の背景色または
  2. 適切に伸びる9パッチの画像にします。
  3. 3番目の解決策は、1つの画像を使用するタイルレイアウトを作成し、それを画面全体にティル方式でコピーすることです。
  4. 場合によっては、1つの画像を用意して、画面サイズに応じて切り抜くこともできます。これは機能する可能性がありますが、画像が大きすぎる場合、小さい/古い電話ではメモリ不足の例外が発生するため、ldpi、mdpi、hdpi、およびxhdpiに対して1つの画像があります。

(1)の例:

<?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:orientation="vertical"
    android:background="@android:color/black">
    <FrameLayout
        android:background="@drawable/splash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        >
    </FrameLayout>
</RelativeLayout>

スプラッシュ画像のサイズは任意です。重要なのは、画像の外側の部分が背景色に溶け込むことです。これは、背景色が背景と同じ色にゆっくりと溶け込む画像を作成することで実現できます。

(4)の例:

<?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:orientation="vertical"
    android:background="@android:color/black">
    <ImageView
        android:background="@drawable/splash"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        >
    </ImageView>
</RelativeLayout>
于 2012-08-28T08:34:46.773 に答える