前面兩期學習了 ViewAnimator及其子類ViewSwitcher的使用,以及ViewSwitcher的子類ImageSwitcher和TextSwitcher的使用,你都掌握了嗎?本期咱們一塊兒來學習ViewAnimator另外一個子類 ViewFlipper組件的使用。java
ViewFlipper組件繼承了 ViewAnimator,它可調用addView(View v)添加多個組件,一旦向 ViewFlipper中添加了多個組件以後,ViewFlipper就可以使用動畫控制多個組件之間的切換效果。android
ViewFlipper與前面介紹的AdapterViewFlipper有較大的類似性,它們能夠控制組件切換的動畫效果。它們的區別是:ViewFlipper須要開發者經過addView(View v)添加多個View,而 AdapterViewFlipper則只要傳入一個Adapter,Adapter將會負責提供多個View。所以ViewFlipper 能夠指定與 AdapterViewFlipper 相同的 XML 屬性。c#
ViewFlipper組件的一些經常使用方法以下:微信
setInAnimation:設置View進入屏幕時使用的動畫。架構
setOutAnimation:設置View退出屏幕時使用的動畫。app
showNext:調用該方法來顯示ViewFlipper裏的下一個View。ide
showPrevious:調用該方法來顯示ViewFlipper的上一個View。佈局
setFilpInterval:設置View之間切換的時間間隔。學習
setFlipping:使用上面設置的時間間隔來開始切換全部的View,切換會循環進行。優化
stopFlipping:中止View切換。
接下來經過一個簡單的示例程序來學習ViewFlipper的使用。
繼續使用WidgetSample工程的advancedviewsample模塊,在app/main/res/layout/目錄下建立viewflipper_layout.xml文件,在其中填充以下代碼片斷:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ViewFlipper android:id="@+id/details" android:layout_width="match_parent" android:layout_height="match_parent" android:flipInterval="1000"> <ImageView android:src="@drawable/image_01" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY"> </ImageView> <ImageView android:src="@drawable/image_02" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY"> </ImageView> <ImageView android:src="@drawable/image_03" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="fitXY"> </ImageView> </ViewFlipper> <Button android:text="<" android:onClick="prev" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerInParent="true" android:onClick="auto" android:text="自動播放"/> <Button android:text=">" android:onClick="next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"/> </RelativeLayout>
上面的界面佈局文件中定義了一個ViewFlipper,並在該ViewFlipper中定義了三個 ImageView,這意味着該ViewFlipper包含了三個子組件。
接下來在Activity代碼中便可調用 ViewFlipper 的 showPrevious()、showNext()等方法控制 ViewFlipper 顯示上一個、下一個子組件。爲了控制組件切換時的動畫效果,還須要調用ViewFlipper的setlnAnimation()、setOutAnimation() 方法設置動畫效果。新建ViewFlipperActivity.java文件,加載上面新建的佈局文件,具體代碼以下:
package com.jinyu.cqkxzsxy.android.advancedviewsample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ViewFlipper; /** * @建立者 鑫鱻 * @描述 Android零基礎入門到精通系列教程,歡迎關注微信公衆號ShareExpert */ public class ViewFlipperActivity extends AppCompatActivity { private ViewFlipper mViewFlipper = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.viewflipper_layout); mViewFlipper = (ViewFlipper) findViewById(R.id.details); } // 上一個 public void prev(View source) { mViewFlipper.setInAnimation(this, R.anim.slide_in_right); mViewFlipper.setOutAnimation(this, R.anim.slide_out_left); // 顯示上一個組件 mViewFlipper.showPrevious(); // 中止自動播放 mViewFlipper.stopFlipping(); } // 下一個 public void next(View source) { mViewFlipper.setInAnimation(this, android.R.anim.slide_in_left); mViewFlipper.setOutAnimation(this, android.R.anim.slide_out_right); // 顯示下一個組件 mViewFlipper.showNext(); // 中止自動播放 mViewFlipper.stopFlipping(); } // 自動播放 public void auto(View source) { mViewFlipper.setInAnimation(this, android.R.anim.slide_in_left); mViewFlipper.setOutAnimation(this, android.R.anim.slide_out_right); // 開始自動播放 mViewFlipper.startFlipping(); } }
上面程序中的代碼就是控制ViewFlipper切換組件的動畫效果,以及控制ViewFlipper切換組件的關鍵代碼。
運行程序,點擊「<」和「>」兩個按鈕時能夠看到下圖所示圖片切換效果。
當點擊自動播放按鈕後,ViewFlipper則開始自動輪播圖片。
在該例子中使用了靜態導入ViewFlipper組件頁面,實際開發中也能夠經過addView動態添加。若是加入手勢左右滑動操做,就打造出了應用程序啓動的時候常常用到的引導頁面;若是同該例子同樣使用自動播放,那麼就很是容易實現如圖片輪播等行爲。
關於ViewAnimator系列組件學習完畢,下期一塊兒來學習Picker系列組件。
今天就先到這裏,若是有問題歡迎留言一塊兒探討,也歡迎加入Android零基礎入門技術討論微信羣,共同成長!
此文章版權爲微信公衆號分享達人秀(ShareExpert)——鑫鱻全部,若需轉載請聯繫做者受權,特此聲明!
往期總結分享:
Android零基礎入門第1節:Android的前世此生
Android零基礎入門第2節:Android 系統架構和應用組件那些事
Android零基礎入門第3節:帶你一塊兒來聊一聊Android開發環境
Android零基礎入門第4節:正確安裝和配置JDK, 高富帥養成第一招
Android零基礎入門第5節:善用ADT Bundle, 輕鬆邂逅女神
Android零基礎入門第6節:配置優化SDK Manager, 正式約會女神
Android零基礎入門第7節:搞定Android模擬器,開啓甜蜜之旅
Android零基礎入門第8節:HelloWorld,個人第一趟旅程出發點
Android零基礎入門第9節:Android應用實戰,不懂代碼也能夠開發
Android零基礎入門第10節:開發IDE大升級,終於迎來了Android Studio
Android零基礎入門第11節:簡單幾步帶你飛,運行Android Studio工程
Android零基礎入門第12節:熟悉Android Studio界面,開始裝逼賣萌
Android零基礎入門第13節:Android Studio配置優化,打造開發利器
Android零基礎入門第14節:使用高速Genymotion,跨入火箭時代
Android零基礎入門第15節:掌握Android Studio項目結構,揚帆起航
Android零基礎入門第16節:Android用戶界面開發概述
Android零基礎入門第17節:文本框TextView
Android零基礎入門第18節:輸入框EditText
Android零基礎入門第19節:按鈕Button
Android零基礎入門第20節:複選框CheckBox和單選按鈕RadioButton
Android零基礎入門第21節:開關組件ToggleButton和Switch
Android零基礎入門第22節:圖像視圖ImageView
Android零基礎入門第23節:圖像按鈕ImageButton和縮放按鈕ZoomButton
Android零基礎入門第24節:自定義View簡單使用,打造屬於你的控件
Android零基礎入門第25節:簡單且最經常使用的LinearLayout線性佈局
Android零基礎入門第26節:兩種對齊方式,layout_gravity和gravity大不一樣
Android零基礎入門第27節:正確使用padding和margin
Android零基礎入門第28節:輕鬆掌握RelativeLayout相對佈局
Android零基礎入門第29節:善用TableLayout表格佈局
Android零基礎入門第30節:兩分鐘掌握FrameLayout幀佈局
Android零基礎入門第31節:少用的AbsoluteLayout絕對佈局
Android零基礎入門第32節:新推出的GridLayout網格佈局
Android零基礎入門第33節:Android事件處理概述
Android零基礎入門第34節:Android中基於監聽的事件處理
Android零基礎入門第35節:Android中基於回調的事件處理
Android零基礎入門第36節:Android系統事件的處理
Android零基礎入門第37節:初識ListView
Android零基礎入門第38節:初識Adapter
Android零基礎入門第39節:ListActivity和自定義列表項
Android零基礎入門第40節:自定義ArrayAdapter
Android零基礎入門第41節:使用SimpleAdapter
Android零基礎入門第42節:自定義BaseAdapter
Android零基礎入門第43節:ListView優化和列表首尾使用
Android零基礎入門第44節:ListView數據動態更新
Android零基礎入門第45節:網格視圖GridView
Android零基礎入門第46節:列表選項框Spinner
Android零基礎入門第47節:自動完成文本框AutoCompleteTextView
Android零基礎入門第48節:可摺疊列表ExpandableListView
Android零基礎入門第49節:AdapterViewFlipper圖片輪播
Android零基礎入門第50節:StackView卡片堆疊
Android零基礎入門第51節:進度條ProgressBar
Android零基礎入門第52節:自定義ProgressBar炫酷進度條
Android零基礎入門第53節:拖動條SeekBar和星級評分條RatingBar
Android零基礎入門第54節:視圖切換組件ViewSwitcher
Android零基礎入門第55節:ImageSwitcher和TextSwitcher