Android项目一般是有俩种不同类型的主界面:
1、一个主界面activity包含不同的可点击的fragment页面(可以左右滑动也可以只点击,类似微信)
2、主界面中包含侧滑删除的drawablelayout+主页面点击切换的fragment(可以左右滑动也可以只点击,类似QQ)
1和2的区别就是有一个侧滑栏,这个侧滑栏是v4包里的drawableLayout布局,控件全称是android.support.v4.widget.DrawerLayout,布局文件如下图:
在上述布局文件中,LinearLayout是侧滑栏布局的groupView,保证这块view从屏幕侧面滑出来的代码是layout_gravity,为其复制 L、T、R、B四个方向,可以保证侧滑栏可以从我们想要的任意区域滑出来。不过有一个问题是,我们必须将主界面布局view放到侧滑栏view的前边,(是布局文件中的代码位置,具体原因不清,但是如果侧滑栏代码在上方,侧滑可以滑出来但是滑不回去)。
1、如何手动触发显示与隐藏侧滑栏?
DrawLayout.closeDrawer()是隐藏侧滑栏的
DrawLayout.openDrawer()是显示侧滑栏的
在代码中,DrawLayout侧滑栏可以被DrawLayout.DrawListener监听到,也就是说,我们可以在侧滑栏的展开与隐藏这个瞬时过程中做一些操作,在监听的回调方法中我们用invalidateOptionsMenu通知activity重绘menu,然后activity就有机会在onPrepareOptionsMenu方法中更新menu元素的显示与隐藏。
上述是俩种不同类型节目的差别设置,现在开始说主界面的点击切换或者是滑动切换布局:
之前我一直是用RadioRroup+fragment(viewpager)来切换界面的发现这样冗余代码特别多,现在大量使用tableLayout+Fragment 代码会精简许多,核心代码如下:
首先在model的gradle中引用 compile'com.android.support:design:25.0.0'
布局文件中定义一个tablayout;
把它放到布局的最下边布局剩余部分留给viewpager,viewPager可以自定义成不滑动的页面
//未选中图标
private int[] mIconUnselectIds= {
R.mipmap.nav_word_nomal,R.mipmap.nav_news_nomal,
R.mipmap.nav_activity_nomal,R.mipmap.nav_video_nomal,R.mipmap.nav_my_nomal};
//选中图标
private int[] mIconSelectIds= {
R.mipmap.nav_word_press,R.mipmap.nav_news_press,
R.mipmap.nav_activity_press,R.mipmap.nav_video_press,R.mipmap.nav_my_press};
//每一个分类名称
privateString[] mTitles=new String[5];
//对应的fragment集合
private ArrayList mFragments=new ArrayList<>();
//每个分类的类对象
private ArrayList mTabEntities=new ArrayList<>();
//定义分类名称
//fragment中添加fragment集合
//tabLayout集合中添加tabEntity对象,传入构造参数,第一个参数是分类名称,第二个参数是选中的图片资源,第三个参数是未选中的图片资源
//这是tabEntity类
//将tabLayout和fragment数据、页面绑定起来,并实现监听
这样的一级界面框架是不能滑动切换的,但是点击切换非常流畅。
网友评论