程序猿媛五:ViewAnimator多級動態標題欄

ViewAnimator多級動態標題欄

聲明:博文爲原創,文章內容爲,效果展現,思路闡述,及代碼片斷。

    轉載請保留原文出處「http://my.oschina.net/gluoyer/blog」,謝謝!php

    您能夠到博客的「友情連接」中,「程序猿媛(最新下載)*.*」下載最新版本,持續更新!當前版本,也可直接點擊「當前1.4版本」下載。java

 

    本文介紹,經過ViewAnimator動態切換,將自定義標題欄中的功能按鈕,分類、分層次顯示。android

    固然,博文闡述的是一種展示模式,請根據實際狀況,靈活應用。ide

   首先,看下實現效果:佈局

d01 d02 d03 d04

    效果簡述:進入後點擊「設置」,動畫效果向下切入顯示二級欄;點擊「返回」,動畫向上切回主欄。動畫

    功能實現,主要如下幾步:this

  •     佈局中的ViewAnimator;
  •     管理層級間的切換關係;
  •     設置切換動畫。

佈局中的ViewAnimator

 

<ViewAnimator
    android:id="@+id/title_bar_switcher"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
<LinearLayout
	android:id="@+id/title_bar_main"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:gravity="center_vertical"
	android:background="#a0a00aa0">
    <Button
        android:id="@+id/title_bar_switch_sec_tk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/str_title_bar_btn_to_sec_tk" />
    <Button
        android:id="@+id/title_bar_switch_sec_class"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/str_title_bar_btn_to_sec_class" />
    <Button
        android:id="@+id/title_bar_switch_sec_set"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/str_title_bar_btn_to_sec_set" />
</LinearLayout>

<include
    android:id="@+id/title_bar_sec_set"
    layout="@layout/title_bar_ani_set" />

<include
    android:id="@+id/title_bar_sec_class"
    layout="@layout/title_bar_ani_class" />

<include
    android:id="@+id/title_bar_sec_tk"
    layout="@layout/title_bar_ani_tk" />

</ViewAnimator>

    爲了方便觀看其關係,將二級欄單獨提取出去,經過include包含進來的。.net

    經過佈局能夠看出,在ViewAnimator中,能夠直接將各子項放置其中:3d

    title_bar_main對應的就是主欄,截圖也能夠看到,它包含「設置」、「分類」「三國」三個按鈕,點擊分別對應顯示下面include的三組佈局。以截圖最後一張顯示爲例:點擊「設置」後,動畫切入顯示title_bar_sec_set對應包含的佈局。code

管理層級間的切換關係

    首先,定義了enum類型,以及該類型的成員變量:

enum TopBarMode {Main, Set, Class, Tk};
private TopBarMode mTopBarMode = TopBarMode.Main;

    這樣,咱們就能夠記錄到當前欄所處的狀態了。

    切換操做是經過ViewAnimator提供的方法setDisplayedChild(…)實現的。好比,點擊「設置」按鈕進行切換是,就能夠調用以下方法:

private void toSecSet() {
	if(TopBarMode.Set != mTopBarMode) {
		// 更新狀態,切換顯示欄
		mTopBarMode = TopBarMode.Set;
		mBarSwitcher.setDisplayedChild(mTopBarMode.ordinal());
		// 動畫設置,下一節介紹
		mSafeAnimator.startVisibleAnimator(this, mSecSet, R.anim.slide_top_in);
		mSafeAnimator.startInvisibleAnimator(this, mMain, R.anim.slide_bottom_out);
	}
}

設置切換動畫

    爲了增長切換的效果,一般,咱們都是加入過渡動畫的。

    我習慣上是經過xml文件設置動畫,因此,這裏添加了一個SafeAnimator.java文件,也就是前面toSecSet()方法中,mSafeAnimator變量的類型。簡單加入了兩個方法:

  •     startInvisibleAnimator,動畫顯示後,設置視圖不可見。
  •     startVisibleAnimator,動畫顯示後,設置視圖可見。

主要經過Animation開始視圖的動畫,並設置監聽,在動畫開始和結束階段,設置視圖的可見性; 詳見源碼,不贅述!

 

    OK,That's all! 源碼能夠經過應用,點擊截圖中底部顯示的「關於做者及源碼下載按鈕獲取,謝謝!

 

轉載請保留地址出處「http://my.oschina.net/gluoyer/blog/178560」,謝謝!

您能夠到博客的「友情連接」中,「程序猿媛(最新下載)*.*」下載最新版本,持續更新!當前版本,也可直接點擊「當前1.4版本」下載

相關文章
相關標籤/搜索