利用屬性動(dòng)畫(huà)進(jìn)行流暢的色彩切換

在Android中往往會(huì)遇見(jiàn)需要切換顏色的場(chǎng)景,但如果直接從一種顏色直接跳轉(zhuǎn)到另一種,很可能因?yàn)樯实姆床钤斐缮驳那袚Q效果,這對(duì)于用戶是非常不友好的。

相比直接設(shè)置顏色,選擇使用一個(gè)屬性動(dòng)畫(huà),將當(dāng)前顏色和要變化的顏色作為屬性動(dòng)畫(huà)的值,對(duì)的,顏色是用16進(jìn)制數(shù)表示,因此也是int類型。

這里需要注意的是在動(dòng)畫(huà)中設(shè)置了 ArgbEvaluator這個(gè)參數(shù)。這個(gè)參數(shù)可以計(jì)算我們?cè)O(shè)置兩個(gè)顏色中間的過(guò)渡色,而通過(guò)屬性動(dòng)畫(huà)回調(diào)方法中不斷設(shè)置漸變顏色,即可得到一個(gè)相對(duì)流暢的色彩切換效果。

直接上代碼啦,簡(jiǎn)單的貼了一個(gè)點(diǎn)擊方法和屬性動(dòng)畫(huà)。另外在Linux上沒(méi)有ps如何制作gif...求指導(dǎo)

    public void changeColorClick(View view) {
        switch (view.getId()){
            case R.id.yellow :
                colorAnimator(Color.BLUE,Color.YELLOW,background);
//                background.setBackgroundColor(Color.RED);
                break;
            case R.id.blue :
                colorAnimator(Color.YELLOW,Color.BLUE,background);
//                background.setBackgroundColor(Color.BLUE);
                break;
        }
    }

    private void colorAnimator(int mPreColor, int mCurrColor, final View view){
        //設(shè)置窗口顏色漸變動(dòng)畫(huà)
        ValueAnimator animator = ValueAnimator.ofInt(mPreColor, mCurrColor);
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int color = (int) animation.getAnimatedValue();
                view.setBackgroundColor(color);
            }
        });
        animator.setDuration(500);
        animator.setEvaluator(new ArgbEvaluator());
        animator.start();
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,182評(píng)論 4 61
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,932評(píng)論 25 709
  • 2、少年的云 "你想看的《射雕英雄傳》借來(lái)了,看完了給我看。"你遞給我一本被人翻爛沒(méi)了皮的《射雕》。 每次你都是這...
    劉彩云閱讀 583評(píng)論 5 5
  • 如果我是一只貓,最好做一只流浪貓。 我喜歡無(wú)拘無(wú)束,不喜歡被圈養(yǎng)在人口密集的城市里。否則,春花開(kāi)的時(shí)候,我會(huì)想要找...
    檸楊閱讀 1,463評(píng)論 0 1
  • 小A是我多年的閨蜜,情同手足已數(shù)年,期間也曾有過(guò)小爭(zhēng)執(zhí),不過(guò)我們都知道,那只是友誼的潤(rùn)滑劑,不會(huì)妨礙我們友誼的小船...
    查寧街88號(hào)閱讀 760評(píng)論 1 3

友情鏈接更多精彩內(nèi)容