【问题标题】:Android button - maintain image transparency across press statesAndroid 按钮 - 在按下状态下保持图像透明度
【发布时间】:2012-06-15 10:27:39
【问题描述】:

这里有一个菜鸟问题:

我有一个带有部分透明 PNG 背景的按钮。我试图在不同的按下状态下保持按钮的透明度。问题是:当我对背景图像应用渐变时(表示按下按钮),渐变会使图像占据的整个“空间块”变暗,而不仅仅是图像本身。

如何保持图像的透明部分透明?提前谢谢...

selector_button_singleplayer.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/button_singleplayer" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient_button_singleplayer" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient_button_singleplayer" />
<item android:drawable="@drawable/button_singleplayer" />

gradient_button_singleplayer.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <bitmap android:src="@drawable/button_singleplayer"/>
</item>
<item>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/>
    </shape>
</item>
</layer-list>

我的按钮:

<Button android:id="@+id/main_menu_choose_single_player"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="25dip"
android:background="@drawable/selector_button_singleplayer"
/>

【问题讨论】:

    标签: android android-layout android-button


    【解决方案1】:

    去ImageButton

    将 android:src 设置为 button_singleplayer

    你的 gradient_button_singleplayer.xml 将是

    <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/>
        </shape>
    

    你的 selector_button_singleplayer.xml 将是

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true" android:state_pressed="false" android:drawable="@android:color/transparent" />
    <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient_button_singleplayer" />
    <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient_button_singleplayer" />
    <item android:drawable="@android:color/transparent" />
    

    你的 imageButton 将是

    <ImageButton android:id="@+id/main_menu_choose_single_player"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="25dip"
    android:background="@drawable/selector_button_singleplayer"
    android:src="@drawable/button_singleplayer"
    />
    

    【讨论】:

    • 谢谢。我认为这个答案是正确的。但是,现在渐变只应用于背景,图像本身完全保持不变。在整个块变暗之前,现在只影响图像的透明度。但也许我可以从那里解决。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多