在活动中的全屏幕背景图像
我看到许多使用全屏图像作为背景的应用程序。 这是一个例子:
我想在一个项目中使用它,到目前为止我发现的最好的方法是使用一个大尺寸的图像,把它放在一个ImageView
并使用android: adjustViewBounds="true"
调整边距
问题是,如果分辨率非常高的屏幕,图像不足。
我想到的另一个select是在FrameLayout
使用图像,在width
和height
使用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"