在活动中的全屏背景图像

时间:2013-04-21 20:40:37

标签: android background imageview android-framelayout

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

Full screen background image

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

问题在于,如果屏幕分辨率很高,则图像不足。

我想到的另一个选项是使用FrameLayout中的图片,match_parent中的widthheight作为背景...这会拉伸图片,但是我认为结果并不是很好。

你会怎么做?

13 个答案:

答案 0 :(得分:210)

有几种方法可以做到。

选项1:

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

android:background="@drawable/your_image

选项2:

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

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

答案 1 :(得分:25)

另一个选择是在drawable中添加一个单独的图像(不一定很大)(让它命名为backgroung.jpg),在xml的根目录下创建一个ImageView iv_background,而不需要" src&# 34;属性。 然后在相应活动的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 :(得分:18)

您应该将各种尺寸的图像放入以下文件夹

有关详细信息,请访问此link

  • LDPI

  • MDPI

  • HDPI

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

答案 3 :(得分:7)

怎么样?

android:background="@drawable/your_image"

关于活动的主要布局?

通过这种方式,您可以将不同的图像放在相应的res/drawable-**dpi文件夹中,以获得不同的屏幕密度。

答案 4 :(得分:6)

使用此

android:background="@drawable/your_image

在您的活动中,第一个线性或相对布局。

答案 5 :(得分:6)

如果您希望图像显示为透明操作栏,请将以下内容放入主题的样式定义中:

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

享受!

答案 6 :(得分:4)

自发布以来已经有一段时间了,但这对我有所帮助。

您可以使用嵌套布局。从RelativeLayout开始,然后将ImageView放入其中。

将height和width设置为match_parent以填充屏幕。

设置scaleType =&#34; centreCrop&#34;因此图像适合屏幕并且不会伸展。

然后您可以像往常一样放入任何其他布局,例如下面的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>

答案 7 :(得分:1)

在NoToast的答案中,您需要在res / drawable-ldpi,mdpi,hdpi,x-hdpi(对于xtra大屏幕)中有多个版本的“your_image”,删除match_parent < / strong>并保持 android:adjustViewBounds =“true”

答案 8 :(得分:1)

在Relativelayout / Linearlayout中添加android:background="@drawable/your_image" 工作

答案 9 :(得分: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>

答案 10 :(得分:-1)

工作。你应该试试这个:

android:src="@drawable/img"

答案 11 :(得分:-1)

three step for put background

1)您应该选择自己喜欢的图片。例如:enter image description here

2)然后以可绘制方式复制此图片。     警告:您应该选择名称图片的缩写。

enter image description here

3)您转到xml预期页面并编写:

android:background =“ id图片” 例如我的图片ID是@ drawable / download。

enter image description here

完成。

答案 12 :(得分:-2)

最简单的方法:

第1步:打开AndroidManifest.xml文件

You can see the file here!

第2步:找到android:theme="@style/AppTheme" >

第3步:更改为android:theme="@style/Theme.AppCompat.NoActionBar" >

第4步:然后添加ImageView和图片

第4步:就这样!