ToolBar与Palette
显示ToolBar控件先要在style中把ActionBar去掉
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<androidx.appcompat.widget.Toolbar android:id="@+id/main_id_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:minHeight="?attr/actionBarSize"/>
Toolbar toolbar = findViewById(R.id.main_id_toolbar); setSupportActionBar(toolbar);
自定义Toolbar(结合Menu)
menu目录下创建xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/menu_search" android:orderInCategory="80" android:title="搜索" app:actionViewClass="android.widget.SearchView" app:showAsAction="ifRoom" /> <item android:id="@+id/menu_share" android:orderInCategory="90" android:title="分享" app:showAsAction="ifRoom" /> <item android:id="@+id/menu_settings" android:orderInCategory="100" android:title="设置" app:showAsAction="ifRoom" /> </menu>
DrawerLayout 抽屉布局
DrawerLayout drawerLayout = findViewById(R.id.main_id_draw_layout); Toolbar toolbar = findViewById(R.id.main_id_toolbar); ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle( this, drawerLayout, toolbar, "打开抽屉", "关闭抽屉"); drawerLayout.setDrawerListener(actionBarDrawerToggle);
Palette的应用
Andorid 5.x用Palette提取颜色从而让主题能够动态适应当前界面的色调,做到整个app颜色的基调和谐统一。
implementation 'com.android.support:palette-v7:23.0.1'
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher_background); Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { // 获取充满活力的色调 Palette.Swatch vibrantSwatch = palette.getVibrantSwatch(); getSupportActionBar().setBackgroundDrawable(new ColorDrawable(vibrantSwatch.getRgb())); } });
Android 6.0新特性 15年大会上
Android 6.0 Marshmallow 棉花糖 软件体验和运行性能大幅度的优化,设备续航时间提升30%.
变化点:
应用权限管理;Android pay;指纹支持;Doze电量管理;App Links;Now on Tap
应用权限管理:
PermissionsDspatcher框架的使用(基于apt技术)详情见github
Android 7.0新特性
2016年8月 推出了Android 7.0 Nougat(牛轧糖)
变化点:
多窗口模式,Data Saver(流量保护);改进的Java 8语言的支持;自定义壁纸;
快速回复;Daydream VR;后台省电;快速设置;Unicode9支持和全新的emoji表情符号;
Google Assistant
多窗口模式
禁用多窗口:android:resizeableActivity="false"
Android 8.0新特性
2017年 IO大会上 取名Andorid Oreo(奥利奥)
变化点:
通知中心
画中画(PIP)支持
自适应启动器图标
自动填充框架
自动调整TextView的大小
WebView API
多显示器支持
后台执行限制
Android 9.0新特性 取名Pistachio Ice Cream(开心果冰淇淋)
2018年 IO大会上
变化点:
权限支持全面屏
动画
机器学习
HDR VP9视频 HEIF图片压缩和Media API
利用wifi RTT进行室内定位 IEEE 802.11mc wifi协议 也成为wifi round-trip-time rtt的平台支持
隐私权变更
对使用非sdk接口的限制
Android 10.0 Pie
2019年3月 对外发布beta1 与蓝本
变化点:
5G支持
可折叠设备
暗黑主题
手势导航
智能回复
用户隐私
ART优化
机器学习更新
Material Design其它控件:
Snackbar 底部吐司
TextInputLayout 嵌套一个Edittext
FloatingActionBar
TabLayout
AppBarLayout 一般将toolbar和tablayout包裹起来。
NavigationView实现抽屉菜单界面
CoordinatorLayout实现Toolbar的隐藏和折叠
CoordinatorLayout结合CollspaingToolbarLayout实现Toolbar的折叠效果
behavior的自定义学习