Android dan pengaturan alpha untuk (gambar) tampilan alpha

Jawaban:

195

Tidak, tidak ada, lihat bagaimana bagian "Atribut XML Terkait" tidak ada dalam dokumentasi ImageView.setAlpha (int) . Alternatifnya adalah dengan menggunakan View.setAlpha (float) yang rekan XML adalah android:alpha. Dibutuhkan kisaran 0,0 hingga 1,0, bukan 0 hingga 255. Gunakan, misalnya, seperti

<ImageView android:alpha="0.4">

Namun, yang terakhir hanya tersedia sejak API level 11.

sschuberth
sumber
7
Bahkan jika saya hanya mengulangi sendiri di sini: ImageView.setAlpha(int)butuh waktu intlama android:alphaadalah mengambil float, jadi secara tegas yang terakhir ini bukan rekan XML yang tepat untuk yang pertama, tapi itu adalah rekan untuk View.setAlpha(float). Dan seperti yang disebutkan beberapa kali di sini sudah, android:alpha/ View.setAlpha(float)tersedia sebagai tingkat API 11 saja.
sschuberth
perbedaannya adalah rentang yang dapat diterima adalah 0-1 untuk float dan 0-255 untuk int.
ataulm
232

Ini lebih mudah daripada respons lainnya. Ada nilai xml alphayang mengambil nilai ganda.

android:alpha="0.0" itu tidak terlihat

android:alpha="0.5" tembus pandang

android:alpha="1.0" terlihat penuh

Begitulah cara kerjanya.

jfcogato
sumber
15
Ada setAlpha(float)dan android:alphahanya sejak API 11 (Android 3.0). Sebelum API 11, seseorang harus menggunakan kode untuk mengatur alpha untuk gambar. Seperti sschuberth sudah katakan di anser di atas.
Salw
@Antonio Kenapa? Jawaban ini tidak menambahkan informasi apa pun di atas saya, dan sebaliknya kurang lengkap.
sschuberth
@sschuberth jawaban Anda sepenuhnya benar, tetapi kurangnya contoh bisa membuat jawaban ini lebih menarik perhatian Anda. Meskipun jawaban Anda memberikan lebih banyak informasi, jawaban ini memberikan solusi yang lebih dekat dengan apa yang benar-benar saya butuhkan. Tolong, tambahkan beberapa contoh untuk menggunakan apa yang telah Anda jelaskan, itu benar-benar akan membantu!
Antonio
@Antonio Selesai. Saya membuat jawaban saya sekarang super-duper-over-verbose ;-)
sschuberth
53

Saya tidak yakin tentang XML tetapi Anda dapat melakukannya dengan kode dengan cara berikut.

ImageView myImageView = new ImageView(this);
myImageView.setAlpha(xxx);

Di pra-API 11:

  • Kisarannya adalah 0 hingga 255 (inklusif), 0 transparan dan 255 buram.

Di API 11+:

  • kisaran dari 0f ke 1f (inklusif), 0f transparan dan 1f buram.
Umesh
sumber
2
Ya, saya tahu. (Saya berharap ini tersirat dalam pertanyaan.) Satu titik XML adalah untuk menghapus beberapa kode ini. Tidak masuk akal bagi saya mengapa alphatidak memiliki mitra atribut XML ketika berbagai ukuran, posisi lakukan.
SK9
saya bertanya-tanya: mengapa itu ditinggalkan? apakah karena sekarang mereka memiliki parameter float?
pengembang android
Ya, Anda dapat menggunakan imageView.setAlpha (1.0f), tetapi membutuhkan API level 11.
Tony Ceralva
12

Mungkin alternatif yang bermanfaat untuk latar belakang berwarna polos :

Letakkan LinearLayout di atas ImageView dan gunakan LinearLayout sebagai filter opacity. Berikut ini contoh kecil dengan latar belakang hitam:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_stop_big" />

    <LinearLayout
        android:id="@+id/opacityFilter"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#CC000000"
        android:orientation="vertical" >
    </LinearLayout>
</RelativeLayout>

Variasikan android: atribut latar belakang LinearLayout antara # 00000000 (sepenuhnya transparan) dan # FF000000 (sepenuhnya buram).

menikah
sumber
1
Bukan yang terbaik untuk menyelesaikan masalah alfa pada gambar, terutama pada perangkat telepon.
Prakash Nadar
Ini bekerja sangat baik ketika Anda hanya ingin membuat latar belakang transparan tetapi BUKAN anaknya. Dengan menggunakan alpha pada wadah induk, buat semua anak-anaknya transparan juga
noni
8

Sekarang ada alternatif XML:

        <ImageView
        android:id="@+id/example"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/example"
        android:alpha="0.7" />

Ini: android: alpha = "0,7"

Dengan nilai dari 0 (transparan) hingga 1 (buram).

Tukang sihir
sumber
4

gunakan android: alpha = 0,5 untuk mencapai opacity 50% dan untuk mengubah ikon Material Android dari Hitam menjadi Gray.

Sachiin Gupta
sumber
4

setAlpha(int)sudah ditinggalkan sejak API 16:Android 4.1

Silakan gunakan setImageAlpha(int)sebagai gantinya

Alen Lee
sumber
3

Gunakan formulir ini untuk versi Android kuno.

ImageView myImageView;
myImageView = (ImageView) findViewById(R.id.img);

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha);
Rafael
sumber
0

Alfa dapat diatur bersama dengan warna menggunakan format hex berikut #ARGB atau #AARRGGBB. Lihat http://developer.android.com/guide/topics/resources/color-list-resource.html

Hibah
sumber
Saya ingin mengatur alfa gambar menggunakan atribut XML. Apakah ini membantu?
SK9
Saya menggunakan ini untuk memutihkan tata letak atas tata letak dengan gambar latar belakang, tentunya Anda akan mengatur alfa dari suatu gambar pada gambar itu sendiri?
Grant
Apa maksudmu "di dalam gambar itu sendiri"? Di dalam XML? Mungkin kelalaian, tetapi tidak ada atribut XML alfa.
SK9
Maksud saya ketika Anda membuat gambar, Anda akan menambahkan lapisan transparansi dan mengatur opacity gambar Anda menjadi 50 atau nilai apa pun yang Anda butuhkan.
Grant
Saya SANGAT terkejut android: warna tidak berpengaruh. Ini memungkinkan untuk nilai alpha ... tetapi tidak berpengaruh pada gambar putih: - (((((
Someone Somewhere