web-dev-qa-db-ja.com

アクティビティのフルスクリーンの背景画像

全画面画像を背景として使用する多くのアプリケーションがあります。これは一例です。

Full screen background image

これをプロジェクトで使用したいのですが、これまでに見つけた最良の方法は、サイズの大きい画像を使用し、それをImageViewに入れ、Android: adjustViewBounds="true"を使用して余白を調整することです

問題は、非常に高い解像度の画面では、画像が不足することです。

私が考えたもう一つの選択肢は、FrameLayoutmatch_parentと背景としてwidthを使ってheightで画像を使うことです。

どうしますか?

134
Sergio76

あなたがそれを行うことができるいくつかの方法があります。

オプション1:

異なるdpiのための異なる完璧な画像を作成し、関連する描画可能なフォルダに配置しますその後設定

Android:background="@drawable/your_image

オプション2:

単一の大きな画像を追加します。 FrameLayoutを使用してください。最初の子としてImageViewを追加します。 ImageViewで以下を設定してください。

Android:src="@drawable/your_image"
Android:scaleType = "centerCrop"
208
stinepike

もう1つの方法は、ドロアブルに1つの画像(必ずしも大きいとは限りません)を追加し(名前はbackgroung.jpgにします)、 "src"属性を指定せずにxmlのルートにImageView iv_backgroundを作成します。次に、対応するアクティビティのonCreateメソッドで次のようにします。

    /* create a full screen window */
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.your_activity);

    /* adapt the image to the size of the display */
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    Bitmap bmp = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(
      getResources(),R.drawable.background),size.x,size.y,true);

    /* fill the background ImageView with the resized image */
    ImageView iv_background = (ImageView) findViewById(R.id.iv_background);
    iv_background.setImageBitmap(bmp);

トリミングなし、サイズの異なる画像はあまりありません。それが役に立てば幸い!

25
axplusb

さまざまなサイズの画像を以下のフォルダに入れてください。

詳細はこちらをご覧ください link

  • ldpi

  • mDPI

  • hdpi

  • xhdpi

  • xxhdpi

次の例としてImageViewを使用する代わりにRelativeLayoutまたはLinearLayoutの背景を使用します。

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

</RelativeLayout>
18
Munish Kapoor

どうですか?

Android:background="@drawable/your_image"

あなたの活動のメインレイアウトに?

このようにして、適切なres/drawable-**dpiフォルダに配置することで、さまざまな画面密度に合わせてさまざまな画像を作成することもできます。

7
NoToast

これを使って

Android:background="@drawable/your_image

あなたの活動では非常に最初の線形または相対的なレイアウト。

6
Syed

画像に透明なアクションバーの後ろを表示させたい場合は、テーマのスタイル定義に次のように入力します。

<item name="windowActionBarOverlay">true</item>
<item name="Android:windowActionBarOverlay">true</item>

楽しい!

5
Jens

これが投稿されてからしばらく経ちましたが、これは私を助けました。

ネストしたレイアウトを使うことができます。 RelativeLayoutから始めて、その中にImageViewを配置します。

画面いっぱいに表示するには、高さと幅をmatch_parentに設定します。

画像が画面に収まり、伸びないように、scaleType = "centreCrop"を設定します。

それから、以下のLinearLayoutのように、通常どおりに他のレイアウトを配置できます。

画像の透明度を設定するには、Android:alphaを使用できます。

<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">

  <ImageView
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scaleType="centerCrop"
    Android:src="@drawable/image"
    Android:alpha="0.6"/>

  <LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    tools:context=".MainActivity">

      <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="Hello"/>

      <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="There"/>

   </LinearLayout>
</RelativeLayout>
4
smurph

Relativelayout/Linearlayout Workedの内側にAndroid:background="@drawable/your_image"を追加します。

1
Mwongera

NoToastの答えに沿って、あなたはあなたのres/drawable-ldpi、mdpi、hdpi、x-hdpi(大画面の場合)、 match_parent に "your_image"の複数のバージョンが必要です。 keep Android:adjustViewBounds = "true"

1
sb_269

あなたがあなたの背景画像としてbg.pngを持っているならば、単純に:

<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/bg"
    tools:context=".MainActivity" >

    <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:layout_centerVertical="true"
        Android:text="@string/hello_world"/>
</RelativeLayout>