【筆記】與Android選項(xiàng)卡一周

果然,還是項(xiàng)目驅(qū)動(dòng)的學(xué)習(xí)方式比較有趣呢。

成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)公司已向超過(guò)千家企業(yè)提供了,網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)絡(luò)營(yíng)銷等服務(wù)!設(shè)計(jì)與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗(yàn),合理的價(jià)格為您打造企業(yè)品質(zhì)網(wǎng)站。

這周的學(xué)習(xí)全部圍繞著選項(xiàng)卡,也就是tab。

用到了好多知識(shí)點(diǎn),都不知道從哪里開(kāi)始啦(≧o≦*)。

    選項(xiàng)卡的制作有很多方法。選項(xiàng)菜單可以用普通的TextView,也可以直接上button。我選擇的是TextView,可能更接近網(wǎng)頁(yè)的思路吧。

先列個(gè)清單出來(lái):

  1. selector

  2. Fragment

  3. ViewPager

布局嘛,網(wǎng)上有一堆,就不提了。

1.selector

    選項(xiàng)卡的功能,就是按不同的按鈕就能切換到不同頁(yè)面。作為反饋,按鈕總得有點(diǎn)變化,比如換個(gè)顏色。實(shí)現(xiàn)思路很簡(jiǎn)單,點(diǎn)擊之后換個(gè)圖標(biāo)就好了嘛。嗯~o(* ̄▽ ̄*)o,然而在onClick上折騰半天之后,我打開(kāi)了百度,很快發(fā)現(xiàn)了selector這個(gè)標(biāo)簽。

Σヽ(Д ; )居然還有這種操作!

     selector用起來(lái)很簡(jiǎn)單,寫在drawable目錄下:

for_tab1.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:drawable="@drawable/ic_news_act" android:state_selected="true" />
   <item android:drawable="@drawable/ic_news" />
</selector>

    ic_news和ic_news_act是通過(guò)new->Image Asset導(dǎo)入的圖標(biāo),自動(dòng)生成各種規(guī)格,免去了手動(dòng)處理圖片大小的麻煩。和.9圖應(yīng)該是一樣的效果吧(.9圖?我沒(méi)做,我不懂)。

    接著在主界面的TextView寫上這句話:

    android:drawableTop="@drawable/for_tab1"

    完工!

    改變item標(biāo)簽內(nèi)的屬性名(比如color),就可以改變其他效果。

2.Fragment

    接著就是內(nèi)容匹配。每個(gè)選項(xiàng)卡對(duì)應(yīng)一個(gè)內(nèi)容,一個(gè)內(nèi)容就是一個(gè)Fragment。

    android中一個(gè)頁(yè)面可以看作一個(gè)Activity,而Fragment只是”碎片“,生命周期不會(huì)長(zhǎng)于所存在的Activity。查看配置文件AndroidManifest.xml可以發(fā)現(xiàn),F(xiàn)ragment是沒(méi)有注冊(cè)的。

     最簡(jiǎn)單的Fragment,就是重寫onCreatView:

View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view =  inflater.inflate(R.layout., container, );
    view;

}

這時(shí)冒出了個(gè)inflater!你是誰(shuí)?inflater說(shuō)我只是個(gè)控制器,連接視圖和模型。啊~雖然沒(méi)有明白,但我暫時(shí)放過(guò)你,小心點(diǎn)inflater,我會(huì)盯著你的!

    


3.ViewPager

    鐺~鐺~鐺~

    ViewPager來(lái)了!快讓開(kāi)!

    誒,F(xiàn)ragment好像沒(méi)講完?。繘](méi)辦法呀,F(xiàn)ragment沒(méi)人(activity)權(quán)啊,只能靠主子(activity)接濟(jì)過(guò)活╮(╯3╰)╭。ViewPager就是從Activity派來(lái)的走狗,啊呸,使者!

   1) ViewPager可說(shuō)是這個(gè)選項(xiàng)卡的核心。每個(gè)Fragment是選項(xiàng)卡顯示的內(nèi)容,ViewPager像是內(nèi)容的容器,同時(shí)擔(dān)任調(diào)度的工作。

    布局里的ViewPager看起來(lái)就是個(gè)普通的標(biāo)簽,但是人家上頭有人!

    ViewPager需要一個(gè)FragmentAdapter才能工作。

    這是個(gè)超簡(jiǎn)單的實(shí)現(xiàn):

tabFragmentAdapter FragmentPagerAdapter {
    ArrayList<Fragment>  ;
    =;
    tabFragmentAdapter(FragmentManager fm, ArrayList<Fragment> list){
        (fm);
        .= list;
    }
    Fragment getItem(position) {
        .get(position);
    }

    getCount() {
        ;
    }
}

    入口在主界面的Java類中:

 fa = (getSupportFragmentManager(), );
.setAdapter(fa);

fg是填入了所有Fragment的ArrayList。

getSupperFragmentManager()取到了主界面的FragmentManager。

vp是用id獲取的布局中的ViewPager。

在tab所在的主界面的Java類的onCreate()中運(yùn)行,就綁定好了這些Fragment。

2)Listener人呢?給tab們綁定好事件就該你上場(chǎng)了

tabListener View.OnClickListener {
    = ;

    tabListener(index) {
        .= index;
    }

    onClick(View v) {
        .setCurrentItem();
        clearSelect();
        .get().setSelected();
    }
}

index是區(qū)分tab的編號(hào);

clearSelect是將tab卡片選擇狀態(tài)重置(用setSelected(false));

tabList里裝的是作為tab按鈕的TextView;

綁定事件應(yīng)該會(huì),,,吧?

(i = ; i < .size(); i++) {
    .get(i).setOnClickListener(tabListener(i));
}

似乎很簡(jiǎn)單,但是我不會(huì)告訴你,有一半時(shí)間花在了調(diào)空指針的BUG!

分享標(biāo)題:【筆記】與Android選項(xiàng)卡一周
當(dāng)前URL:http://muchs.cn/article32/ghjssc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、云服務(wù)器、營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站制作、域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)