“何書還”之二(關(guān)于Animation使用)


官方介紹Animation使用

我看了一下官方文檔沽一,但是無奈我的理解能力不夠好,跑了好多次還是看不見炫酷的動畫效果,無奈只好去翻閱官方demo的源碼沉噩,終于知道了怎么使用。

Touch Feedback(觸摸反饋)

在XML文件中添加以下代碼可以添加觸摸反饋的動畫效果(類似于漣漪的效果)

  • ?android:attr/selectableItemBackground(有邊界柱蟀,可以使用在listview的item上)
  • ?android:attr/selectableItemBackgroundBorderless(沒有邊界川蒙,或者直接看是看不到明顯的邊界,但是點(diǎn)擊是有漣漪效果)
    需要說明android:attr/selectableItemBackgroundBorderless是API 21新增加的**

Circular Reveal

這個主要是提供一個圓形的顯示或者隱藏的動畫效果长已,主要使用的api是[ViewAnimationUtils.createCircularReveal()](http://developer.android.com/reference/android/view/ViewAnimationUtils.html#createCircularReveal(android.view.View, int, int, float, float)

// previously invisible view
View myView = findViewById(R.id.my_view);

// get the center for the clipping circle
int cx = (myView.getLeft() + myView.getRight()) / 2;
int cy = (myView.getTop() + myView.getBottom()) / 2;

// get the final radius for the clipping circle
int finalRadius = Math.max(myView.getWidth(), myView.getHeight());

// create the animator for this view (the start radius is zero)
Animator anim =
    ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);

// make the view visible and start the animation
myView.setVisibility(View.VISIBLE);
anim.start();

里面幾個參數(shù)的意思分別為:

  • myView 要展示動畫效果的視圖
  • cx 動畫開始的X坐標(biāo)
  • cy 動畫開始的Y坐標(biāo)
  • startRadius 動畫開始的角度
  • finalRadius 動畫結(jié)束的角度

Activity Transitions

關(guān)于這個我就?不多寫了畜眨,博主大苞米對于這個寫的十分詳細(xì),給大家附上鏈接自己看一下,我就?Activity之間的視圖共享寫一下术瓮,因?yàn)槲以谶@個地方花了一些時間康聂,所以記下來以備后面忘記。

首先需要在XML文件中你需要共享的View定義一個android:transitionName

<ImageView
                android:id="@+id/bookPage"
                android:layout_width="match_parent"
                android:layout_height="400dp"
                android:scaleType="centerCrop"
                android:tint="@color/photo_tint"
                android:transitionName="bookPage" />

然后可以定義動畫效果:

1.可以在style文件中定義

<item name="android:windowContentTransitions">true</item>  
<item name="android:windowEnterTransition">@transition/explode</item>  
<item name="android:windowExitTransition">@transition/explode</item>

2.可以在java文件中定義

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);  
getWindow().setExitTransition(new Explode());  

然后在使用Intent跳轉(zhuǎn)的時候胞四,加入ActivityOptions

Intent intent = new Intent(this, Activity2.class);  
// shareView: 需要共享的視圖  
// bookPage就是剛剛 transitionName所寫的值
ActivityOptions options = ActivityOptions  
        .makeSceneTransitionAnimation(this, shareView, "bookPage");  
startActivity(intent, options.toBundle());

對于一次共享多個View的需要使用Pair.create(view,"shareName")早抠,這里必須是View。

關(guān)于結(jié)束Activity時同樣動畫效果倒回可以使用Activity.finishAfterTransition()撬讽。

添加TranstionListener

同樣你可以在進(jìn)入動畫時候添加動畫監(jiān)聽器,這樣你就可以在本頁面加載更多的動畫效果

getWindow().getEnterTransition().addListener(new TransitionAdapter() {
                @TargetApi(Build.VERSION_CODES.LOLLIPOP)
                @Override
                public void onTransitionEnd(Transition transition) {
                    ObjectAnimator color = ObjectAnimator.ofArgb(bookPage.getDrawable(), "tint",
                            getResources().getColor(R.color.photo_tint), 0);
                    color.start();
                    renewButton.animate().scaleX(1.0f);
                    renewButton.animate().scaleY(1.0f);
                    renewButton.animate().alpha(1.0f);
                    getWindow().getEnterTransition().removeListener(this);
                }
            });

關(guān)閉Activity時同樣可以使用悬垃,需要重寫onBackPressed()方法:

@Override
    public void onBackPressed() {
        super.onBackPressed();
        if (Build.VERSION.SDK_INT == 21) {
            ObjectAnimator color = ObjectAnimator.ofArgb(bookPage.getDrawable(), "tint",
                    0, getResources().getColor(R.color.photo_tint));
            color.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    finishAfterTransition();
                }
            });
            color.start();
            renewButton.animate().scaleX(0.0f);
            renewButton.animate().scaleY(0.0f);
            renewButton.animate().alpha(0.0f);
            finishAfterTransition();
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末游昼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尝蠕,更是在濱河造成了極大的恐慌烘豌,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件看彼,死亡現(xiàn)場離奇詭異廊佩,居然都是意外死亡囚聚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門标锄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顽铸,“玉大人,你說我怎么就攤上這事料皇∥剿桑” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵践剂,是天一觀的道長鬼譬。 經(jīng)常有香客問我,道長逊脯,這世上最難降的妖魔是什么优质? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮军洼,結(jié)果婚禮上巩螃,老公的妹妹穿的比我還像新娘。我一直安慰自己歉眷,他們只是感情好牺六,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汗捡,像睡著了一般淑际。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扇住,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天春缕,我揣著相機(jī)與錄音,去河邊找鬼艘蹋。 笑死锄贼,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的女阀。 我是一名探鬼主播宅荤,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼浸策!你這毒婦竟也來了冯键?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤庸汗,失蹤者是張志新(化名)和其女友劉穎惫确,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡改化,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年掩蛤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陈肛。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡揍鸟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燥爷,到底是詐尸還是另有隱情蜈亩,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布前翎,位于F島的核電站稚配,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏港华。R本人自食惡果不足惜道川,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望立宜。 院中可真熱鬧冒萄,春花似錦、人聲如沸橙数。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽灯帮。三九已至崖技,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钟哥,已是汗流浹背迎献。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留腻贰,地道東北人吁恍。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像播演,于是被迫代替她去往敵國和親冀瓦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容