활동의 전체 화면 배경 이미지


145

전체 화면 이미지를 배경으로 사용하는 많은 응용 프로그램이 있습니다. 이것은 예입니다 :

전체 화면 배경 이미지

나는 프로젝트, 난이, 큰 크기의 이미지를 사용하십시오에 넣어하는 것입니다 지금까지 발견 한 가장 좋은 방법이를 사용하려면 ImageView사용할 android: adjustViewBounds="true"여백을 조정

문제는 해상도가 매우 높은 화면에서는 이미지가 짧아진다는 것입니다.

내가 생각하는 또 다른 옵션은에서 이미지를 사용하는 것입니다 FrameLayout와 함께, match_parent에서 widthheight이 이미지를 뻗어 ... 배경으로,하지만 결과는 매우 좋지 않다라고 생각합니다.

어떻게 하시겠습니까?


3
이것이 배경에서 작동한다고 믿지 않지만 이미지에서는 작동해야합니다. android:scaleType="centerCrop"
EGHDK

답변:


223

몇 가지 방법이 있습니다.

옵션 1:

다른 dpi에 대해 다른 완벽한 이미지를 만들어 관련 드로어 블 폴더에 배치하십시오. 그런 다음 설정

android:background="@drawable/your_image"

옵션 2 :

하나의 큰 이미지를 추가하십시오. FrameLayout을 사용하십시오. 첫 번째 자녀로서을 추가하십시오 ImageView. ImageView에서 다음을 설정하십시오.

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

2
'your_image'는 어디에 저장합니까?
Atharva Johri

5
res-> drawable 폴더에서. 각기 다른 해상도 (예 : 저해상도 / 고해상도)를 나타내는 여러 개가있을 수 있습니다. 각 해상도에 대한 특정 이미지가 없으면 어떤 것이 든 작동합니다.
krodmannix

5
대답은 좋습니다. 그러나 누군가가 각 dpi 그룹의 일반적인 전화 크기를 찾았는지 궁금해 이미지를 준비 할 때 매우 유용합니다. 편집 : 발견 - stackoverflow.com/questions/10574363/...
여우

7
마지막 옵션-> 메모리 부족 : D
ternes3

1
OOM 오류가 발생했습니다. 큰 이미지 인 경우 화면 크기에 따라 확대 또는 축소해야합니다! 이 경우 대부분 비동기 작업을 통해 비트 맵을로드해야합니다.
Jonny2Plates

25

또 다른 옵션은 드로어 블에 단일 이미지 (필수는 아님)를 추가하고 (이름은 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);

자르기, 다양한 크기의 이미지가 없습니다. 그것이 도움이되기를 바랍니다!


3
이것은 유용한 솔루션이지만 기본 스레드에서 비트 맵 처리를 수행해야합니다. developer.android.com/training/displaying-bitmaps/…
Kyle Ivey

19

다양한 크기의 이미지를 다음 폴더에 넣어야합니다

자세한 내용은이 링크를 방문 하십시오

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

오류가 발생했습니다Unexpected namespace prefix "xmlns" found for tag RelativeLayout
CodyBugstein

이것은 나의 조각을 너무 게으르게 만든다. 이유를 알 수 없습니다.
Sermilion

캐시를 사용하거나 picasso ( square.github.io/picasso )로 이미지를로드 하면 문제가 해결 될 것입니다.
Munish Kapoor

7

이건 어떤가요

android:background="@drawable/your_image"

활동의 주요 레이아웃에?

이렇게하면 적절한 화면에 배치하여 화면 밀도에 따라 다른 이미지를 가질 수도 있습니다 res/drawable-**dpi 폴더 .


7

이것이 게시 된 지 오래되었습니다. 그러나 이것은 나를 도왔습니다.

중첩 된 레이아웃을 사용할 수 있습니다. 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>

7

이미지에 투명한 작업 표시 줄을 표시하려면 테마의 스타일 정의에 다음을 입력하십시오.

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

즐겨!


7

이것을 사용하십시오

android:background="@drawable/your_image"

활동에서 첫 번째 선형 또는 상대 레이아웃.


1

NoToast의 답변에 따라 res / drawable-ldpi, mdpi, hdpi, x-hdpi (xtra 대형 화면의 경우)에 여러 버전의 "your_image"가 있어야 하고 match_parent를 제거 하고 android : adjustViewBounds = "를 유지해야합니다 . 진실"


1

android:background="@drawable/your_image"Relativelayout / Linearlayout Worked 내부에 추가하십시오 .


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>

-1

일. 당신은 이것을 시도해야합니다 :

android:src="@drawable/img"

-1

three step for put background

1) 당신은 같은 사진을 선택해야합니다. 예를 들면 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

2) 그런 다음이 그림을 드로어 블에 복사하십시오. 경고 : 이름 그림에 짧은 유형을 선택해야합니다.

여기에 이미지 설명을 입력하십시오

3) 의도 된 xml 페이지로 이동하여 다음을 작성하십시오.

android : background = "id picture"예를 들어 내 사진 ID는 @ drawable / download입니다.

여기에 이미지 설명을 입력하십시오

끝.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.