? ? ? ? 架構(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);
}

首頁框架
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
.../>