Android开发琐碎

背景

这两年主要玩Android系统与网络,对于应用层的开发有些陌生。然而现在终究是要靠应用技术吃饭,因此,借着重新学习Jetpack,做自己项目的机会,将Android应用层开发技术学习的过程记录下来, 后续再归纳整理成可读性更高的blog。

主要方针是,首要先学会如何使用, 初步理解原理,阶段性的整理成blog。

积累

  • AppCompatActivity

使用ActionBar, 包括action items, navigation 节点, 更多的ToolBar设置的api
内置 Dark 和 Light 主题
集成DrawerLayout

继随自AppCompatActivity的Activity必须设置Theme.AppCompat 下的主题。

  • ActionBar, Toolbar

Toolbar 是ActionBar的类属, ActionBar是主要的具体实现,用来显示标题,Application级别的一致性的导航,和交互的条目。

Toolbar 包含的元素,导航按钮,品牌logo, 标题与副标题,一个或多个自定义view, 行为菜单

ActionBar 是针对整个应用的? 若将ActionBar 当作Activity专有的,需要设计NoActionBar主题。
setLogo 用来替换默认的主页导航图标

  • Window
    抽象类,提供标准的UI策略, 如背景,标题区域,默认的按键事件处理。只有一个实现类 PhoneWinodw。

作为最顶级的View视图,添加到WinodwManager中。

  • CoordinateLayout, AppBarLayout, CollapsingToolbarLayout, NestedScrollView,

CooridinatorLayout, 加强版的FrameLayout, 用于两个场景:
1. 作为顶层级的Application装饰或chrome布局
2. 作为专有的与一个或多个子view交互的容器。
交互的方式由Behavior定义
每个子view有一个anchor, anchor所通信的id是Coordinatorlayout中的任一子view, 但不能是自己或者自己的子view, 这可以放置浮动的view相对于其他任意的内容。
dodge InsetEdge 可以在重叠的时候适当移动而避免重叠。

AppBarLayout
是一个垂直的LineageLayout, 实现了matirial design app bar 概念的特性,即滚动手势。
子view通过setScrollFlags(int)和xml的属性app:layout_scrollFlags来提供滑动的特性。

CollapsingToolbarlayout
用来包装 Toolbar, 实现折叠效果。被设计成直接用作AppBarLayout的子view

NestedScrollView
默认支持嵌套手势的ScrollView

CoordinatorLayout这一套是沉浸式布局的实现, 提供了固定的几种效果。我前期倒是用不上。 后绪再研究吧。

  • AppBarConfiguration, NavigationUI, NavUtils

  • ViewBinding

android{
    // android 4.0.-
    viewBinding {
        enabled = true
    }
    // android 4.0.+
    buildFeatures{
        viewBinding = true
    }
}
[viewbinding inclue](https://juejin.cn/post/6844904065655111693)
  • T extend Object, ? super Object

extend 只能读取子类, super 只能写子类。 根本思想是只能向上转型。

  • widget, launcher, Activity的关系

manifest文件由PM描述,然后在aws中注册,通过launcher是跳转到入口Activity, 但是通过widget, notification, 可以跳转到app中任何一个Activity。
aws是如何找到对应的Activity呢?直接按路径加载, 这样启动的Activity会不会开启进程, 走不走zygote

  • 依赖与关联,聚合与组合

依赖与关联,是从代码角度,根据变量生命周期 划分

聚合与组合,从业务角度,根据现实从属关系 划分, 从代码角度,封装性不同,

依赖、关联、聚合、组合, 耦合度依次增加, 代码表现形式上都是关联的表现形式,作为局部变量或成员变量

  • classpath, apply 与 dependencies
    classpath 用来加载插件, apply 使用插件
    denpendencies 用来加载库

  • enum的使用

enum最好不要使用其构造函数,可以使用一个Builder或者Impl来实现业务,这样在使用enum的时候,跟踪代码就比较方便。空间的增加可以忽略。
不推荐使用枚举的源头是《阿里巴巴java开发手册》,强制,枚举可用于参数,不可以用于返回值,在于版本升级,返回值会产生序例化错误。
我还是认同,这是反序例化库的问题,并不是java枚举的问题。枚举还是很好用的.

  • qmui

theme 观念, 产品观念

  • 音视频

学习哪门技术,都得下心思,解决一个算一个
不管理应用开发,还是音视频,都是庞大的知识体系。还是得有所决择
深入音视频,更有前景一些,因此UI上的细节不必过于追究

  • for 循环
    两个分号之间添加判断,一旦不满足,就会break, 算是一个trick

  • 桌面小组件
    微件需显示在托管应用AppWidgetHost里,Launcher就是一个可托管微件的Host.
    基于广播事件交互,

使用步骤
生命周期
限制
同广播使用

  • event bus
    方便,但是不可以传大数据,使用广播替代?
版权声明:除特殊说明,博客文章均为Sophimp原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。 由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