中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android顏色轉(zhuǎn)換工具類ColorUtil

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

項目中需要根據(jù)ScrollView的滾動距離來動態(tài)設置Topbar的背景透明度,網(wǎng)上有類似的開源庫FadingActionBar,使用的是ActionBar做的。而我的項目中并沒有使用ActionBar,當然也沒有去研究那個庫。

當前的狀態(tài)是已經(jīng)有了ScrollView,并且自定義的Topbar效果還不錯,通過接口監(jiān)聽,將Topbar傳到ScrollView進行動態(tài)的背景設置。

既然有Topbar對象了,就可以調(diào)用Topbar的方法,于是我在Topbar中添加了一個方法setAlpha(float toAlpha),在ScrollView的TouchEvent中,根據(jù)滾動的距離就可以用一定算法將toAlpha設置給Topbar了。

我在ScrollView中寫了一個方法,方便調(diào)用:

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

現(xiàn)在關鍵就是setAlpha這個方法了,其實也簡單,就是利用toAlpha轉(zhuǎn)換成顏色就行。因此我寫了一個工具類 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;
    }

    /**
     * 將十六進制 顏色代碼 轉(zhuǎn)換為 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)));
    }

提示:注釋的那一行也可以實現(xiàn)一樣的效果。

由于MApplication用到了很多其他開源框架初始化的東西,就只貼部分內(nèi)容了:

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;
        ……
    }
    ……
}

原文地址: Android顏色轉(zhuǎn)換工具類ColorUtil

標簽: 代碼

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Java去掉字符串中所有的標簽,獲取純文本內(nèi)容

下一篇:ftp 實現(xiàn)文件的上傳下載以及列出文件列表Java代碼