web-dev-qa-db-fra.com

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

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 de forme.

Dans mon Android, je l’ai comme ceci: enter image description here

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

enter image description here

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?

75
lomza

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.

#FF000000 vous obtiendrez un noir solide alors que #00000000 vous obtiendrez un noir 100% transparent noir (et bien, ce n’est plus noir évidemment).

La palette de couleurs est comme ça #AARRGGBB là, A représente le canal alpha, R 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 nœud solid. 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 à moitié transparent.

181
Octavian Damiean

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

  • "progression" 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 est par défaut Android res et correspond à 2.3.7, il est disponible sur Android sources à: frameworks/base/core/res /res/drawable/progress_horizontal.xml Pour les versions plus récentes, vous devez trouver le fichier pouvant être dessiné par défaut pour la barre de recherche correspondant à votre 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"
4
ungalcrys

Utilisez celui-ci, je l'ai écrit dans 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>
1