电商式导航栏,多Fragment切换
本文默认在已经搭建好的框架上进行开发
界面构思示意图
设计思路
在底部的LinearLayout中添加相应的图标,然后设置tag绑定相应的 Fragment数组对应的下标值,再点击切换的时候,根据获取到的tag值,取出数组中对应下标的Fragment,在通过相关方法显示。
封装目标:只需添加相应的按钮对象和相应的视图即可,然后在Activity中显示即可。先创建可切换的Fragment的基类BottomItemFragment(实现一个双击退出功能)
// 定义为抽象类即每个itemfragment的基类
public abstract class BottomItemFragment extends MyFragment implements View.OnKeyListener{
// 当前按下返回按钮的时间
private long mExitTime = 0;
// 双击返回键之间的延迟
private static final int EXIT_TIME = 2000;
@Override
public void onResume(){
super.onResume();
View rootView = getView();
// 防止双击退出失效
if (rootView!=null){
rootView.setFocusableInTouchMode(true);
rootView.requestFocus();
rootView.setOnKeyListener(this);
}
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
if ((System.currentTimeMillis() - mExitTime) > EXIT_TIME) {
Toast.makeText(getContext(), "双击退出", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
} else {
_mActivity.finish();
if (mExitTime != 0) {
mExitTime = 0;
}
}
return true;
}
}
}
- 底部导航栏按钮对象的封装(这边的icon用的是字体图标,不明白的请移步我的博客)
- 字体图标库的使用链接
public final class BottomTabBean {
private final CharSequence ICON;
private final CharSequence TITLE;
public BottomTabBean(CharSequence ICON, CharSequence TITLE){
this.ICON = ICON;
this.TITLE = TITLE;
}
public CharSequence getICON(){
return ICON;
}
public