在活动中的全屏幕背景图像

我看到许多使用全屏图像作为背景的应用程序。 这是一个例子:

全屏幕背景图像

我想在一个项目中使用它,到目前为止我发现的最好的方法是使用一个大尺寸的图像,把它放在一个ImageView并使用android: adjustViewBounds="true"调整边距

问题是,如果分辨率非常高的屏幕,图像不足。

我想到的另一个select是在FrameLayout使用图像,在widthheight使用match_parent作为背景…这会拉伸图像,但是我认为效果不是很好。

你会怎么做?

有几种方法可以做到这一点。

选项1:

为不同的dpi创build不同的完美图像,并将其放置在相关的可绘制文件夹中。 然后设置

android:background="@drawable/your_image

选项2:

添加一个大的图像。 使用FrameLayout。 作为第一个孩子添加一个ImageView 。 在ImageView中设置以下内容。

 android:src="@drawable/your_image" android:scaleType = "centerCrop" 

另一个select是在drawable中添加一个单独的图像(不一定是大的)(让我们将其命名为backgroung.jpg),在没有“src”属性的xml根目录下创build一个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); 

没有裁剪,没有许多不同大小的图像。 希望能帮助到你!

你应该把各种尺寸的图片放到下面的文件夹中

有关更多详情,请访问此链接

  • LDPI

  • MDPI

  • 华电国际

  • xhdpi

  • xxhdpi

并使用RelativeLayout或LinearLayout背景,而不是使用ImageView作为以下示例

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

在你的活动中首先是线性或相对布局。

如果你想让你的图像显示一个透明的操作栏,可以在主题的样式定义中join以下内容:

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

根据NoToast的回答,你需要在你的res / drawable-ldpi,mdpi,hdpi,x-hdpi(对于xtra大屏幕)有多个版本的“your_image”, 删除match_parent并保持android:adjustViewBounds =“真正”

在你的Relativelayout / Linearlayout Worked内添加android:background="@drawable/your_image"

如果你有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> 

加工。 你应该试试这个:

 android:src="@drawable/img"