APP啟動引導(dǎo)頁的制作,用ViewPager實現(xiàn)翻頁動畫

Android網(wǎng)絡(luò)與數(shù)據(jù)存儲

第一章學(xué)習(xí)


一個啟動引導(dǎo)頁的制作####

概要:

這次制作App的引導(dǎo)頁,主要用到2個知識“SharedPreferences 和 ViewPager”

Genymotion的Android模擬器瞻想,版本5.1.0以下是默認(rèn)root的枢纠,可以使用RootExplorer4軟件操作系統(tǒng)目錄晌梨,其它包括SDK內(nèi)的官方模擬器……洗洗睡吧……太煩了歹苦,還不如下個Genymotion监右,血的教訓(xùn)


1.SharedPreferences#####

SharedPreferences是一種Android提供的,簡易的用于在手機(jī)上永久化保存數(shù)據(jù)的類潦牛,這個輕量級的類在保存數(shù)據(jù)時眶掌,使用常見的“Key、Value”鍵值對進(jìn)行保存巴碗,并生成對應(yīng)的xml文件朴爬。

為了使用SharedPreferences,需要以下幾步來實現(xiàn)

第一步:得到 SharedPreferences 對象橡淆,Android 中主要提供了三種方法來得到此對象召噩,如下代碼所示

//1. Context 類中的 getSharedPreferences()方法
public abstract SharedPreferences getSharedPreferences
(String name,int mode);

//2. Activity 類中的 getPreferences()方法
    public SharedPreferences getPreferences(int mode) {
        return getSharedPreferences(getLocalClassName(), mode);
    }

//3. PreferenceManager 類中的 getDefaultSharedPreferences()方法
    public static SharedPreferences getDefaultSharedPreferences(Context context) {
        return context.getSharedPreferences(
getDefaultSharedPreferencesName(context)
,getDefaultSharedPreferencesMode());
    }

歸根到底,3個方法都是調(diào)用的Context 類中的 getSharedPreferences()方法逸爵,此方法傳入的兩個參數(shù):

  • 第一個參數(shù)用于指定 SharedPreferences 文件的名稱具滴,如果 指 定 的 文 件 不 存 在 則 會 創(chuàng) 建 一 個 ,SharedPreferences 文 件 都 是 存 放 在/data/data/"package name"/shared_prefs/目錄下的痊银。
  • 第二個參數(shù)用于指定操作模式抵蚊,就用MODE_PRIVATE吧施绎,其它方法都過期了(哈哈溯革,僅供參考)

第二步:得到 SharedPreferences.Editor 對象,進(jìn)行寫入操作谷醉。

SharedPreferences.Editor editor = sharedPreferences.edit();
//通過SharedPreferences的實例取得Editor
        editor.putBoolean("isRead", true);
        //放入數(shù)據(jù)致稀,提供各類put方法對應(yīng)不同類型的數(shù)據(jù),按鍵值對進(jìn)行輸入
        editor.commit();
        //調(diào)用調(diào)用 commit()方法將添加的數(shù)據(jù)立即提交俱尼,不過AS推薦使用apply()抖单,區(qū)別請看下方網(wǎng)址

http://blog.csdn.net/s04103037/article/details/40372659

第三步:從SharedPreferences對象進(jìn)行讀取操作。
使用第一步的方法后遇八,可以直接使用各種get方法取得相應(yīng)類型的數(shù)值矛绘。

SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name", "");
int age = pref.getInt("age", 0);
boolean married = pref.getBoolean("married", false);

get方法中第一個參數(shù)是鍵名,第二個是當(dāng)無此鍵值對時所返回到默認(rèn)值刃永。
這樣就從SharedPreferences所保存的文件中取得了數(shù)據(jù)货矮,實現(xiàn)了簡單數(shù)據(jù)的永久化。


2.ViewPager#####

先畫個圖斯够,直觀理解下結(jié)構(gòu)順序



本來想畫圖的……表達(dá)不清囚玫,算了……

那貼個代碼喧锦,對照著上面這圖看看

activity_start.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary">

</android.support.v4.view.ViewPager>

StartActivity.java

