Gambar latar layar penuh dalam suatu aktivitas

145

Saya melihat banyak aplikasi yang menggunakan gambar layar penuh sebagai latar belakang. Ini adalah sebuah contoh:

Gambar latar layar penuh

Saya ingin menggunakan ini dalam proyek, cara terbaik yang saya temukan sejauh ini untuk melakukan ini adalah menggunakan gambar dengan ukuran besar, memasukkannya ke dalam ImageViewdan menggunakan android: adjustViewBounds="true"untuk mengatur margin

Masalahnya adalah bahwa jika layar dengan resolusi sangat tinggi, gambarnya akan jatuh pendek.

Pilihan lain yang saya pikirkan adalah menggunakan gambar dalam FrameLayout, dengan match_parentdi widthdan heightsebagai latar belakang ... ini membentang gambar, tapi saya pikir hasilnya tidak terlalu baik.

Bagaimana Anda melakukannya?

Sergio76
sumber
3
Jangan percaya ini bekerja pada latar belakang, tetapi seharusnya bekerja pada gambar. android:scaleType="centerCrop"
EGHDK

Jawaban:

223

Ada beberapa cara untuk melakukannya.

Pilihan 1:

Buat gambar sempurna yang berbeda untuk dpi berbeda dan letakkan di folder yang dapat digambar terkait. Kemudian atur

android:background="@drawable/your_image"

Pilihan 2:

Tambahkan satu gambar besar. Gunakan FrameLayout. Sebagai anak pertama tambahkan ImageView. Tetapkan berikut ini di ImageView Anda.

android:src="@drawable/your_image"
android:scaleType = "centerCrop"
stinepike
sumber
2
di mana Anda menyimpan 'your_image'?
Atharva Johri
5
Dalam folder res-> drawable. Mungkin ada banyak - masing-masing dudukan untuk resolusi yang berbeda (mis. Resolusi rendah / resolusi tinggi). Jika Anda tidak memiliki gambar spesifik untuk setiap resolusi, resolusi apa pun akan berfungsi.
krodmannix
5
Jawabannya bagus. Tapi saya bertanya-tanya apakah seseorang menemukan ukuran ponsel khas untuk setiap grup dpi, yang akan sangat berguna saat menyiapkan gambar. Diedit: ditemukan - stackoverflow.com/questions/10574363/…
fox
7
opsi terakhir -> kehabisan memori: D
ternes3
1
Kesalahan OOM di sini kita datang ... jika ini adalah gambar besar Anda akan perlu untuk menaikkan atau turun tergantung pada ukuran layar! dalam hal ini Anda harus memuat bitmap kemungkinan besar melalui tugas asinkron.
Jonny2Plates
25

Pilihan lain adalah menambahkan satu gambar (tidak harus besar) di drawable (beri nama backgroung.jpg), buat iv_background ImageView di root xml Anda tanpa atribut "src". Kemudian dalam metode onCreate dari aktivitas terkait:

    /* 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);

Tidak ada pemotongan, tidak banyak gambar dengan ukuran berbeda. Semoga ini bisa membantu!

axplusb
sumber
3
Ini adalah solusi yang berguna, tetapi ingatlah untuk melakukan pemrosesan bitmap dari utas utama: developer.android.com/training/displaying-bitmaps/…
Kyle Ivey
19

Anda harus memasukkan berbagai ukuran gambar ke dalam folder berikut

untuk lebih detail kunjungi tautan ini

  • ldpi

  • mdpi

  • hdpi

  • xhdpi

  • xxhdpi

dan gunakan latar belakang RelativeLayout atau LinearLayout alih-alih menggunakan ImageView sebagai contoh berikut

<?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>
Munish Kapoor
sumber
Saya mendapatkan kesalahan ituUnexpected namespace prefix "xmlns" found for tag RelativeLayout
CodyBugstein
Ini membuat Fragmen saya sangat lamban. Tidak tahu mengapa.
Sermilion
gunakan cache atau muat gambar dengan picasso ( square.github.io/picasso ) berharap akan menyelesaikan masalah Anda
Munish Kapoor
7

Bagaimana dengan

android:background="@drawable/your_image"

pada tata letak utama aktivitas Anda?

Dengan cara ini Anda juga dapat memiliki gambar yang berbeda untuk kepadatan layar yang berbeda dengan menempatkannya di res/drawable-**dpifolder yang sesuai .

NoToast
sumber
7

Sudah lama sejak ini diposting, tetapi ini membantu saya.

Anda dapat menggunakan tata letak bersarang. Mulai dengan RelativeLayout, dan letakkan ImageView Anda di situ.

Setel tinggi dan lebar untuk match_parent untuk mengisi layar.

Atur scaleType = "centreCrop" sehingga gambar sesuai dengan layar dan tidak meregang.

Kemudian Anda bisa meletakkan tata letak lain seperti biasa, seperti LinearLayout di bawah ini.

Anda dapat menggunakan android: alpha untuk mengatur transparansi gambar.

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

Jika Anda ingin gambar Anda ditampilkan DI BALIK Bilah Tindakan transparan, masukkan yang berikut ini ke dalam definisi gaya Tema Anda:

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

Nikmati!

Jens
sumber
7

Gunakan ini

android:background="@drawable/your_image"

dalam aktivitas Anda, tata letak linear atau relatif pertama.

Syed
sumber
1

Sejalan dengan jawaban NoToast, Anda harus memiliki beberapa versi "your_image" di resolusi / drawable-ldpi, mdpi, hdpi, x-hdpi (untuk layar besar xtra), hapus match_parent dan simpan android: adjustViewBounds = " benar"

sb_269
sumber
1

Tambahkan android:background="@drawable/your_image"di dalam Relativelayout / Linearlayout Anda.

Mwongera808
sumber
0

Jika Anda memiliki bg.png sebagai gambar latar belakang Anda maka cukup:

<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>
Muhammad Rehan Qadri
sumber
-1

Kerja. Anda harus mencoba ini:

android:src="@drawable/img"

sumber
-1

three step for put background

1) Anda harus memilih gambar seperti Anda. misalnya: masukkan deskripsi gambar di sini

2) Kemudian Anda menyalin gambar ini dalam gambar. peringatan: Anda harus memilih jenis pendek untuk gambar nama.

masukkan deskripsi gambar di sini

3) Anda pergi ke halaman xml Ditujukan dan tulis:

android: background = "id picture" misalnya id gambar saya adalah @ drawable / download.

masukkan deskripsi gambar di sini

selesai.

mohammad vakili
sumber
-2

Cara termudah:

Langkah 1: Buka file AndroidManifest.xml

Anda dapat melihat file di sini!

Langkah 2: Temukan android:theme="@style/AppTheme" >

Langkah 3: Ubah ke android:theme="@style/Theme.AppCompat.NoActionBar" >

Langkah 4: Kemudian Tambahkan ImageView & Gambar

Langkah 4: Itu dia!

Jishnu N Krishnan
sumber