【问题标题】:Best way to tint my buttons?为我的按钮着色的最佳方法?
【发布时间】:2012-02-21 11:28:52
【问题描述】:

我目前正在开发一个 android 应用程序,我在其中使用透明 png 作为用户界面的按钮。

按钮看起来有点像这样:

当用户按下按钮时,我想自动将图像中的不透明像素着色为较暗的颜色。

目前,我为每个状态使用具有不同可绘制对象的 xml 选择器。这显然不能很好地扩展,因为我需要在 Photoshop 中制作每个图像的多个版本。

有什么解决办法吗?听说可以使用 ImageView 的 setColorFilter 方法来实现,不过最好有完整的解释!

谢谢!

【问题讨论】:

    标签: java android


    【解决方案1】:

    将此图像设置为 ImageButton 的源并使用 xml 状态列表设置 ImageButton 的状态(背景),类似这样

    <?xml version="1.0" encoding="utf-8"?>
    <selector
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_pressed="true">
            <shape
                >
    
                <gradient
                    android:startColor="@android:color/background_light"
                    android:endColor="@android:color/darker_gray"
                    android:angle="90"/>
                 <stroke
                    android:width="1dp"
                    android:color="#999999" />
                <corners
                    android:radius="9dp"/>
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp"/>
    
            </shape>
        </item>
    
        <item android:state_focused="true">
            <shape>
                <gradient
                    android:endColor="@android:color/transparent"
                    android:startColor="@android:color/transparent"
                    android:angle="270"/>
                <stroke
                    android:width="1dp"
                    android:color="#989797" />
                <corners
                    android:radius="9dp"/>
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp"/>
            </shape>
        </item>
    
        <item>        
            <shape>
                <gradient
                    android:endColor="@android:color/transparent"
                    android:startColor="@android:color/transparent"
                    android:angle="90"/>
                 <stroke
                    android:width="1dp"
                    android:color="#999999" />
                <corners
                    android:radius="9dp"/>
                <padding
                    android:left="10dp"
                    android:top="10dp"
                    android:right="10dp"
                    android:bottom="10dp"/>
            </shape>
        </item>
    </selector>
    

    【讨论】:

    猜你喜欢
    • 2014-06-05
    • 2020-11-03
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2016-07-06
    • 2012-03-15
    • 2013-10-19
    • 1970-01-01
    相关资源
    最近更新 更多