2013-04-21 19 views
122

フルスクリーンイメージをバックグラウンドとして使用する多くのアプリケーションがあります。 この例は次のとおりです。アクティビティのフルスクリーン背景画像

Full screen background image

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

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

私が考える別のオプションは、このイメージを伸ばし...背景としてwidthheightmatch_parentと、FrameLayoutに画像を使用することですが、私は結果が非常に良好ではないと思います。

どうすればよいですか?あなたの活動の主なレイアウト上の

+2

これはバックグラウンドでは機能しませんが、イメージ上で動作するはずです。 'android:scaleType =" centerCrop "' – EGHDK

+0

詳細なブログ:http://sforsuresh.in/set-background-image-android-xml/ –

答えて

184

いくつかの方法があります。

オプション1:

が異なる解像度ごとに異なる最適な画像を作成し、関連する描画可能なフォルダに配置します。

が単一の大きな画像を追加します。次に

android:background="@drawable/your_image

オプション2を設定します。 FrameLayoutを使用します。最初の子としてImageViewを追加します。あなたのImageViewで次のように設定します。

NoToastの答えとラインで
android:src="@drawable/your_image" 
android:scaleType = "centerCrop" 
+1

「your_image」はどこに保存しますか? –

+4

res-> drawableフォルダにあります。複数の可能性があります - それぞれ異なる解像度(例えば、低解像度/高解像度)を表します。解像度ごとに特定のイメージがない場合は、いずれかのイメージが機能します。 – krodmannix

+3

答えは良いです。しかし、私は誰かが各dpiグループの典型的な電話サイズを見つけたのだろうかと思います。これは画像を準備するときには非常に便利です。編集:見つかりました - http://stackoverflow.com/questions/10574363/android-splash-screen-image-sizes-to-fit-all-devices/15744389#15744389 – fox

7

何について

android:background="@drawable/your_image"

この方法では、適切なres/drawable-**dpiフォルダに配置することによって、さまざまな画面密度の異なる画像を表示することもできます。

1

、あなたは、削除あなたのres /描画可能LDPI、MDPI、hdpi、xは-hdpi(エクストラ用大画面)で "your_image" の複数のバージョンを持っている必要がありますをmatch_parentとアンドロイドを保つ:

13

adjustViewBounds = "true" をあなたはこのlink

を訪問詳細については以下のフォルダ

に、さまざまなサイズの画像を配置する必要があります

  • LDPI

  • MDPI

  • hdpi

  • xhdpi

  • xxhdpi

、代わりRelativeLayout又は背景のLinearLayoutを使用別のオプションは、(のは、それをbackgroung.jpg名前ましょう)ドロウアブルに単一の画像(必ずしも大きくはない)を追加することなく、あなたのXMLのルートでImageViewのをiv_backgroundを作成することです

<?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> 
+0

私は '予期しない名前空間接頭辞" xmlns "がタグRelativeLayout'に見つかりました。 – CodyBugstein

+0

これはmitmapですか? –

+0

@ drawableを高くする –

23

例をfollwoingとしてImageViewのを使用しての"src"属性。そして、対応する活性の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); 

ノートリミング、無多くの異なるサイズの画像。 お手伝い願います!

+2

これは便利な解決策ですが、メインスレッドからビットマップ処理を忘れないようにしてください。http:// developer.android.com/training/displaying-bitmaps/process-bitmap.html –

5

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

android:background="@drawable/your_image 

を使用しています。

0

あなたは単に、あなたの背景画像として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> 
3

あなたのイメージがあなたのテーマのスタイル定義に次のように入れ、透明アクションバーBEHIND表示させたい場合は:

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

お楽しみください!

+0

これは私が探していたものです – user2759156

-1

作業中です。あなたはこれをトライアウト必要があります。

android:src="@drawable/img" 
1

が働いて、あなたのRelativelayout /のLinearLayout 内android:background="@drawable/your_image"を追加します。

2

これが掲載されてからしばらく時間がかかりましたが、これが助けになりました。

ネストされたレイアウトを使用できます。 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>