ViewSwitcher學習筆記

ViewSwitcher 的做用簡單來講就是:在兩個視圖間轉換時顯示動畫  java

它的兩個子類應該很熟悉,ImageSwitcher:轉換圖片時增長動畫效果TextSwitcher 轉換文字時增長動畫效果 android



API翻譯 函數

1、結構 佈局


public class ViewSwitcher extends ViewAnimator 動畫

        

java.lang.Object spa

android.view.View 翻譯

         android.view.ViewGroup xml

                   android.widget.FrameLayout 對象

                            android.widget.ViewAnimator 索引

                                     android.widget.ViewSwitcher

已知直接子類

ImageSwitcherTextSwitcher


 

  2、概述

     在兩個視圖間轉換時顯示動畫,有一個能夠建立這些視圖的工廠類。你能夠用工廠來建立這些視圖,也能夠本身建立。一個ViewSwitcher只容許包含兩個子視圖,且一次僅能顯示一個。

  (譯者注:與ViewFlipper類類似,但該類不經常使用,經常使用其兩個子類ImageSwitcher:轉換圖片時增長動畫效果TextSwitcher轉換文字時增長動畫效果

 

  3、內部類

    interface          ViewSwitcher.ViewFactory     

    在一個ViewSwitcher裏建立視圖

 

  4、構造函數

public ViewSwitcher (Context context)

    構造一個新的空的視圖轉換器(ViewSwitcher)

    參數context  上下文

public ViewSwitcher (Context context, AttributeSet attrs)

    構造一個指定上下文、屬性集合的空的視圖轉換器(ViewSwitcher)

    參數

    context    上下文

    attrs        屬性集合

 

5、公共方法


public void addView(View child, int index, ViewGroup.LayoutParams params)

   添加一個指定佈局參數的子視圖

            參數

  child         添加的子視圖

  index       添加的子視圖的索引

  params    子視圖的佈局參數

  異常

  IllegalStateException       若是切換器中已經包含了兩個視圖時。

   

  public View getNextView ()

  返回下一個要顯示的視圖

  返回值——視圖切換以後將要顯示出的下一個視圖

 

  public void reset ()

  重置視圖轉換器(ViewSwitcher)來隱藏全部存在的視圖,並使轉換器達到一次動畫都尚未播放的狀態。

 

  public void setFactory (ViewSwitcher.ViewFactory factory)

  設置用來生成將在視圖轉換器中切換的兩個視圖的工廠。也能夠調用兩次 addView(android.view.View, int,        android.view.ViewGroup.LayoutParams)來替代使用工廠的方法。

  參數 factory   用來生成轉換器內容的視圖工廠

下面利用OSChina開源代碼中的一部分來演示它的具體使用

「用戶登陸」

佈局xml:


 <ViewSwitcher 
        android:id="@+id/logindialog_view_switcher" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content">

        <RelativeLayout 

        佈局。。。。

        />

        <View 
           android:id="@+id/login_loading" 
           android:layout_width="135.0dip" 
           android:layout_height="135.0dip"
           android:layout_gravity="center" 
           android:background="@anim/login_loading"/>
</ViewSwitcher>
動畫類中:


01    動畫1                                                          11   動畫2

用到圖層疊加(由於這裏有兩個動畫效果)

<!-- 動畫幀集合對象-->

<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
  android:oneshot="false">

<!--動畫幀對象 android:duration表示每幀動畫顯示的時間,放在drawable下的動畫圖片不能太大,不然會內存爆掉-->    
    <item android:duration="100">
        <layer-list>
            <item android:drawable="@drawable/login_loading_00" />
            <item android:drawable="@drawable/login_loading_10" />
        </layer-list>
    </item>

<item android:duration="100">
        <layer-list>
            <item android:drawable="@drawable/login_loading_01" />
            <item android:drawable="@drawable/login_loading_11" />
        </layer-list>
    </item>

    

    <item android:duration="100">
        <layer-list>
            <item android:drawable="@drawable/login_loading_02" />
            <item android:drawable="@drawable/login_loading_12" />
        </layer-list>
    </item>

</animation-list>

實體類中

初始化

private ViewSwitcher mViewSwitcher;

private View loginLoading;


loginLoading = (View)findViewById(R.id.login_loading);

mViewSwitcher = (ViewSwitcher)findViewById(R.id.logindialog_view_switcher);


loadingAnimation = (AnimationDrawable)loginLoading.getBackground();
       loadingAnimation.start();
       mViewSwitcher.showNext();//當登陸成功

       mViewSwitcher.showPrevious();//當登陸失敗

相關文章
相關標籤/搜索