How to set shape's opacity?

前端 未结 3 567

I already know how to set the opacity of the background image but I need to set the opacity of my shape object.

In my Android app, I have it like this:

相关标签:
3条回答
  • 2020-12-04 08:57

    In general you just have to define a slightly transparent color when creating the shape.

    You can achieve that by setting the colors alpha channel.

    #FF000000 will get you a solid black whereas #00000000 will get you a 100% transparent black (well it isn't black anymore obviously).

    The color scheme is like this #AARRGGBB there A stands for alpha channel, R stands for red, G for green and B for blue.

    The same thing applies if you set the color in Java. There it will only look like 0xFF000000.

    UPDATE

    In your case you'd have to add a solid node. Like below.

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

    The color here is a half transparent black.

    0 讨论(0)
  • 2020-12-04 09:04

    use this code below as 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>
    

    where:

    • "progress" is current progress before the thumb and "secondaryProgress" is the progress after thumb.
    • color="#00000000" is a perfect transparency
    • NOTE: the file above is from default android res and is for 2.3.7, it is available on android sources at: frameworks/base/core/res/res/drawable/progress_horizontal.xml. For newer versions you must find the default drawable file for the seekbar corresponding to your android version.

    after that use it in the layout containing the xml:

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

    you can also customize the thumb by using a custom icon seek_thumb.png:

    android:thumb="@drawable/seek_thumb"
    
    0 讨论(0)
  • 2020-12-04 09:12

    Use this one, I've written this to my app,

    <?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>
    
    0 讨论(0)
提交回复
热议问题