Bagaimana cara mengatur opacity bentuk?

89

Saya sudah tahu cara mengatur opacity dari gambar latar belakang tetapi saya perlu mengatur opacity dari objek bentuk saya.

Di aplikasi Android saya, saya memilikinya seperti ini: masukkan deskripsi gambar di sini

dan saya ingin membuat area hitam ini sedikit transparan, seperti di sini, misalnya saya dapat melihat lingkaran melalui "Selamat Datang ..." ini:

masukkan deskripsi gambar di sini

Ini kode bentuk saya:

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

Bagaimana saya bisa melakukan itu?

lomza
sumber
2
Kode objek bentuk akan membantu di sini.
Oktavianus A. Damiean

Jawaban:

203

Secara umum, Anda hanya perlu menentukan warna yang sedikit transparan saat membuat bentuk.

Anda dapat mencapainya dengan mengatur saluran alpha warna.

#FF000000akan memberi Anda hitam pekat sedangkan #00000000akan memberi Anda hitam transparan 100% (jelas bukan hitam lagi).

Skema warnanya seperti ini, #AARRGGBBA singkatan dari alpha channel, R singkatan dari red, G untuk green dan B untuk blue.

Hal yang sama berlaku jika Anda mengatur warna di Java. Di sana hanya akan terlihat seperti 0xFF000000.

MEMPERBARUI

Dalam kasus Anda, Anda harus menambahkan solidnode. Seperti dibawah ini.

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

Warna di sini adalah hitam setengah transparan.

Oktavianus A. Damiean
sumber
codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java SetOpacity tidak bekerja dengan bentuk. Dan saya mencoba menambahkan android: background = "# 00000000" ke shape.xml, tetapi tidak ada yang terjadi.
lomza
Ini aneh ... Tidak peduli berapa nilai yang saya tetapkan ke warna, saya memiliki bentuk saya sepenuhnya transparan = (
lomza
3
Menurut saya, opasitas itu hanya dapat disetel ke tampilan atau gambar ... Karena saat saya menulis android: background = "# 88000000" alih-alih android: background = "@ drawable / shape" di LinearLayout saya, ini berfungsi .
lomza
2
Ini bekerja pada bentuk juga. Sudahkah Anda mencoba apa yang saya posting di atas?
Oktavianus A. Damiean
1
Ya, tapi tidak berhasil. Apakah Anda mencoba semua kode ini di komputer Anda?
lomza
4

gunakan kode di bawah ini sebagai 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>

dimana:

  • "kemajuan" adalah kemajuan saat ini sebelum ibu jari dan "kemajuan sekunder" adalah kemajuan setelah ibu jari.
  • color = "# 00000000" adalah transparansi yang sempurna
  • CATATAN: file di atas adalah dari res default android dan untuk 2.3.7, ini tersedia di sumber android di: frameworks / base / core / res / res / drawable / progress_horizontal.xml. Untuk versi yang lebih baru, Anda harus menemukan file drawable default untuk seekbar yang sesuai dengan versi android Anda.

setelah itu gunakan dalam layout yang berisi xml:

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

Anda juga dapat menyesuaikan jempol dengan menggunakan ikon khusus seek_thumb.png:

android:thumb="@drawable/seek_thumb"
ungalcrys
sumber
1

Gunakan yang ini, saya telah menulis ini ke aplikasi saya,

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