1. 程式人生 > >Android buttom textview 顏色平滑過渡的動畫效果

Android buttom textview 顏色平滑過渡的動畫效果

1. TransitionDrawable。例如,在資料夾中繪製一個xml檔案,你可以這樣寫:

<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android=" CodeGo.net 
 <!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
 <item android:drawable="@drawable/original_state" />
 <item android:drawable="@drawable/new_state" />
</transition>
然後,在你的xml的實際檢視你都引用這個TransitionDrawable在android:background屬性。 在這一點上,你可以通過執行啟動程式碼中的過渡:
TransitionDrawable transition = (TransitionDrawable) viewObj.getBackground();
transition.startTransition(transitionTime);
或通過呼叫執行在反向過渡:
transition.reverseTransition(transitionTime);

我希望這可以幫助您解決您的問題! 

2. 屬性動畫的ValutAnimator動畫:
Integer colorFrom = getResources().getColor(R.color.red);
Integer colorTo = getResources().getColor(R.color.blue);
 ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(),colorFrom,colorTo);
            colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animator) {
                    setBackgroundColor((Integer)animator.getAnimatedValue());
                }
            });
            colorAnimation.setDuration(200);
            colorAnimation.start();

相容低版本至Android 2.x,可以使用nineoldAndroids的庫。 

3. 根據您的觀點得到它的背景顏色,以及如何讓你的目標顏色有幾種不同的方法來做到這一點。 優先個Android的屬性動畫 如果使用物件的動畫: 你的觀點有其背景色定義為argb在一個XML檔案中的值。 你的觀點有它的顏色由設定view.setBackgroundColor()您的觀點已在繪製中定義它的背景色,不定義如中風或角落的任何額外的屬性 在繪製你的觀點有它的背景色定義和要刪除像中風或角落的任何額外的屬性牢記 CodeGo.net,去除多餘的屬性將不會動畫。 物件動畫作品通過呼叫view.setBackgroundColor它取代了定義繪製的,除非是它的一個例項ColorDrawable,它很少是。從像中風或角落的可繪製任何額外的背景屬性將被刪除。 如果使用一個值動畫: 在繪製也設定類似的行程或轉角的屬性你的觀點有它的背景色定義,你想改變它執行時決定一個新的顏色。 如果使用過渡繪製: 你認為應該是以前已經定義了兩個可繪製之間切換 我曾與那當我開啟,我一直沒能解決DrawerLayout執行轉換可繪製效能問題,因此,如果您遇到任何意外口吃你可能遇到的bug,因為我有。 你將不得不修改值動畫的例子,如果你想有一個StateLists繪製或LayerLists繪製,否則會崩潰的。

finalGradientDrawable background = (GradientDrawable) view.getBackground();

GradientDrawable能設定button或者textview的邊框等等屬性

xml

<View
 android:background="#FFFF0000"
 android:layout_width="50dp"
 android:layout_height="50dp"/>
建立ObjectAnimator:
final ObjectAnimator backgroundColorAnimator = ObjectAnimator.ofObject(view,
                  "backgroundColor",
                  new ArgbEvaluator(),
                  0xFFFFFFFF,
                  0xff78c5f9);
backgroundColorAnimator.setDuration(300);
backgroundColorAnimator.start();

您還可以從AnimatorInflater載入動畫定義像XMight確實在Android的objectAnimator動畫布局的backgroundColor 值動畫: xml
<View
 android:background="@drawable/example"
 android:layout_width="50dp"
 android:layout_height="50dp"/>
可繪製物件的xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android=" CodeGo.net 
 <solid android:color="#FFFFFF"/>
 <stroke
  android:color="#edf0f6"
  android:width="1dp"/>
 <corners android:radius="3dp"/>
</shape>

建立一個這樣的ValueAnimator
final ValueAnimator valueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(),
                    0xFFFFFFFF,
                    0xff78c5f9);
            final GradientDrawable background = (GradientDrawable) getBackground();
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(final ValueAnimator animator) {
                    background.setColor((Integer) animator.getAnimatedValue());
                }
            });
            valueAnimator.setDuration(300);
            valueAnimator.start();

過渡繪製: xml:
<View
 android:background="@drawable/example"
 android:layout_width="50dp"
 android:layout_height="50dp"/>
可繪製物件的xml:
<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android=" 
 <item>
  <shape>
   <solid android:color="#FFFFFF"/>
   <stroke
    android:color="#edf0f6"
    android:width="1dp"/>
   <corners android:radius="3dp"/>
  </shape>
 </item>
 <item>
  <shape>
   <solid android:color="#78c5f9"/>
   <stroke
    android:color="#68aff4"
    android:width="1dp"/>
   <corners android:radius="3dp"/>
  </shape>
 </item>
