Como definir a opacidade da forma?


86

Já sei como definir a opacidade da imagem de fundo, mas preciso definir a opacidade do meu objeto de forma.

Em meu aplicativo Android, tenho algo assim: insira a descrição da imagem aqui

e eu quero deixar essa área preta um pouco transparente, como aqui, por exemplo, posso ver os círculos através deste "Bem-vindo ...":

insira a descrição da imagem aqui

Aqui está o meu código de 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>

Como eu posso fazer isso?


2
O código dos objetos de forma seria útil aqui.
Octavian A. Damiean

Respostas:


201

Em geral, você só precisa definir uma cor ligeiramente transparente ao criar a forma.

Você pode conseguir isso definindo o canal alfa de cores.

#FF000000você irá obter um preto sólido passo que #00000000vai te dar um 100% transparente preto (bem, não é preto mais obviamente).

O esquema de cores é assim: #AARRGGBBA significa canal alfa, R significa vermelho, G significa verde e B significa azul.

A mesma coisa se aplica se você definir a cor em Java. Lá, ele apenas se parecerá 0xFF000000.

ATUALIZAR

No seu caso, você teria que adicionar um solidnó. Como a seguir.

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

A cor aqui é um preto meio transparente.


codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java O setOpacity não funciona com forma. E tentei adicionar android: background = "# 00000000" a shape.xml, mas nada aconteceu.
lomza

Isso é estranho ... Não importa o valor que eu defini para colorir, eu tenho minha forma totalmente transparente = (
lomza

3
Parece-me que a opacidade só pode ser definida para uma visualização ou imagem ... Porque quando escrevo android: background = "# 88000000" em vez de android: background = "@ drawable / shape" no meu LinearLayout, funciona .
lomza

2
Funciona com formas também. Você já experimentou o que postei acima?
Octavian A. Damiean

1
Sim, mas não funciona. Você tentou todo esse código em sua máquina?
lomza

4

use este código abaixo como 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>

Onde:

  • "progress" é o progresso atual antes do polegar e "secondaryProgress" é o progresso depois do polegar.
  • color = "# 00000000" é uma transparência perfeita
  • NOTA: o arquivo acima é da resolução padrão do Android e é para 2.3.7, ele está disponível em fontes do Android em: frameworks / base / core / res / res / drawable / progress_horizontal.xml. Para versões mais recentes, você deve encontrar o arquivo drawable padrão para a barra de busca correspondente à sua versão do Android.

depois disso use-o no layout contendo o xml:

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

você também pode personalizar o polegar usando um ícone personalizado seek_thumb.png:

android:thumb="@drawable/seek_thumb"

1

Use este, eu escrevi para meu aplicativo,

<?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>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.