Comment définir l'opacité de la forme?

86

Je sais déjà comment définir l'opacité de l'image d'arrière-plan mais je dois définir l'opacité de mon objet forme.

Dans mon application Android, je l'ai comme ceci: entrez la description de l'image ici

et je veux rendre cette zone noire un peu transparente, comme ici, par exemple je peux voir des cercles à travers ce "Bienvenue ...":

entrez la description de l'image ici

Voici mon code de forme:

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

Comment puis je faire ça?

Lomza
la source
2
Le code des objets de forme serait utile ici.
Octavian A. Damiean

Réponses:

201

En général, il suffit de définir une couleur légèrement transparente lors de la création de la forme.

Vous pouvez y parvenir en définissant le canal alpha des couleurs.

#FF000000vous obtiendrez un noir uni alors #00000000que vous obtiendrez un noir 100% transparent (enfin ce n'est plus du noir évidemment).

La palette de couleurs est la suivante: #AARRGGBBA représente le canal alpha, R représente le rouge, G le vert et B le bleu.

La même chose s'applique si vous définissez la couleur en Java. Là, ça ne ressemblera qu'à 0xFF000000.

MISE À JOUR

Dans votre cas, vous devrez ajouter un solidnœud. Comme ci-dessous.

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

La couleur ici est un noir semi-transparent.

Octavian A. Damiean
la source
codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java Le setOpacity ne fonctionne pas avec la forme. Et j'essaye d'ajouter android: background = "# 00000000" à shape.xml, mais rien ne se passe.
lomza
C'est étrange ... Peu importe la valeur que je mets à la couleur, j'ai ma forme entièrement transparente = (
lomza
3
Il me semble que cette opacité ne peut être définie que sur une vue ou une image ... Parce que lorsque j'écris android: background = "# 88000000" au lieu de android: background = "@ drawable / shape" dans mon LinearLayout, cela fonctionne .
lomza
2
Cela fonctionne aussi sur les formes. Avez-vous essayé ce que j'ai publié ci-dessus?
Octavian A. Damiean
1
Oui, mais ça ne marche pas. Avez-vous essayé tout ce code sur votre machine?
lomza
4

utilisez ce code ci-dessous comme 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>

où:

  • "progress" est la progression actuelle avant le pouce et "secondaryProgress" est la progression après le pouce.
  • color = "# 00000000" est une transparence parfaite
  • REMARQUE: le fichier ci-dessus provient de la résolution Android par défaut et est pour 2.3.7, il est disponible sur les sources Android à: frameworks / base / core / res / res / drawable / progress_horizontal.xml. Pour les versions plus récentes, vous devez trouver le fichier dessinable par défaut pour la barre de recherche correspondant à votre version Android.

après cela, utilisez-le dans la mise en page contenant le xml:

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

vous pouvez également personnaliser le pouce en utilisant une icône personnalisée seek_thumb.png:

android:thumb="@drawable/seek_thumb"
ungalcrys
la source
1

Utilisez celui-ci, j'ai écrit ceci sur mon application,

<?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>
Chathura Jayanath
la source