</<span style="font-family: Arial, Helvetica, sans-serif;">transition></span>
使用TransitionDrawable
final TransitionDrawable background = (TransitionDrawable) view.getBackground();
background.startTransition(300);

你可以通過呼叫扭轉動畫.reverse()在動畫例項。 還有其他方法可以做到,但動畫這三個大概是我一個ValueAnimator。 

4. 另一種簡單的方法來實現這一目標是執行AlphaAnimation。 讓你的檢視的ViewGroup 新增一個子檢視將其索引為0,與match_parent佈局 給你的子的背景作為容器 改變到容器到目標色彩的背景 淡出AlphaAnimation。 取出子時的動畫效果(使用AnimationListener)

最終我是用的程式碼如下

/**
         * Set whether this tag view is in the checked state.
         *
         * @param checked true is checked, false otherwise
         */
        public void setCheckedChangeColor(boolean checked) {
            isChecked = checked;
            changeColorTransition(checked);

        }

        private void changeColorTransition(final boolean checked){
            animUpdateDrawable = true;

            int fromColor,toColor;
            if (checked) {
                fromColor = backgroundColor;
                toColor = checkedBackgroundColor;
            } else {
                fromColor = checkedBackgroundColor;
                toColor = backgroundColor;
            }

            ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), fromColor, toColor);
            colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animator) {

                    GradientDrawable toDrawable = new GradientDrawable();
                    toDrawable.setCornerRadii(mRadius);
                    toDrawable.setColor((Integer)animator.getAnimatedValue());
                    toDrawable.setStroke(mStrokeWidth, !checked ? mStrokeColor.getDefaultColor() : mCheckedStrokeColor.getDefaultColor());

                    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                        setBackgroundDrawable(toDrawable);
                    } else {
                        setBackground(toDrawable);
                    }

                }

            });

            colorAnimation.addListener(new ValueAnimator.AnimatorListener(){
                @Override
                public void onAnimationEnd(Animator animator) {
                    animUpdateDrawable = false;

                    if (checked) {
                        setTextColor(checkedTextColor);
                    } else {
                        setTextColor(textColor);
                    }
                }

                @Override
                public void onAnimationCancel(Animator animator) {
                }

                @Override
                public void onAnimationRepeat(Animator animator) {
                }

                @Override
                public void onAnimationStart(Animator animator) {
                }
            });
            colorAnimation.setDuration(350);
            colorAnimation.start();
        }

        @Override
        protected boolean getDefaultEditable() {
            return true;
        }


相關推薦

Android buttom textview 顏色平滑過渡動畫效果

1. TransitionDrawable。例如,在資料夾中繪製一個xml檔案,你可以這樣寫: <?xml version="1.0" encoding="UTF-8"?> <transition xmlns:android=" CodeGo.net

Android高效率實現彈出帶動畫效果的對話方塊,仿照微信對話方塊效果

看到很多app頁面裡都有彈出對話方塊效果,今天使用PopupWindow實現帶動畫效果的對話方塊,先看效果圖: 效果圖: 分析實現思路: 彈出對話方塊帶有動畫效果 對話方塊從底部向上彈出 彈出對話方塊時,窗體背景呈現灰色(半透明) 對話方塊四周具

