跳转主界面实现
新建Activity
新建一个Empty Activity一路默认下去生成新的ac的layout。
设计主界面布局
参考猫眼电影tab“电影”界面,以此为蓝本进行简要布局设计如图:
猫眼界面
布局分析
1、界面大体分为头部Tab工具栏、中间内容列表界面、底部导航栏
2、顶部工具栏需要和系统状态栏背景一致即“沉浸式”布局
3、顶部工具栏分为一个Tab切换和搜索功能
4、中间内容列表界面需要支持下拉刷新、上拉加载数据功能
5、底部导航栏切换同顶部工具栏Tab切换伴随切换效果,高亮显示
布局实现
1、沉浸式状态栏实现
1.1首先看一下安卓界面的各部位背景颜色布局
安卓颜色布局
从上图我们可以看到主要是通过colorPrimaryDark控制状态栏颜色,那么我们要实现状态栏颜色与我们自定义的布局文件背景颜色一致的“沉浸式”设计,就需要改变状态栏的颜色。
1.2 具体实现
1.2.1 修改
修改AppTheme的parent为T;同时我们修改colorPrimaryDark在colors.xml中定义的颜色为与我们布局中定义的颜色一致如白色(#FFFFFF),但是这样定义之后顶部状态栏系统的显示的时间和电池图标就看不到了,因为这些默认为白色,那么我们就需要实现设置状态栏字体和图标显示的颜色。
1.2.2 设置状态栏颜色实现
设置状态栏颜色安卓5.0以上版本支持,那么设置状态栏字体和图标安卓6.0以上版本才支持,我们现在大部分的手机都在6.0以上了,在安卓模拟器上看相应的效果的话,也需要下载对应支持的版本才可以。
具体代码如下:
private void setStatusBar(boolean isSetColor,int colorId){ if >= Build.VERSION_CODES.LOLLIPOP){ 才以上可设置状态栏背景色 //获取界面顶级视图包括状态标题栏 View decorView = ac().getDecorView(); /** * View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN: * Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住 * View.SYSTEM_UI_FLAG_LAYOUT_STABLE: 保持布局稳定,不在全屏时占据状态栏控件 */ decorView.setSystemUiVisibility | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); if (isSetColor){ //根据传参设置状态栏颜色 ac().setStatusBarColor().getColor(colorId)); } else { //设置状态栏透明 ac().setStatusBarColor); } } else if >= Build.VERSION_CODES.KITKAT){ 之后可以设置状态栏透明 //状态栏透明 ac().addFlag); } if >= Build.VERSION_CODES.M){ 以上才可以修改状态栏字体和图标 /** * View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR: * 把状态栏标记为浅色,然后状态栏的字体颜色自动转换为深色 */ ac().getDecorView().setSystemUiVisibility | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } }代码中有详细的注释可以看到如何实现的,另外这代码是写在单独的Activity类中的私有方法,之后添加新的Activity或者Fragment的时候也会用到,所以需要抽出为公共方法使用以提高复用性。
另外以上代码针对小米手机或者魅族品牌的手机的时候估计不起作用,之后需要添加对相关手机品牌的适配,这里我们先流水开发。
1.2.3 代码调用
在activity的onCreate方法中调用上述代码如下:
protected void onCreate(Bundle savedInstanceState) { (savedInstanceState); //设置状态栏 setStatusBar(true,R.color.white); setContentView); mUserName = findViewById); mUserPwd = findViewById); mLoginBtn = findViewById); mLoginB(new View.OnClickListener() { @Override public void onClick(View view) { //跳转main界面 Intent intent = new Inten); startActivity(intent); } }); }运行效果如下(安卓6.0):