Làm cách nào để đặt độ mờ của hình dạng?


86

Tôi đã biết cách đặt độ mờ của hình nền nhưng tôi cần đặt độ mờ của đối tượng hình dạng của mình.

Trong ứng dụng Android của tôi, tôi có nó như sau: nhập mô tả hình ảnh ở đây

và tôi muốn làm cho vùng màu đen này trong suốt một chút, chẳng hạn như ở đây, chẳng hạn như tôi có thể nhìn thấy các vòng tròn thông qua "Chào mừng ...":

nhập mô tả hình ảnh ở đây

Đây là mã hình dạng của tôi:

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

Làm thế nào tôi có thể làm điều đó?


2
Mã đối tượng hình dạng sẽ hữu ích ở đây.
Octavian A. Damiean,

Câu trả lời:


201

Nói chung, bạn chỉ cần xác định một màu hơi trong suốt khi tạo hình dạng.

Bạn có thể đạt được điều đó bằng cách thiết lập kênh alpha màu sắc.

#FF000000sẽ giúp bạn có màu đen đặc trong khi #00000000bạn sẽ có màu đen trong suốt 100% (rõ ràng là nó không còn đen nữa).

Cách phối màu như thế này #AARRGGBB, A là viết tắt của kênh alpha, R là đỏ, G là xanh lục và B là xanh lam.

Điều tương tự cũng áp dụng nếu bạn đặt màu trong Java. Ở đó nó sẽ chỉ giống như 0xFF000000.

CẬP NHẬT

Trong trường hợp của bạn, bạn phải thêm một solidnút. Như bên dưới.

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

Màu sắc ở đây là một nửa trong suốt màu đen.


codeviewer.org/view/code:1974 - shape.xml. codeviewer.org/view/code:1975 - layout.xml. codeviewer.org/view/code:1976 - .java SetOpacity không hoạt động với hình dạng. Và tôi đã thử thêm android: background = "# 00000000" vào shape.xml, nhưng không có gì xảy ra.
lomza

Đây là kỳ lạ ... Nó không có vấn đề gì giá trị tôi thiết lập để màu, tôi có hình dạng của tôi hoàn toàn minh bạch = (
lomza

3
Theo tôi, độ mờ đó chỉ có thể được đặt thành một chế độ xem hoặc một hình ảnh ... Bởi vì khi tôi viết android: background = "# 88000000" thay vì android: background = "@ drawable / shape" trong LinearLayout của tôi, nó hoạt động .
lomza

2
Nó cũng hoạt động trên các hình dạng. Bạn đã thử những gì tôi đã đăng ở trên chưa?
Octavian A. Damiean

1
Có, nhưng nó không hoạt động. Bạn đã thử tất cả mã này trên máy của mình chưa?
lomza

4

sử dụng mã này dưới đây dưới dạng process.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>

Ở đâu:

  • "tiến độ" là tiến trình hiện tại trước ngón tay cái và "cấp độ phụ" là tiến trình sau ngón tay cái.
  • color = "# 00000000" là độ trong suốt hoàn hảo
  • LƯU Ý: tệp ở trên là từ res android mặc định và dành cho 2.3.7, nó có sẵn trên các nguồn android tại: framework / base / core / res / res / drawable / process_horizontal.xml. Đối với các phiên bản mới hơn, bạn phải tìm tệp có thể vẽ mặc định cho thanh tìm kiếm tương ứng với phiên bản Android của bạn.

sau đó sử dụng nó trong bố cục chứa xml:

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

bạn cũng có thể tùy chỉnh ngón tay cái bằng cách sử dụng biểu tượng tùy chỉnh seek_thumb.png:

android:thumb="@drawable/seek_thumb"

1

Sử dụng cái này, tôi đã viết cái này vào ứng dụng của mình,

<?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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.