Android 界面与导航学习笔记
2019-02-27 本文已影响0人
ChrisChanSysu
布局
- 使用ConstraintLayout构建布局,减少层级,渲染性能提升
- 使用RecyclerView创建列表
- RecyclerView.Adapter<*>
- RecyclerView.LayoutManager
- LinearLayoutManager 效果类似ListView
- GridLayoutManager 效果为网格效果
- StaggerGridLayoutManager 效果类似于美国国旗上的星星排列
- RecyclerView.ViewHolder
- 使用CardView创建布局
- 改善布局性能
- 优化布局层次结构 Lint
- 通过<include/>和<merge/>标签复用布局
- 通过<ViewStub>延迟加载,主要用于出错态和空态视图
- 通过ViewHolder使ListView可以流畅滚动
- 线性布局
- layout_weight可用于“撑满”余下空间
- 相对布局
- 为了提升性能应该用ConstraintLayout
- 自定义视图组件
- 不重写View的onMeasure(),默认是100X100,计算完宽高之后要调用setMeasureDimension(int width, int height);
- 不重写View的onDraw(),默认什么都没有;onDraw()提供一个Canvas,可以进行2D绘图,如果要进行3D的绘图,应该继承SurfaceView,而且要单开线程
- Canvas控制绘制工具
- Paint控制绘制方式
- 通知
- 通过NotificationCompat.Builder创建
- 在android 8.0以上需要注册channel
- 通知可以添加回复按钮,通过RemoteInput
- 应用栏
- 现在应该使用ToolBar来代替ActionBar
- 需要继承AppCompatActivity,在manifest中设置theme为NoActionBar来禁用原生的ActionBar
- 向Activity的布局添加一个ToolBar
- 调用AppCompatActivity的setSupportActionBar将ToolBar传入
- 控制系统界面可见度 实际操作的是decorView
- 调暗系统栏 View.SYSTEM_UI_FLAG_LOW_PROFILE
- 隐藏状态栏
- 4.0以下,manifest的NoActionBar.Fullscreen或者window.setFlags(FLAG_FULLSCREEN)
- 4.0以上,window.decorView设置FLAG_FULLSCREEN并且actionBar要隐藏
- 隐藏导航栏
- 启用全屏模式
- Lean Back
- Immersive
- Sticky immersive
- 响应界面可见度变更
- 实现有效导航
- ViewPager,页面源Adapter有FragmentPagerAdapter、FragmentStatePagerAdapter
- DrawerLayout创建抽屉式导航栏
- 支持滑动刷新 SwipeRefreshLayout
- Snackbar
- snackbar可以attach到任意的View上,但如果attach到CoordinatorLayout,可以被滑动消除,如果有FAB,可以顶起FAB;实际上,在构建snackbar时传入一个非CoordinatorLayout的view的话,内部会搜寻整个视图树来获得一个coordinatorLayout