Come impostare l'opacità della forma?


89

So già come impostare l'opacità dell'immagine di sfondo ma ho bisogno di impostare l'opacità del mio oggetto forma.

Nella mia app per Android, ce l'ho in questo modo: inserisci qui la descrizione dell'immagine

e voglio rendere quest'area nera un po 'trasparente, come qui, ad esempio posso vedere cerchi anche se questo "Benvenuto ...":

inserisci qui la descrizione dell'immagine

Ecco il mio codice forma:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape_my"">
    <stroke android:width="4dp" android:color="#636161" />
    <padding android:left="20dp"
        android:top="20dp"
        android:right="20dp"
        android:bottom="20dp" />
    <corners android:radius="24dp" />
</shape>

Come lo posso fare?


2
Il codice degli oggetti forma sarebbe di aiuto qui.
Ottaviano A. Damiean

Risposte:


203

In generale devi solo definire un colore leggermente trasparente durante la creazione della forma.

Puoi ottenerlo impostando il canale alfa dei colori.

#FF000000ti darà un nero pieno mentre #00000000ti darà un nero trasparente al 100% (beh, ovviamente non è più nero).

Lo schema dei colori è così: #AARRGGBBA sta per canale alfa, R sta per rosso, G per verde e B per blu.

La stessa cosa vale se imposti il ​​colore in Java. Là sarà solo simile0xFF000000 .

AGGIORNARE

Nel tuo caso dovresti aggiungere un solidnodo. Come sotto.

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape_my"">
    <stroke android:width="4dp" android:color="#636161" />
    <padding android:left="20dp"
        android:top="20dp"
        android:right="20dp"
        android:bottom="20dp" />
    <corners android:radius="24dp" />
    <solid android:color="#88000000" />
</shape>

Il colore qui è un mezzo nero trasparente.


codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java setOpacity non funziona con shape. E ho provato ad aggiungere android: background = "# 00000000" a shape.xml, ma non succede nulla.
lomza

Questo è strano ... Non importa quale valore ho impostato sul colore, ho la mia forma completamente trasparente = (
lomza

3
Mi sembra che l'opacità possa essere impostata solo su una vista o un'immagine ... Perché quando scrivo android: background = "# 88000000" invece di android: background = "@ drawable / shape" nel mio LinearLayout, funziona .
lomza

2
Funziona anche sulle forme. Hai provato quello che ho postato sopra?
Ottaviano A. Damiean

1
Sì, ma non funziona. Hai provato tutto questo codice sulla tua macchina?
lomza

4

usa questo codice di seguito come progress.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
            />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#00000000" />
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="#00000000" />
            </shape>
        </clip>
    </item>

</layer-list>

dove:

  • "progress" è il progresso corrente prima del thumb e "secondaryProgress" è il progresso dopo il thumb.
  • color = "# 00000000" è una trasparenza perfetta
  • NOTA: il file sopra è di default Android res ed è per 2.3.7, è disponibile su sorgenti Android su: frameworks / base / core / res / res / drawable / progress_horizontal.xml. Per le versioni più recenti è necessario trovare il file disegnabile predefinito per la seekbar corrispondente alla versione di Android.

dopodiché usalo nel layout contenente xml:

<SeekBar
    android:id="@+id/myseekbar"
    ...
    android:progressDrawable="@drawable/progress"
    />

puoi anche personalizzare il pollice utilizzando un'icona personalizzata seek_thumb.png:

android:thumb="@drawable/seek_thumb"

1

Usa questo, l'ho scritto nella mia app,

<?xml version="1.0" encoding="utf-8"?>
<!--  res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#882C383E"/>
    <corners
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp"/>
</shape>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.