架构部署,类似于MVP,MVC等模式,将功能分配部署。很多模式写的人多了,会有人总结成一个模式,借口。开始一个Android项目,会涉及到以下一些方面:
Package:adapter、application、entity、fragment、service
ui等
Application:做统一的初始化
Activity:实现activity的基类,继承自基类时实现一些标准的方法
Drawable:
Values:多语言适配
UtilTools:多个activity同时需要调用的一些方法,将这些方法提取出来封装;第三方SDK
第三方SDK两边都要调用
比如可以在BaseActivity中的actionbar中有一个返回键,并让继承的Activity均有次返回键
//显示返回键
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
//点击出现返回功能方法
@Override
public booleanonOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
caseandroid.R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
首页框架
TabLayout布局及逻辑实现
首先在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;
//初始化数据
initData() {
mTitle = new ArrayList<>();
mTitle.add("标题1");
mTitle.add("标题2");
mTitle.add("标题3");
mTitle.add("标题4");
mFragment = new ArrayList<>();
mFragment.add(new aFragment());//每个Fragement对应一个fragment的xml页面
mFragment.add(new bFragment());
mFragment.add(new cFragment());
mFragment.add(new dFragment());
}
//初始化视图
initView() {
//ViewPager预加载
mViewPager.setOffscreenPageLimit(mFragment.size());
//设置适配器,因为ViewPager继承自ViewPager
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
//选中item
Fragment getItem(int position) {
return mFragment.get(position);
}
//返回item数量
int getCount() {
return mFragment.size();
}
//设置标题
getPageTitle(int position) {
return mTitle.get(position)'
}
});
//绑定ViewPager绑定到TabLayout
mTabLayout.setupWithViewPager(mViewPager);
}
滑动监听
//ViewPager滑动监听
mViewPager.addOnPageChangeListener(newViewPager.OnPageChangeListener() {
@Override
public voidonPageScrolled(intposition, floatpositionOffset, intpositionOffsetPixels) {
}
@Override
public voidonPageSelected(int position) {//主要是该方法需要实现,对滑动的具体页面(位置)进行判断,以让不同页面有所区别
SALog.d(position +"");
if(position ==0) {
mFAButton.setVisibility(View.GONE);
}else{
mFAButton.setVisibility(View.VISIBLE);
}
}
@Override
public voidonPageScrollStateChanged(intstate) {
}
});
这样一个TabLayout就完成了.
另外悬浮按钮FloatingActionButton
在xml最后添加
<android.support.design.widget.FloatingActionButton
.../>