Android零基礎入門第56節:翻轉視圖ViewFlipper打造引導頁和輪播圖

原文: Android零基礎入門第56節:翻轉視圖ViewFlipper打造引導頁和輪播圖

   前面兩期學習了 ViewAnimator及其子類ViewSwitcher的使用,以及ViewSwitcher的子類ImageSwitcher和TextSwitcher的使用,你都掌握了嗎?本期咱們一塊兒來學習ViewAnimator另外一個子類 ViewFlipper組件的使用。html

 

 

1、ViewFlipper概述

 

    ViewFlipper組件繼承了 ViewAnimator,它可調用addView(View v)添加多個組件,一旦向 ViewFlipper中添加了多個組件以後,ViewFlipper就可以使用動畫控制多個組件之間的切換效果。java

    ViewFlipper與前面介紹的AdapterViewFlipper有較大的類似性,它們能夠控制組件切換的動畫效果。它們的區別是:ViewFlipper須要開發者經過addView(View v)添加多個View,而 AdapterViewFlipper則只要傳入一個Adapter,Adapter將會負責提供多個View。所以ViewFlipper 能夠指定與 AdapterViewFlipper 相同的 XML 屬性。android

    ViewFlipper組件的一些經常使用方法以下:c#

  • setInAnimation:設置View進入屏幕時使用的動畫。微信

  • setOutAnimation:設置View退出屏幕時使用的動畫。架構

  • showNext:調用該方法來顯示ViewFlipper裏的下一個View。app

  • showPrevious:調用該方法來顯示ViewFlipper的上一個View。ide

  • setFilpInterval:設置View之間切換的時間間隔。佈局

  • setFlipping:使用上面設置的時間間隔來開始切換全部的View,切換會循環進行。學習

  • stopFlipping:中止View切換。

 

 

2、ViewFlipper示例

 

    接下來經過一個簡單的示例程序來學習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="&lt;"
        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="&gt;"
        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

相關文章
相關標籤/搜索