Jak ustawić krycie kształtu?

86

Wiem już, jak ustawić krycie obrazu tła, ale muszę ustawić krycie mojego obiektu kształtu.

W mojej aplikacji na Androida mam to tak: wprowadź opis obrazu tutaj

i chcę, aby ten czarny obszar był nieco przezroczysty, tak jak tutaj, na przykład widzę kółka, chociaż to „Witamy ...”:

wprowadź opis obrazu tutaj

Oto mój kod kształtu:

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

Jak mogę to zrobić?

łomża
źródło
2
W tym przypadku pomocny byłby kod obiektów kształtu.
Octavian A. Damiean

Odpowiedzi:

201

Generalnie podczas tworzenia kształtu wystarczy zdefiniować lekko przezroczysty kolor.

Możesz to osiągnąć poprzez ustawienie kanału alfa kolorów.

#FF000000da ci solidną czerń, podczas gdy #00000000w 100% przezroczystą czerń (cóż, oczywiście nie jest już czarna).

Schemat kolorów jest taki, #AARRGGBBże A oznacza kanał alfa, R oznacza czerwony, G - zielony i B - niebieski.

To samo dotyczy sytuacji, gdy ustawisz kolor w Javie. Tam będzie tylko wyglądać 0xFF000000.

AKTUALIZACJA

W twoim przypadku musiałbyś dodać solidwęzeł. Jak poniżej.

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

Kolor tutaj jest półprzezroczysty czarny.

Octavian A. Damiean
źródło
codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java SetOpacity nie działa z shape. Próbowałem dodać android: background = "# 00000000" do shape.xml, ale nic się nie dzieje.
łomża,
To dziwne ... Nie ma znaczenia jaką wartość
ustawię
3
Wydaje mi się, że krycie można ustawić tylko na widok lub obraz ... Ponieważ kiedy piszę android: background = "# 88000000" zamiast android: background = "@ drawable / shape" w moim LinearLayout, to działa .
łomża
2
Działa też na kształtach. Czy próbowałeś tego, co zamieściłem powyżej?
Octavian A. Damiean
1
Tak, ale to nie działa. Czy wypróbowałeś cały ten kod na swoim komputerze?
łomża
4

użyj poniższego kodu jako 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>

gdzie:

  • „progress” to bieżący postęp przed kciukiem, a „secondaryProgress” to postęp po kciuku.
  • color = „# 00000000” to doskonała przezroczystość
  • UWAGA: powyższy plik pochodzi z domyślnej rozdzielczości Androida i jest przeznaczony dla wersji 2.3.7, jest dostępny na źródłach Androida pod adresem: frameworks / base / core / res / res / drawable / progress_horizontal.xml. W przypadku nowszych wersji musisz znaleźć domyślny plik do rysowania dla paska wyszukiwania, odpowiadający twojej wersji Androida.

po tym użyj go w układzie zawierającym xml:

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

możesz również dostosować kciuk, używając niestandardowej ikony seek_thumb.png:

android:thumb="@drawable/seek_thumb"
ungalcrys
źródło
1

Użyj tego, napisałem to do mojej aplikacji,

<?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
źródło