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 媒体会话
    我们一个个来说。

自定义实现微信通讯录效果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中的不同用法。

记一次9.png的填坑之旅

最近在项目中进行界面调整时遇到了一个9.PNG图引起的Viewpadding值不正常导致UI显示不符合预期结果的问题。这篇文章就来记录我当时遇到的问题的表现形式,以及如何根据问题找到产生问题的原因,及其最后的解决办法。

RxJava学习之基本使用

RxJava现在在Android开发中越来越流行,作为一个Android开发者我也必须紧跟步伐学习学习RxJava,这篇文章就记录了RxJava中我认为比较常用的一些场景。

也给大伙推荐篇比较好的RxJava文章

RxJava基础

大家都知道JDK中提供了观察者模式的实现,它主要两个重要元素:

  • 被观察者 Observable
  • 观察者 Observer

至于Java中观察者模式的使用,大家可以自行Google下。

RxJava中也有两个重要的元素:

  • 被观察者(事件源) Observable
  • 观察者(事件订阅者) Subscriber

因此RxJava的设计看起来也有点类似JDK中的观察者模式,都有被观察者和观察者。
JDK观察者模式中当有操作需要时是由被观察者通知观察者来进行更新操作
RxJava中是由被观察者Observable发出事件给观察者Subscriber接收,然后观察者Subscriber调用noNext()进行处理,直到调用onComplete)()onError()结束

透过Retrofit使用看其源码设计模式

前言

这篇文章我将从Retrofit的基本用法出发,透过其使用步骤,一步步的探究Retrofit的实现原理及其源码的设计模式。这篇文章可能会将Retrofit中用到的设计模式和其实现原理穿插着写,所以各位同学也可以选择性的阅读。而对于Retrofit具体使用还不太清楚的同学可以去看的另一篇文章Retrofit2的使用介绍

Your browser is out-of-date!

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

×