public class StartActivity extends FragmentActivity {
    public static final int PAGE_NUM = 2;
    private FragmentPagerAdapter mAdapter;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, "onCreate: ");

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        //①通過布局實例化ViewPager
        mViewPager.setPageTransformer(true, new ZoomOutPageTransformer());
        //②添加動畫效果
        mAdapter = new StartPagerAdapter(getSupportFragmentManager());
        //③通過子類實例化FragmentPagerAdapter
        mViewPager.setAdapter(mAdapter);
        //④綁定Adapter
    }
}

ZoomOutPageTransformer是自定義的動畫類块攒,這部分也是非常自由的表現(xiàn)方式汁讼,不寫例子了岗憋,省略采够。

StartPagerAdapter.java

public class StartPagerAdapter extends FragmentPagerAdapter {

    String TAG = getClass().getSimpleName();

    public StartPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return StartActivity.PAGE_NUM;
    }

    @Override
    public Fragment getItem(int position) {
        Log.i(TAG, "getItem: " + position);
        if (position == 0) {
            return new PageOneFragment();
        } else {
            return new PageTwoFragment();
        }
    }
}

其中Fragment怎么做大家都知道地啰,省略儿咱,我制作了兩個拇泣,名叫PageOneFragment和PageTwoFragment奖磁。自定義一個繼承自FragmentPagerAdapter的Adaper類用于管理Fragment涌穆,另一個FragmentStatePagerAdapter也是同樣用于Fragment怔昨,但跟前者效果不同,區(qū)別如下:

  • FragmentPageAdapter:和PagerAdapter一樣宿稀,只會緩存當(dāng)前的Fragment以及左邊一個趁舀,右邊 一個,即總共會緩存3個Fragment而已祝沸,假如有1矮烹,2,3罩锐,4四個頁面:
    處于1頁面:緩存1奉狈,2
    處于2頁面:緩存1,2涩惑,3
    處于3頁面:銷毀1頁面仁期,緩存2,3竭恬,4
    處于4頁面:銷毀2頁面跛蛋,緩存3,4
    更多頁面的情況痊硕,依次類推~

  • FragmentStatePagerAdapter:當(dāng)Fragment對用戶不 見得時赊级,整個Fragment會被銷毀, 只會保存Fragment的狀態(tài)岔绸!而在頁面需要重新顯示的時候理逊,會生成新的頁面!

好盒揉,新建了一個自定義類晋被,必須重寫2個重要的方法:

  1. getCount():獲得viewpager中有多少個view,我這寫了2個
  2. getItem(int position):根據(jù)position來決定返回哪個Fragment刚盈。此處position會依次出現(xiàn)0,1,2,3等整型數(shù)字羡洛。

基本上就這樣~看看效果


-完-

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扁掸,隨后出現(xiàn)的幾起案子翘县,更是在濱河造成了極大的恐慌最域,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锈麸,死亡現(xiàn)場離奇詭異镀脂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)忘伞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門薄翅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氓奈,你說我怎么就攤上這事翘魄。” “怎么了舀奶?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵暑竟,是天一觀的道長。 經(jīng)常有香客問我育勺,道長但荤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任涧至,我火速辦了婚禮腹躁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘南蓬。我一直安慰自己纺非,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布赘方。 她就那樣靜靜地躺著烧颖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蒜焊。 梳的紋絲不亂的頭發(fā)上倒信,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天科贬,我揣著相機(jī)與錄音泳梆,去河邊找鬼。 笑死榜掌,一個胖子當(dāng)著我的面吹牛优妙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播憎账,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼套硼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了胞皱?” 一聲冷哼從身側(cè)響起邪意,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤九妈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雾鬼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萌朱,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年策菜,在試婚紗的時候發(fā)現(xiàn)自己被綠了晶疼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡又憨,死狀恐怖翠霍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蠢莺,我是刑警寧澤寒匙,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站躏将,受9級特大地震影響蒋情,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耸携,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一棵癣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夺衍,春花似錦狈谊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至矛紫,卻和暖如春赎瞎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颊咬。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工务甥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喳篇。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓敞临,卻偏偏與公主長得像,于是被迫代替她去往敵國和親麸澜。 傳聞我的和親對象是個殘疾皇子挺尿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評論 2 361

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