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.


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.


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.

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).


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).


4

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


4

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

Silakan gunakan setImageAlpha(int)sebagai gantinya


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

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.