Android仿一點資訊收藏Toast動畫效果(給Toast新增動畫效果

最近在做一個項,有一個收藏的功能。後來看到了一點資訊的收藏動畫,可上下彈跳,並在螢幕中央顯示。感覺不錯,所有自己就實現了一下。 這是效果: 附上完整的程式碼,其中Animation_Toast為動畫: public class CollectToast

Android學習之5.X過渡動畫的實現

你是否對安卓現有的頁面跳轉動畫覺得單一生硬呢? Android 5.0中,Google對動畫效果做了更深的詮釋,為Activity的跳轉設計更加豐富的動畫效果。 看下效果圖 由於不會Gif,這圖是扣來的,但是我們就是來講述這種效果是如何實現的 And

Layout動畫:在android佈局發生變化時新增動畫效果

layout動畫在每次佈局發生變化的時候系統呼叫的一個預載入動畫效果,使用layout動畫可以讓佈局的變化過度看起來更自然。使用起來很簡單,只需在控制元件中新增一個屬性就可以了,系統預設是不會啟動layout動畫的,因此我們平時的應用中不會產生這個效果。

Android 自定義兩球旋轉動畫效果

自定義一個兩球旋轉動畫效果,可以用於載入時的動畫展示 先定義attrs屬性 <resources> <declare-styleable name="BallRotationAnim"> <!--球最大半徑

CSS3轉換過渡動畫效果總結

內容摘要:        本篇主要介紹CSS3的一些動畫效果設定,從轉換、過渡、動畫3個方式總結介紹。 目錄簡介: 1.    轉換 2.    過渡 3.    動畫 標籤:        CSS3,transform,transition,keyframes,anima

android直播app禮物連擊動畫效果

最近在做公司的直播專案,需要實現一個觀看端連擊送禮物的控制元件: 直接上程式碼: public class CustomGiftView extends LinearLayout { private Timer timer; privat

#Android筆記#popupwindow淡入淡出動畫效果的研究

前幾天完成了底部選單欄的設計與功能的實現,其中就包括了其彈出效果的設定,下面就來分析一下: 實現步驟: 1.在res目錄下新建anim資料夾用來存放動畫相關的xml檔案。 2.新建xml檔案(push_bottom_in.xml,push_bottom_out.xm

android 自定義下拉重新整理動畫效果

    今天公司讓把官方的下拉重新整理動畫改一下,自己仔細讀pullTorefresh原始碼,終於發現了蛛絲馬跡,現我就自己理解將修改步驟給大家講解一下。 本篇博文要給大家分享的是如何使用修改開源專案PullToRrefresh下拉重新整理的動畫,來滿足我們開發當中特定的需

android圖片漸隱漸現動畫效果

    最近專案中需要用到一個過渡動畫,就是一個圖片漸隱漸現,然後重複五次後過渡動畫消失,首先說下我的思路,一個timer,重複執行,然後執行的時候肯定要不斷呼叫顯示、隱藏動畫。其中定時器每次重複的時間是動畫顯示(或隱藏)的時間 public class Mai

android PopupWindow 新增下拉展開動畫效果

1.兩個動畫,包括show 和hide show: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="ht

通過Canvas的疊加實現Android中環形View的顏色填充動畫效果

最近看到很多國內和國外的APP很多表示資料的方式都是通過一個圓環和數字動態展現,很是生動啊,由此也想做個簡單的模型試一試效果! 在Android中實現一種效果的方式有很多種,本人使用繼承View類,通過Paint和Canvas繪圖疊加的方式實現。 首先新建一個RingVie

Android 5.X Activity過渡動畫,以及漂亮的共享元素效果

曾經的Android在Activity進行跳轉的時候,只是非常生硬的進行切換,即使使用overPendingtransition(int inId,int outId)這個方法來給Activity增加一些切換動畫效果也很是差強人意。而在Android 5.X中,

android畫多種顏色的圓環帶動畫效果

首先在values中的attrs中建立自定義控制元件的屬性 <declare-styleable name="MyView"> <attr name="my_view_color" format="color"></attr&

200多種Android動畫效果的強悍框架

lsh ron dmi spl adb 下拉選擇 源代碼 社區 eee admin 發布於2015-10-23 14:33 363/68015 【精品推薦】200多種Android動畫效果的強悍框架,太全了,不看這個,再有動畫的問題,不理你了^@^ 功能模塊

Android一個TextView設置多種顏色的2種高效方法

track 能夠 post star strong 價格 show img clas 有時候一個文本框為了強調內容須要顯示不同顏色,用下面代碼能夠輕松實現 方法一:(適用於顏色變化多的情況) //為文本框設置多種顏色 textView=(TextView)fi

android 仿ppt進入動畫效果合集

ppt 效果 動畫 android 進入 EnterAnimationandroid 仿ppt進入動畫效果合集, 百葉窗效果,擦除效果,盒狀效果,階梯效果,菱形效果,輪子效果,劈裂效果,棋盤效果, 切入效果,扇形展開效果,十字擴展效果,隨機線條效果,向內溶解效果,圓形擴展效果, 適用於各種

Android動畫效果之Frame Animation(逐幀動畫

想要 顯示 star 載體 rop 復雜 ide sources post 前言: 上一篇介紹了Android的Tween Animation(補間動畫) Android動畫效果之Tween Animation(補間動畫),今天來總結下Android的另外一種動

HTML CSS筆記變形效果-過渡效果-動畫效果

HTML CSS 動畫效果 變形效果 過渡效 一.transformCSS3 提供了元素變形效果,也叫做變換。它可以將元素實現旋轉、縮放和平移的功能。屬性有兩個:transform 和 transform-origin。對於 transform 的屬性值,具體如下表://向水平和垂直各移動