Android ve (görüntü) görünümü alfa için alfa ayarı


Yanıtlar:


195

Hayır, bölüm olan "İlişkili XML Nitelikler" nasıl, yok eksik de ImageView.setAlpha (int) belgelerine. Alternatif kullanmaktır View.setAlpha (şamandıra) olan XML muadili olan android:alpha. 0 ile 255 yerine 0.0 ile 1.0 arasında bir aralık alır.

<ImageView android:alpha="0.4">

Ancak, ikincisi yalnızca API seviyesi 11'den beri mevcuttur.


7
Sadece burada kendimi tekrar ediyorum bile: ImageView.setAlpha(int)Bir sürüyor intiken android:alphaeski için tam bir XML meslektaşı değil bu yüzden kesinlikle ikincisi konuşma, bir şamandıra alıyor, ancak bunun olması muadili var View.setAlpha(float). Ve burada birçok kez bahsedildiği gibi, android:alpha/ View.setAlpha(float)yalnızca API seviyesi 11'den itibaren mevcuttur.
sschuberth

fark, kabul edilebilir aralığın float bir için 0-1 ve int bir için 0-255 olmasıdır.
ataulm

232

Diğer yanıttan daha kolay. alphaÇift değer alan bir xml değeri vardır.

android:alpha="0.0" bu görünmez

android:alpha="0.5" transparan

android:alpha="1.0" tam görünür

İşte böyle çalışır.


15
API 11'den (Android 3.0) beri var setAlpha(float)ve android:alphasadece. API 11'den önce, görüntü için alfa ayarlamak için kod kullanılmalıdır. Sschuberth'in yukarıda anser'da söylediği gibi.
Salw

@Antonio Neden? Bu cevap benim üzerime herhangi bir bilgi eklemiyor ve tam tersine daha az eksiksiz.
sschuberth

@sschuberth cevabınız tamamen doğru, ancak bir örnek olmaması bu cevabın sizinkinden daha fazla dikkat çekmesini sağlayabilir. Cevabınız daha fazla bilgi sağlasa da, bu cevap gerçekten ihtiyacım olana daha yakın bir çözüm sunuyor. Lütfen açıkladıklarınızı kullanmak için bazı örnekler ekleyin, bu kesinlikle yardımcı olacaktır!
Antonio

@Antonio Bitti. Cevabımı şimdi süper-duper-over-verbose ;-)
sschuberth

53

XML konusunda emin değilim ama bunu aşağıdaki şekilde kod ile yapabilirsiniz.

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

API 11 öncesi:

  • aralık 0 ile 255 (dahil) arasındadır, 0 şeffaf ve 255 opaktır.

API 11+ sürümünde:

  • aralık 0f ila 1f (dahil) arasındadır, 0f şeffaf ve 1f opaktır.

2
Evet biliyorum. (Bunun soruda örtük olduğunu umuyordum.) XML'in bir noktası, bu kodun bir kısmını çıkarmaktır. alphaÇeşitli boyutlar, konumlar varken neden bir XML özniteliğinin muadili olmadığı bana mantıklı gelmiyor.
SK9

merak ediyorum: neden kullanımdan kaldırıldı? artık bir float parametresine sahip oldukları için mi?
android geliştiricisi

Evet, imageView.setAlpha'yı (1.0f) kullanabilirsiniz, ancak API seviyesi 11'i gerektirir.
Tony Ceralva

12

Belki düz renkli bir arka plan için yararlı bir alternatif :

ImageView üzerine bir LinearLayout koyun ve LinearLayout'u opaklık filtresi olarak kullanın . Aşağıda siyah arka plana sahip küçük bir örnek:

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

Vary arkaplan: android vasfını LinearLayout arasında # 00000000 (tamamen şeffaf) ve # FF000000 (tam opak).


1
Özellikle telefon cihazında bir görüntü probleminin alfa halini çözmek için bunu yapmanın en iyisi değil.
Prakash Nadar

Bu, yalnızca arka planı şeffaf yapmak istediğinizde ancak çocuklarını DEĞİL istediğinizde harika çalışır. Üst kapsayıcıda alfa kullanmak, tüm alt öğelerini de şeffaf hale getirir
noni

8

Artık bir XML alternatifi var:

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

Bu: android: alpha = "0.7"

0 (şeffaf) ile 1 (opak) arasında bir değere sahip.


4

% 50 opaklığa ulaşmak ve Android Material simgelerini Siyahtan Gri'ye çevirmek için android: alpha = 0.5 kullanın.


4

setAlpha(int)API itibariyle kullanımdan kaldırıldı 16:Android 4.1

Lütfen setImageAlpha(int)bunun yerine kullanın


3

Bu formu android'in eski sürümleri için kullanın.

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, aşağıdaki onaltılık format #ARGB veya #AARRGGBB kullanılarak renkle birlikte ayarlanabilir. Bkz. Http://developer.android.com/guide/topics/resources/color-list-resource.html


XML niteliği kullanarak bir görüntünün alfa değerini ayarlamak istiyorum. Bu yardımcı olur mu?
SK9

Bunu, bir arka plan görüntüsüne sahip bir düzen üzerinde düzenleri genişletmek için kullanıyorum, kesinlikle görüntünün kendisindeki bir görüntünün alfa değerini ayarlarsınız?
Grant

"Görüntünün kendisinde" ne demek istiyorsun? XML içinde mi? Bir gözetim olabilir, ancak alfa XML niteliği yoktur.
SK9

Demek istediğim, görüntüyü oluşturduğunuzda bir şeffaflık katmanı eklersiniz ve görüntünüzün opaklığını 50'ye veya ihtiyacınız olan herhangi bir değere ayarlarsınız.
Grant

Android: tint'in hiçbir etkisi olmamasına ÇOK şaşırdım. Bir alfa değerine izin verir ... ancak beyaz bir görüntü üzerinde etkisi yoktur: - (((((
Biri
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.