項(xiàng)目架構(gòu)部署及 TabLayout

? ? ? ? 架構(gòu)部署,類似于MVP,MVC等模式,將功能分配部署。很多模式寫的人多了,會(huì)有人總結(jié)成一個(gè)模式,借口。開始一個(gè)Android項(xiàng)目,會(huì)涉及到以下一些方面:

Package:adapter、application、entity、fragment、service

ui等

Application:做統(tǒng)一的初始化

Activity:實(shí)現(xiàn)activity的基類,繼承自基類時(shí)實(shí)現(xiàn)一些標(biāo)準(zhǔn)的方法

Drawable:

Values:多語言適配

UtilTools:多個(gè)activity同時(shí)需要調(diào)用的一些方法,將這些方法提取出來封裝;第三方SDK

第三方SDK兩邊都要調(diào)用

比如可以在BaseActivity中的actionbar中有一個(gè)返回鍵,并讓繼承的Activity均有次返回鍵


//顯示返回鍵

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

}

//點(diǎn)擊出現(xiàn)返回功能方法

@Override

public booleanonOptionsItemSelected(MenuItem item) {

switch(item.getItemId()) {

caseandroid.R.id.home:

finish();

break;

}

return super.onOptionsItemSelected(item);

}



項(xiàng)目架構(gòu)及目錄

首頁框架

TabLayout布局及邏輯實(shí)現(xiàn)

首先在build.gradle文件的dependence {}中添加

//Tablayout

compile 'com.android.support:design:23.2.0'

注意:如果targets Sdk是24,則是compile 'com.android.support:design:24.2.0'

在XML添加

<android.support.design.widget.Tablayout

.../>

<android.support.v4.view.ViewPager

.../>

然后在Activity添加

private List<String> mTitle;

private List<Fragment> mFragment;

//初始化數(shù)據(jù)

initData() {

mTitle = new ArrayList<>();

mTitle.add("標(biāo)題1");

mTitle.add("標(biāo)題2");

mTitle.add("標(biāo)題3");

mTitle.add("標(biāo)題4");


mFragment = new ArrayList<>();

mFragment.add(new aFragment());//每個(gè)Fragement對(duì)應(yīng)一個(gè)fragment的xml頁面

mFragment.add(new bFragment());

mFragment.add(new cFragment());

mFragment.add(new dFragment());

}

//初始化視圖

initView() {

//ViewPager預(yù)加載

mViewPager.setOffscreenPageLimit(mFragment.size());

//設(shè)置適配器,因?yàn)閂iewPager繼承自ViewPager

mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

//選中item

Fragment getItem(int position) {

return mFragment.get(position);

}

//返回item數(shù)量

int getCount() {

return mFragment.size();

}


//設(shè)置標(biāo)題

getPageTitle(int position) {

return mTitle.get(position)'

}

});

//綁定ViewPager綁定到TabLayout

mTabLayout.setupWithViewPager(mViewPager);

}

滑動(dòng)監(jiān)聽

//ViewPager滑動(dòng)監(jiān)聽

mViewPager.addOnPageChangeListener(newViewPager.OnPageChangeListener() {

@Override

public voidonPageScrolled(intposition, floatpositionOffset, intpositionOffsetPixels) {

}

@Override

public voidonPageSelected(int position) {//主要是該方法需要實(shí)現(xiàn),對(duì)滑動(dòng)的具體頁面(位置)進(jìn)行判斷,以讓不同頁面有所區(qū)別

SALog.d(position +"");

if(position ==0) {

mFAButton.setVisibility(View.GONE);

}else{

mFAButton.setVisibility(View.VISIBLE);

}

}

@Override

public voidonPageScrollStateChanged(intstate) {

}

});



這樣一個(gè)TabLayout就完成了.

另外懸浮按鈕FloatingActionButton

在xml最后添加

<android.support.design.widget.FloatingActionButton

.../>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評(píng)論 25 708
  • afinalAfinal是一個(gè)android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,893評(píng)論 2 45
  • 又是一個(gè)普通的午后,兩點(diǎn)的陽光淡淡的透過窗子灑在白色的地板上。我坐在地上整理著我的很多本日記,整理著我的思念,這些...
    六7閱讀 757評(píng)論 1 2
  • 我們知道,當(dāng)我們使用js和jQuery寫網(wǎng)頁的時(shí)候,我們可以從網(wǎng)上選擇很多的插件,來減輕我們的壓力。使用Vue.j...
    AiDede閱讀 2,306評(píng)論 1 7
  • 西蘭花芝士土豆泥。 雜糧飯。 玉子燒。 奶香蘆筍。 做法: 之西蘭花芝士土豆泥?土豆切切丁和西蘭花一起煮熟之后壓成...
    柃柃森閱讀 801評(píng)論 2 5

友情鏈接更多精彩內(nèi)容