day14:ViewPager+Fragment的用法

ViewPager和Fragment結(jié)合看到很多地方在講解遍略,我今天也寫了一個(gè)小例子幅恋,和大家分享一下锐锣,也幫助我深度理解他們的用法未蝌。
這個(gè)小案例要用到Fragment所以適配器要繼承FragmentPagerAdapter。它里面要是實(shí)現(xiàn)二個(gè)方法:

  • public Fragment getItem(position){ }
    這個(gè)是根據(jù)position返回一個(gè)Fragment
  • public int Count(){ }
    這個(gè)是返回一共有幾個(gè)Fragment
先看一下效果圖:
1526393863618.gif
Tep1:建一個(gè)viewpager.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="7">
    </android.support.v4.view.ViewPager>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        app:menu="@layout/item" />

</LinearLayout>

這里我在最底部加了一個(gè)導(dǎo)航欄易茬,不要忘了加載庫文件俺晏!!

Tep2:接著建一個(gè)item.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <item
        android:id="@+id/one"
        android:title="第一"/>
    <item
        android:id="@+id/two"
        android:title="第二"/>
    <item
        android:id="@+id/three"
        android:title="第三"/>

</menu>

Tep3:建立一個(gè)content.xml(content2.xml抽莱,content3.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/content"
        android:textSize="50sp"
        android:gravity="center"
        android:background="@color/colorAccent"
        android:text="第一個(gè)fragment"/>

</LinearLayout>

其他的兩個(gè)依葫蘆畫瓢就行了范抓,相信大家都會的。

Tap4:建立三個(gè)Fragment類(這是三個(gè)界面)

package com.example.jiangyou.pic_watch;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Fragment1 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = LayoutInflater.from(getContext()).inflate(R.layout.content,container,false);
        return view;
    }
}

其他的兩個(gè)也是按照這個(gè)畫一個(gè)食铐。

Tap5:下面就要寫適配器匕垫,新建一個(gè)FragmentAdapter
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.List;

public class FragmentAdapter extends FragmentPagerAdapter{
    //private List<Fragment> mFragment;
    private Fragment1 fragment1;
    private Fragment2 fragment2;
    private Fragment3 fragment3;
    public FragmentAdapter(FragmentManager fm) {//這是一個(gè)內(nèi)部類
        super(fm);
        fragment1 = new Fragment1();
        fragment2 = new Fragment2();
        fragment3 = new Fragment3();
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment= null;
        switch (position){
            case 0:
                fragment = fragment1;
                break;
            case 1:
                fragment = fragment2;
                break;
            case 2:
                fragment = fragment3;
                break;
        }
        return fragment;
    }

    @Override
    public int getCount() {
        return 3;
    }
}
Tab6:在主activity寫邏輯
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;

import java.util.ArrayList;
import java.util.List;

public class MainViewPager extends AppCompatActivity {
    private ViewPager vp;
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager);
        FragmentAdapter fragmentAdapter= new FragmentAdapter(getSupportFragmentManager());//實(shí)例化adapter,得到fragment
        vp=(ViewPager)findViewById(R.id.viewpager);
        vp.setAdapter(fragmentAdapter);//建立連接
        final BottomNavigationView bottom = (BottomNavigationView)findViewById(R.id.bottom);
        bottom.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {//底部導(dǎo)航欄點(diǎn)擊事件
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.one:
                        vp.setCurrentItem(0);
                        break;
                    case R.id.two:
                        vp.setCurrentItem(1);
                        break;
                    case R.id.three:
                        vp.setCurrentItem(2);
                        break;
                }
                return true;
            }
        });
//viewpager監(jiān)聽事件虐呻,當(dāng)viewpager滑動(dòng)時(shí)得到對應(yīng)的fragment碎片
        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                bottom.getMenu().getItem(position).setChecked(true);

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末象泵,一起剝皮案震驚了整個(gè)濱河市寞秃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌偶惠,老刑警劉巖春寿,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異忽孽,居然都是意外死亡绑改,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門兄一,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厘线,“玉大人,你說我怎么就攤上這事出革〗缘模” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵蹋盆,是天一觀的道長费薄。 經(jīng)常有香客問我,道長栖雾,這世上最難降的妖魔是什么楞抡? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮析藕,結(jié)果婚禮上召廷,老公的妹妹穿的比我還像新娘。我一直安慰自己账胧,他們只是感情好竞慢,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著治泥,像睡著了一般筹煮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上居夹,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天败潦,我揣著相機(jī)與錄音,去河邊找鬼准脂。 笑死劫扒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狸膏。 我是一名探鬼主播沟饥,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了贤旷?” 一聲冷哼從身側(cè)響起广料,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遮晚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拦止,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡县遣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汹族。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萧求。...
    茶點(diǎn)故事閱讀 40,742評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖顶瞒,靈堂內(nèi)的尸體忽然破棺而出夸政,到底是詐尸還是另有隱情,我是刑警寧澤榴徐,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布守问,位于F島的核電站,受9級特大地震影響坑资,放射性物質(zhì)發(fā)生泄漏耗帕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一袱贮、第九天 我趴在偏房一處隱蔽的房頂上張望仿便。 院中可真熱鬧,春花似錦攒巍、人聲如沸嗽仪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闻坚。三九已至,卻和暖如春兢孝,著一層夾襖步出監(jiān)牢的瞬間鲤氢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工西潘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卷玉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓喷市,卻偏偏與公主長得像相种,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評論 2 361

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