Android颜色转换工具类ColorUtil

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android颜色转换工具类ColorUtil脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

原文地址:http://www.codefrom.com/c/179

项目中需要根据ScrollView的滚动距离来动态设置Topbar的背景透明度,网上有类似的开库FadingActionBar,使用的是ActionBar做的。而我的项目中并没有使用ActionBar,当然也没有去研究那个库。

当前的状态是已经有了ScrollView,并且自定义的Topbar效果还不错,通过接口监听,将Topbar传到ScrollView进行动态的背景设置。

既然有Topbar对象了,就可以调用Topbar的方法,于是我在Topbar中添加了一个方法setAlpha(float toAlpha),在ScrollView的TouchEvent中,根据滚动的距离就可以用一定算法将toAlpha设置给Topbar了。

我在ScrollView中写了一个方法,方便调用:

PRivate void refreshTopbar() {
    if(mOnTurnListener != null) {
         Topbar topbar = mOnTurnListener.onScroll();
         if(getScrollY() >= 300) {
             topbar.setAlpha(1.0f);
         } else if(getScrollY() >= 180 &amp;& getScrollY() < 300) {
             topbar.setAlpha((getScrollY() - 180) / 120f);
         } else {
             topbar.setAlpha(0.0f);
         }
    }
}

现在关键就是setAlpha这个方法了,其实也简单,就是利用toAlpha转换成颜色就行。因此我写了一个工具类ColorUtil.java来对颜色进行一些操作:

package com.codeFrom.utils;

import java.util.regex.Pattern;
import andROId.graphics.Color;
import com.codefrom.COMmon.MApplication;

public class ColorUtil {

    /**
     * 获取资源中的颜色
     * @param color
     * @return
     */
    public static int getResourcesColor(int color) {

        int ret = 0x00ffffff;
        try {
            ret = MApplication.gainContext().getResources().getColor(color);
        } catch (Exception e) {
        }

        return ret;
    }

    /**
     * 将十六进制 颜色代码 转换为 int
     * 
     * @return
     */
    public static int HextoColor(String color) {

        // #ff00CCFF
        String reg = "#[a-f0-9A-F]{8}";
        if (!Pattern.matches(reg, color)) {
            color = "#00ffffff";
        }

        return Color.parseColor(color);
    }

    /**
     * 修改颜色透明度
     * @param color
     * @param alpha
     * @return
     */
    public static int changeAlpha(int color, int alpha) {
        int red = Color.red(color);
        int green = Color.green(color);
        int blue = Color.blue(color);

        return Color.argb(alpha, red, green, blue);
    }

}

这里我用到了Color自带的获取R、G、B的方法。如需要获取资源文件中的颜色,我使用了MApplication.gainContext()来获取上下文对象,关于Application的介绍,可以看看Android中Application类用法这篇文章

有了这个工具类,setAlpha方法就不难写了:

    public void setAlpha(float toAlpha) {
        //setBackgroundColor(ColorUtil.changeAlpha(ColorUtil.HextoColor("#ff0066ff"), (int)(toAlpha * 0xff)));
        setBackgroundColor(ColorUtil.changeAlpha(ColorUtil.getResourcesColor(R.color.topbar_bg), (int)(toAlpha * 0xff)));
    }

提示:注释的那一行也可以实现一样的效果。

由于MApplication用到了很多其他开源框架初始化的东西,就只贴部分内容了:

public class MApplication extends Application {
    /**对外提供整个应用生命周期的Context**/
    private static Context instance;
    ……
    /**
     * 对外提供Application Context
     * @return
     */
    public static Context gainContext() {
        return instance;
    }

    public void onCreate() {
        suPEr.onCreate();
        instance = this;
        ……
    }
    ……
}

P.S. 该工具类后续应该还会更新,希望对你有所帮助。


原文地址:Android颜色转换工具类ColorUtil
更多技文章请访问:码源|专注开源技术分享


脚本宝典总结

以上是脚本宝典为你收集整理的Android颜色转换工具类ColorUtil全部内容,希望文章能够帮你解决Android颜色转换工具类ColorUtil所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。