全画面画像を背景として使用する多くのアプリケーションがあります。これは一例です。
これをプロジェクトで使用したいのですが、これまでに見つけた最良の方法は、サイズの大きい画像を使用し、それをImageView
に入れ、Android: adjustViewBounds="true"
を使用して余白を調整することです
問題は、非常に高い解像度の画面では、画像が不足することです。
私が考えたもう一つの選択肢は、FrameLayout
のmatch_parent
と背景としてwidth
を使ってheight
で画像を使うことです。
どうしますか?
あなたがそれを行うことができるいくつかの方法があります。
オプション1:
異なるdpiのための異なる完璧な画像を作成し、関連する描画可能なフォルダに配置しますその後設定
Android:background="@drawable/your_image
オプション2:
単一の大きな画像を追加します。 FrameLayoutを使用してください。最初の子としてImageView
を追加します。 ImageViewで以下を設定してください。
Android:src="@drawable/your_image"
Android:scaleType = "centerCrop"
もう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);
トリミングなし、サイズの異なる画像はあまりありません。それが役に立てば幸い!
さまざまなサイズの画像を以下のフォルダに入れてください。
詳細はこちらをご覧ください 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>
どうですか?
Android:background="@drawable/your_image"
あなたの活動のメインレイアウトに?
このようにして、適切なres/drawable-**dpi
フォルダに配置することで、さまざまな画面密度に合わせてさまざまな画像を作成することもできます。
これを使って
Android:background="@drawable/your_image
あなたの活動では非常に最初の線形または相対的なレイアウト。
画像に透明なアクションバーの後ろを表示させたい場合は、テーマのスタイル定義に次のように入力します。
<item name="windowActionBarOverlay">true</item>
<item name="Android:windowActionBarOverlay">true</item>
楽しい!
これが投稿されてからしばらく経ちましたが、これは私を助けました。
ネストしたレイアウトを使うことができます。 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>
Relativelayout/Linearlayout Workedの内側にAndroid:background="@drawable/your_image"
を追加します。
NoToastの答えに沿って、あなたはあなたのres/drawable-ldpi、mdpi、hdpi、x-hdpi(大画面の場合)、 match_parent に "your_image"の複数のバージョンが必要です。 keep Android:adjustViewBounds = "true"
あなたがあなたの背景画像として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>