Android模块化开发配置

模块化

  1. 项目由多个模块组成
  2. 每个模块都是一个独立的Feature或组件
  3. 业务模块间解耦不相互直接依赖
  4. 业务模块与公共组件模块通过aar依赖
  5. 每个模块独立开发,独立运行调试

模块化的好处

当一个项目越来越大,越来越复杂后,代码量就会变得越来大,难以阅读难以维护,业务之间出现耦合的可能性也会越来越大,同时整个APP编译调试的时间也会越来越长。

而使用模块化开发则可以解决以上问题:

  1. 项目代码结构清晰,每个Feature和公共组件都是一个独立的Library模块
  2. 避免每个Library模块间的直接耦合
  3. 提升模块的复用性
  4. 单个模块独立编译调试速度更快,节省开发时间
  5. 只关注自己所在的模块,从而避免其他Feature的异常block自己的Feature开发

但是…这篇文章不是教你如何进行模块化开发,而是介绍如何进行模块化开发的工程配置,以满足模块化开发过程中的多团队协作问题。

TextSwitcher与ViewSwitcher学习笔记

TextSwitcherViewSwitcher是什么,有什么用呢?

其实大家从名字就可以看出来其大概意思,TextSwitcher是用来切换文本显示的,而ViewSwitcher是用来切换视图显示的,实际上他们也的确是用来做这个的,只不过他们在切换视图显示的时候允许添加切换的动画效果。TextSwitcher其实也是ViewSwitcher的子类实现。

TextSwitcher使用

我们先来看看TextSwitcher的用法:

关于媒体浏览器服务(MediaBrowserService)

今天说的这个主题与媒体播放有关,尤其是音乐播放,说到音乐播放大家应该都用过音乐App。
通常一个音乐App的实现主要涉及如下几点:

  1. 从服务器获取音乐数据
  2. 播放音乐时播放器的各种播放状态以及不同状态下的UI展示
  3. 播放过程中通过UI界面控制播放器的各种状态
  4. UI控制如何与播放服务进行关联并进行状态同步
  5. 如何保证后台播放过程中播放服务不被杀死

对于上面的这几点,其实Android已经为我们提供了一套完整的解决方案,它已经很好的将这些操作进行了封装,我们只需要关注数据的获取和歌曲的播放即可。Android提供的这套API在support-v4中提供了兼容版本,因此在使用的过程中最好使用该版本以兼容低版本系统。

关键类主要有如下几个:

  1. MediaBrowserServiceCompat 媒体浏览器服务
  2. MediaBrowserCompat 媒体浏览器
  3. MediaControllerCompat 媒体控制器
  4. MediaSessionCompat 媒体会话
    我们一个个来说。

Behavior实现UC浏览器首页动画效果

老规矩,还是先上效果图
图片名称

github地址

Behavior实现滑动隐藏ToolBar与BottomNavigation

多说无益,先上效果图img\material-design

图片名称

这个效果其实是和SegmentFault的首页效果是一样的。

Demo github地址戳这里

来由

自定义Behavior实现快速返回效果

Behavior是Android Design包中出现的一个概念,Android Design包中很多控件的动画效果都是使用Behavior实现的,所以想要更好的实现Material Design风格的应用就有必要弄清楚Behavior。这篇文章从简单开始,介绍如何自定义Behavior以实现快速返回的效果。

还是先看下最终实现的效果
图片名称

自定义实现微信通讯录效果View

前言

在使用App过程中,经常会有使用到联系人或城市列表的场景,其实这两种效果是一样的,都是右边有个索引列表,点击索引列表可跳转到指定字母开头的联系人或城市上去,同时向上滑动过程中头部会有个显示当前联系人首字母的界面固定不动。下面我以微信通讯录的效果作为例子,介绍我是如何实现一个这样效果自定义View的思路和过程。

实现效果

下面是我实现的最终效果图(GIF录制的不太好),想看源代码的同学戳这里https://github.com/huyongli/IndexStickyView

Android资源应用与适配标准

本文内容来自Android官网对Android开发过程中资源使用、资源适配、资源选择原理的介绍和建议。

Android基础之9-Patch(9.PNG)与padding

在上一篇文章记一次9.png的填坑之旅最后,我留了两个个问题:

  1. 为什么使用9.PNG设置背景之后会改变控件的padding属性值
  2. 在我所遇到的问题中9.PNG明明改变的是padding值为什么却产生了margin的效果

这篇文章就来解答这两个问题以及9.PNG使用过程中需要注意的地方。

各位同学如果没看过记一次9.png的填坑之旅这篇文章可以先去看看,因为我下面所讲的内容都是根据这篇文章中的问题来讲的。

TextView之SpannableStringBuilder使用总结

最近项目中碰到一个TextView的显示问题,想了各种办法之后,最后还是用SpannableStringBuilder解决的。这篇文章就记录下我的问题的解决过程,同时总结下SpannableStringBuilderTextView中的不同用法。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×