高仿喜马拉雅 Android 客户端,单 activity 多 fragme 组件化架构,欢迎 star,不喜勿喷

最后

一线互联网Android面试题含详解(初级到高级专题)

这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率

如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。

最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 使用 BackgroundLibrary 库代替所有 shape 资源,请无视 xml 文件中 app:bl_xxxx_xxxx="xxxx"错误

  • 引入 databinding,减少 findViewById 使用

珠穆朗玛 FM 1.0 2019-10.22

  • 用户登陆

珠穆朗玛 FM 1.0 2019-10.09

  • 友盟分享

珠穆朗玛 FM 1.0 2019-09.25

  • 布局优化,避免过渡绘制

  • 完善状态管理,提升用户体验

珠穆朗玛 FM 1.0 2019-09.20

  • 声音批量下载

  • 语音搜索

  • 专辑订阅

  • 声音喜欢

  • 优化启动速度

  • 加入模拟广告页

  • 集成 Bugly 异常上报,全量更新,热更新

珠穆朗玛 FM 1.0 2019-09.13

  • 第一次发布

功能演示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

主要功能(包括不仅限于):

  • 专辑展示

  • 声音展示及播放

  • 电台展示及播放

  • 主播展示

  • 声音下载

  • 历史播放展示及播放

待完善(包括不仅限于):

  • 优化 UI

  • 优化性能

  • 修复 bug

快速体验

扫描二维码下载: 

如果二维码图片不可见,点我下载体验

项目架构

本项目采用 retrofit+rxjava2+rxandroid+arouter+mvvm+fragmentation 实现单 activity 多 fragme 组件化架构

  • app:负责管理各个业务组件,和打包 apk,没有具体的业务功能;

  • lib_third:负责第三方库的集成和初始化;

  • lib_common:属于功能组件,支撑业务组件的基础,提供多数业务组件需要的功能;

  • module_main:属于业务组件,指定 APP 启动页面、主界面;

  • module_home:首页展示,包括热门,分类,精品,主播,电台,展示及播放等;

  • module_listen:我听,包括订阅,喜欢,播放历史,下载等;

  • module_discover:发现,包括后续扩展功能等;

  • module_user:用户管理模块;

组件化实现:

珠穆朗玛 FM 客户端使用阿里 ARouter 作为路由,实现组件与组件的通信跳转

集成模式和组件模式转换

Module 的属性是在每个组件的 build.gradle 文件中配置的,当我们在组件模式开发时,业务组件应处于 application 属性,这时的业务组件就是一个 Android App,可以独立开发和调试;而当我们转换到集成模式开发时,业务组件应该处于 library 属性,这样才能被我们的“app 壳工程”所依赖,组成一个具有完整功能的 APP

先打开工程的根目录下找到 gradle.properties 文件,然后将 isModule 改为你需要的开发模式(true/false), 然后点击 “Sync Project” 按钮同步项目

isModule=false

在这里插入图片描述

if (isModule.toBoolean()) {

apply plugin: ‘com.android.application’

} else {

apply plugin: ‘com.android.library’

}

在这里插入图片描述

组件之间 AndroidManifest 合并问题

我们可以为组件开发模式下的业务组件再创建一个 AndroidManifest.xml,然后根据 isModule 指定 AndroidManifest.xml 的文件路径,让业务组件在集成模式和组件模式下使用不同的 AndroidManifest.xml,这样表单冲突的问题就可以规避了 已 module_main 组件为例配置如下: 在这里插入图片描述

sourceSets {

main {

if (isModule.toBoolean()) {

manifest.srcFile ‘src/main/module/AndroidManifest.xml’

} else {

manifest.srcFile ‘src/main/AndroidManifest.xml’

文末

架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。

移动架构师

系统学习技术大纲

一线互联网Android面试题总结含详解(初级到高级专题)

image

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1715480704774)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A powerful library that manage Fragment for Android!为"Activity + 多Fragment","多模块ActivityFragment"架构而生,简开发,轻松解决动画、嵌套、事务相关等问题。为了更好的使用和了解该库,推荐阅读下面的文章:Fragment全解析系列(一):那些年踩过的坑Fragment全解析系列(二):正确的使用姿势Demo演示:均为ActivityFragment,第一个为简流式demo,第二个为仿微信交互的demo(全页面支持滑动退出),第三个为仿知乎交互的复杂嵌套demo下载APK   特性1、可以快速开发出各种嵌套设计的Fragment App2、悬浮球/摇一摇实时查看Fragment的栈视图Dialog,降低开发难度3、增加启动模式、startForResult等类似Activity方法4、类似Android事件分发机制的Fragment回退方法:onBackPressedSupport(),轻松为每个Fragment实现Back按键事件5、提供onSupportVisible()等生命周期方法,简嵌套Fragment的开发过程; 提供统一的onLazyInitView()懒加载方法6、提供 Fragment转场动画 系列解决方案,动态更换动画7、提供Activity作用域的EventBus辅助类,Fragment通信更简、独立(需要使用EventBusActivityScope库)8、支持SwipeBack滑动边缘退出(需要使用Fragmentation_SwipeBack库)      如何使用1. 项目下app的build.gradle中依赖:// appcompat-v7包是必须的,v1.1.9兼容v4-27.0.0 compile 'me.yokeyword:fragmentation:1.1.9' // 如果不想继承SupportActivity/Fragment,自己定制Support,可仅依赖: // compile 'me.yokeyword:fragmentation-core:1.1.9' // 如果想使用SwipeBack 滑动边缘退出Fragment/Activity功能,完整的添加规则如下: compile 'me.yokeyword:fragmentation:1.1.9' // swipeback基于fragmentation, 如果是自定制SupportActivity/Fragment,则参照SwipeBackActivity/Fragment实现即可 compile 'me.yokeyword:fragmentation-swipeback:1.1.9' // Activity作用域的EventBus,更安全,可有效避免after onSavenInstanceState()异常 compile 'me.yokeyword:eventbus-activity-scope:1.1.0' // Your EventBus's version compile 'org.greenrobot:eventbus:{version}'2. Activity继承SupportActivity:// v1.0.0开始,不强制继承SupportActivity,可使用接口+委托形式来实现自己的SupportActivity public class MainActivity extends SupportActivity {     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(...);         // 建议在Application里初始         Fragmentation.builder()              // 显示悬浮球 ; 其他Mode:SHAKE: 摇一摇唤出   NONE:隐藏              .stackViewMode(Fragmentation.BUBBLE)              .debug(BuildConfig.DEBUG)              ... // 更多查看wiki或demo              .install();         if (findFragment(HomeFragment.class) == null)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值