Bir etkinlikte tam ekran arka plan görüntüsü


145

Arka plan olarak tam ekran görüntü kullanan birçok uygulama görüyorum. Bu bir örnektir:

Tam ekran arka plan resmi

Bunu bir projede kullanmak istiyorum, bunu yapmak için şimdiye kadar bulduğum en iyi yol, büyük boyutlu bir resim kullanmak, koymak ve kenar boşluklarını ayarlamak için ImageViewkullanmaktırandroid: adjustViewBounds="true"

Sorun şu ki, çok yüksek çözünürlüklü bir ekran görüntünün yetersiz kalmasıdır.

Ben düşündüm Başka bir seçenek görüntüyü kullanmaktır FrameLayoutile match_parentde widthve heightbu uzat ... arka plan olarak, ama sonuç çok iyi olmadığını düşünüyorum.

Nasıl yapardın?


3
Bunun arka plan üzerinde çalıştığına inanmayın, ancak görüntüler üzerinde çalışması gerekir. android:scaleType="centerCrop"
EGHDK

Yanıtlar:


223

Bunu yapmanın birkaç yolu vardır.

Seçenek 1:

Farklı dpi için farklı mükemmel görüntüler oluşturun ve bunları ilgili çekilebilir klasöre yerleştirin. Sonra ayarlayın

android:background="@drawable/your_image"

Seçenek 2:

Tek bir büyük resim ekleyin. FrameLayout kullanın. İlk çocuk olarak bir ImageView. ImageView öğenizde aşağıdakileri ayarlayın.

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

2
'resimlerinizi' nerede saklıyorsunuz?
Atharva Johri

5
Res-> drawable klasörlerinde. Birden fazla olabilir - her biri farklı bir çözünürlük anlamına gelir (örneğin, düşük çözünürlük / yüksek çözünürlük). Her çözünürlük için belirli resimleriniz yoksa, herhangi biri çalışır.
krodmannix

5
Cevap güzel. Ama merak ediyorum birisi görüntüleri hazırlarken oldukça yararlı olurdu, her dpi grubu için tipik telefon boyutları bulup bulamadığını merak ediyorum. Düzenlendi: bulundu - stackoverflow.com/questions/10574363/…
fox

7
son seçenek ->
yetersiz

1
OOM hatası buraya geliyoruz ... eğer büyük bir görüntü ise ekran boyutuna bağlı olarak ölçeklendirmeniz veya küçültmeniz gerekir! bu durumda, büyük olasılıkla eşzamansız görev yoluyla bir bitmap yüklemeniz gerekir.
Jonny2Plates

25

Başka bir seçenek de, çizilebilir tablolara tek bir resim (illa ki büyük değil) eklemektir (buna backgroung.jpg adını verelim), "src" niteliği olmadan xml'inizin kökünde bir ImageView iv_background oluşturmaktır. Sonra karşılık gelen etkinliğin onCreate yönteminde:

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

Kırpma yok, çok farklı boyutlu görüntüler yok. Umarım yardımcı olur!


3
Bu yararlı bir çözümdür, ancak ana iş parçacığından bitmap işleme yapmayı unutmayın: developer.android.com/training/displaying-bitmaps/…
Kyle Ivey

19

Çeşitli boyuttaki resimleri aşağıdaki klasöre koymalısınız

daha fazla ayrıntı için bu bağlantıyı ziyaret edin

  • LDPI

  • mdpi

  • hdpi

  • xhdpi

  • xxhdpi

ve follwoing örneği olarak ImageView kullanmak yerine RelativeLayout veya LinearLayout arka planını kullanın

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

Bir hata alıyorumUnexpected namespace prefix "xmlns" found for tag RelativeLayout
CodyBugstein

Bu benim Parçamı çok laggy yapıyor. Nedenini anlayamıyorum.
Sermilion

picasso ( square.github.io/picasso ) ile önbellek kullanın veya görüntü yükleyin umut sorununuzu çözecektir
Munish Kapoor

7

Ne dersin

android:background="@drawable/your_image"

faaliyetinizin ana düzeninde?

Bu şekilde, farklı ekran yoğunlukları için uygun res/drawable-**dpiklasörlere yerleştirerek farklı görüntülere sahip olabilirsiniz .


7

Bu yayınlandığından beri bir süre oldu, ama bu bana yardımcı oldu.

İç içe mizanpajları kullanabilirsiniz. Bir RelativeLayout ile başlayın ve ImageView'inizi buna yerleştirin.

Yüksekliği ve genişliği ekranı dolduracak şekilde match_parent olarak ayarlayın.

ScaleType = "centreCrop" değerini görüntü ekrana sığacak ve uzamayacak şekilde ayarlayın.

Ardından, aşağıdaki LinearLayout gibi normalde yaptığınız gibi başka düzenler de yerleştirebilirsiniz.

Görüntünün saydamlığını ayarlamak için android: alpha kullanabilirsiniz.

<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

Resminizin şeffaf bir İşlem Çubuğu ARKASINDA gösterilmesini istiyorsanız, Temanızın stil tanımına aşağıdakileri ekleyin:

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

Zevk almak!


7

bunu kullan

android:background="@drawable/your_image"

faaliyetinizde ilk doğrusal veya göreceli düzen.


1

NoToast'ın cevabına göre, res / drawable-ldpi, mdpi, hdpi, x-hdpi (xtra büyük ekranlar için) 'de birden çok "your_image" sürümüne sahip olmanız, match_parent'ı kaldırmanız ve android'i saklamanız gerekir : adjustViewBounds = " doğru"


1

android:background="@drawable/your_image"Relativelayout / Linearlayout Worked'inize ekleyin .


0

Arka plan resminiz olarak bg.png varsa:

<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

Çalışma. bunu denemelisin:

android:src="@drawable/img"


-2

En kolay yol:

Adım 1: AndroidManifest.xml dosyasını açın

Dosyayı burada görebilirsiniz!

2. Adım: Bulun android:theme="@style/AppTheme" >

3. Adım: olarak değiştirin android:theme="@style/Theme.AppCompat.NoActionBar" >

Adım 4: Ardından ImageView ve Image Ekle

Adım 4: Hepsi bu kadar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.