自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android 开发架构

热爱技术,热爱分享,加油,孤独的编程人

  • 博客(57)
  • 收藏
  • 关注

原创 来看漫画:互联网人十二时辰,程序员最惨,有木有?

END

2019-07-31 15:58:15 241

原创 为什么我把 Run 出来的 Apk 发给老板,却装不上!

一. 序当我们在 Android Studio 中,直接 Run 一个项目时,AS 会自动打一个 Debug 的 Apk,并通过 ADB 命令,将 App 安装到我们连接的设备上。这个 Run 出来的 Apk,在工程的 build/ 目录可以找到。如果你还想把这个 Apk 分享出去,抢先体验功能,不好意思,正常情况下,这个 Apk 是无法安装的。接下来看看,是什么导致 Run 出来的 AP...

2019-07-31 15:44:13 422

原创 可能是第十好的Android 开源 日历 Calendar 仿小米

简介博主现在工作在一家教育公司,最近公司的产品狗扔过来一个需求,说要做一个可以周月切换的课表,可以展示用户在某一天的上课安排。接到这个任务之后我研究了很多的日历控件,并且抽出了一个calenderlibS。先看一下最后的项目中的效果:月模式周模式看到本篇文章的同学估计也是实验课或者项目需求中需要一个日历表,当我接到这个需求的时候,当时脑子压根连想都没想,这么通用的控件,GitH...

2019-07-31 15:29:22 1616 1

原创 详细介绍!Linux 上几种常用的文件传输方式

ftpftp 命令使用文件传输协议(File Transfer Protocol, FTP)在本地主机和远程主机之间或者在两个远程主机之间进行文件传输。FTP 协议允许数据在不同文件系统的主机之间传输。尽管这个协议在传输数据上提供了高适应性,但是它并没有尝试去保留一个特定文件系统上的文件属性(例如一个文件的保护模式或者修改次数)。而且 FTP 协议很少对一个文件系统的整体结构作假定,也不提供这...

2019-07-30 15:42:52 434

原创 动态加载 so 注意事项&案例

常用架构armeabi,armeabi-v7a,x86,mips,arm64-v8a,mips64,x86_64。加载so的两种方式打包在apk中的情况,不需要开发者自己去判断ABI,Android系统在安装APK的时候,不会安装APK里面全部的SO库文件,而是会根据当前CPU类型支持的ABI,从APK里面拷贝最合适的SO库,并保存在APP的内部存储路径的 libs 下面。动态加载...

2019-07-30 15:39:11 431

原创 APP 热修复都懂了,你会 SDK 热修复吗?最全方案在这里!

前言刚开始要做 SDK 热修复,我是拒绝的 ~某日,解决完一个线上 bug 后,我冒出了一个念头:让我们的 SDK 也具有热修复的能力呗!但是查了查,网上资料少、很多热修复方案只针对app……可是我都拍胸脯向老大夸口了,焉有退缩的道理?!加上万一以后手抖,出了个什么大 bug 或者兼容问题,我的职业生涯不就要终结了!?我滴乖乖,保命要紧!还是赶紧做个保底方案吧。一、背景和目的我...

2019-07-29 15:00:08 392

原创 记录一次 Android 权限删除经历

1.事发经过近期google play发布了新的政策,其中一部分是限制权限使用,只允许满足条件的使用场景才能申请权限,小编所在的项目被检测出使用了RECEIVE_SMS权限,但是从app下的Androidmanifest文件中并未发现有该权限的注册,所以该权限是哪里来的呢?2.初步定位首先使用android studio查看了打包出来的apk中的Androidmanifest文件,发现其中确...

2019-07-29 14:49:45 463

原创 Android Gradle 编译过程中的优化

前言AndroidStudio 在编译APK的过程中进行了很多的优化,其中包括删除无用代码,无用资源等,本篇文章具体介绍一下具体的优化过程,在遇到编译的问题时能快速分析并且解决问题。编译优化在使用Gradle编译APK的release时,会习惯在buildTypes的release标签中加上如下配置:release { minifyEnabled true shrinkR...

2019-07-29 14:39:22 616

原创 只需一行代码完成多语言切换

背景之前总是有开发者反馈我应用切换了语言,可是工具类获取的 string 却没有发生改变。其实这个问题很简单,你切换语言的 Context 只作用在了你的 Activity 上,并没有对你的 Application 做同样的操作,知道了这点,那么解决问题就很简单了,为了省事,我给大家封装了 LanguageUtils,直接一行代码便可完成多语言的切换,类似微信的语言切换分分钟便可完成。使用G...

2019-07-28 21:46:18 359

原创 Android 系统预设 App,有什么难的?

Android 系统预置 APP 是做 Framework 应用开发经常会遇到的工作,预置 APP 分为两种,一种是直接预置 APK,一种是预置带有源码的 APP。预置 apk示例说明以 Shadowsocks.apk 示例,在 AOSP/packages/apps 新建名为 Shadowsocks 的文件,放入 Shadowsocks.apk,再新建 Android.mk,内容如下:L...

2019-07-26 15:58:18 376

原创 Android:手把手带你入门跨平台UI开发框架Flutter

前言Flutter 作为Google出品的一个新兴的跨平台移动客户端UI开发框架,正在被越来越多的开发者和组织使用,包括阿里的咸鱼、腾讯的微信等。今天,我将献上一份 《全面 & 详细的Flutter学习指南》,希望你们会喜欢。目录1. 简介定义:一款Google出品&开源的移动客户端UI开发框架(SDK)作用:用一套代码同时在Android、iOS上快速构...

2019-07-26 15:49:25 346

原创 Android Studio中将一个项目转变成library(model)引入到另一个项目中使用

大家平时在做项目时,会经常应用library作为第三方依赖,那么如果公司中有多个app,其中有部分业务功能逻辑是相似并且可以复用的时候,我们货怎么办呢?简单粗暴的办法就是直接复制过来,但是这样做岂不是复用率不高,以后这部分代码要修改岂不是每个app都要修改。那么,把这部分代码作为library在项目中引用不就解决复用率的问题。下面就一块来学习一下如何将公共模块打包成library:1.提取公...

2019-07-26 15:12:57 1066

原创 每日一问:Android 消息机制,我有必要再讲一次!

我们在日常开发中,总是不可避免的会用到 Handler,虽说 Handler 机制并不等同于 Android 的消息机制,但 Handler 的消息机制在 Android 开发中早已谙熟于心,非常重要!通过本文,你可以非常容易得到一下问题的答案:1.Handler、Looper、Message 和 MessageQueue 的原理以及它们之间的关系到底是怎样的?2.MessageQueue ...

2019-07-25 15:03:27 161

原创 Android利用Fmod仿QQ变声音效

看到QQ一些变声音效,这些声音效果可以采用SoundTouch,Fmod去处理。这篇文章我们用Fmod去实现变声音效的处理。fmod官网https://www.fmod.com/,fmod Ex 声音系统是为游戏提供音频引擎。多路输出,多路输入,支持类型广。在使用之前了解一些关于声音的概念,一般声音的采样率是44.1khz,就是每秒钟采集44100个sample,一个sample(采样解析度)有8...

2019-07-25 14:44:46 843

原创 Android Gradle 干货

Gradle介绍Gradle是一个基于JVM的新一代构建工具,可以用于自动化自定义有序的步骤来完成代码的编译、测试和打包等工作,让重复的步骤变得简单,用于实现项目自动化,是一种可编程的工具,你可以用代码来控制构建流程最终生成可交付的软件。构建工具可以帮助你创建一个重复的、可靠的、无需手动介入的、不依赖于特定操作系统和IDE的构建Gradle优势1、Gradle结合Ant和Maven等构建工具...

2019-07-25 14:31:54 214

原创 一位Android大牛的BAT面试心得与经验总结

序言目前形势,参加到Android队伍的人是越来越多,可以说是已经达到了供过于求的地步了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇面试心得与经验总结。诚意之作,希望可以给在外来找工作的人一点指导以及帮助,如果能耐心读完的话,相信你会找到自己想需要的东西的。...

2019-07-24 14:57:55 178

原创 从400多k的大小减到了2B,我的APP是怎么优化的?

前言本篇文章主要针对 Android性能优化 中 Android APK的大小优化虽然现在网速已经非常快,用户流量也很多,但是对于我们的 Android apk 文件进行优化还是很有必要的,动不动几十上百兆的大小,用户体验还是很不好的,下面我们就来整理一下 Android apk 的优化方法一、icon 图标使用 svg在我们的App中会有很多icon,而且美工小姐姐一般都是成套的给,所以...

2019-07-24 14:34:59 198

原创 7张图带你轻松理解Java 线程安全

/ 什么是线程 /按操作系统中的描述,线程是 CPU 调度的最小单元,直观来说线程就是代码按顺序执行下来,执行完毕就结束的一条线。举个

2019-07-23 16:15:02 221

原创 读Java虚拟机类加载引发的血案

/ 前言 /最近在看 Java 虚拟机类加载的知识点,结果让我发现了自己一个曾经一直纠结,又没彻底弄懂的类加载黑洞,从而引发下面一系列的测试血案。相信面试过的你们也会见过类似下面测试的这几道题。不过,答案你真的理解了么?话不多说,直接 GKD。可惜我不是大佬,所以…哈哈哈 GKD 吧!下面就是测试过程种发现的一些疑惑点,赶紧记录一波…/ 正文 /测试开始,先思考下下面代码输...

2019-07-23 15:52:19 138

原创 自定义 Behavior,实现嵌套滑动、平滑切换周月视图的日历

使用 CoordinateLayout 可以协调它的子布局,实现滑动效果的联动,它的滑动效果由 Behavior 实现。以前用过小米日历,对它滑动平滑切换日月视图的效果印象深刻。本文尝试用自定义 Behavior 实现一个带有这种效果的日历。简介先上个小米日历的图,让大家知道要做一个什么效果:这是小米日历的效果,在用户操作列表的时候,将日历折叠成周视图,扩大列表的显示区域,同时也不影响日...

2019-07-23 14:51:45 457

原创 字节跳动高工面经记,已获 Offer 入职!

正文最近加入了 ByteDance 某“Awesome”部门(具体保密,想猜的话就看这单词猜吧,下文简称Awe),遂一群周遭好友来讨要面经;其实自己过去在前东家也负责很多面试工作,对于这种内容猛一想还是保密相对好些,然鹅仔细想想涉及的东西很多是比较针对我所擅长的方向,未必和大多数人都能重合,而那些公共的基础部分也是目前市场上一个合格的Android工程师所该必备的,所以整个面经分享我还是决定写出...

2019-07-22 16:57:52 2360 1

原创 Android自定义控件:一款多特效的智能loadingView

先上效果图(如果感兴趣请看后面讲解):1、登录效果展示2、关注效果展示1、【画圆角矩形】画图首先是onDraw方法(我会把圆代码写上,一步一步剖析):首先在view中定义个属性:private RectF rectf = new RectF();//可以理解为,装载控件按钮的区域rectf.left = current_left;rectf.top = 0; //(这...

2019-07-22 16:22:53 175

原创 LeetCode每日一题:两数之和 II - 输入有序数组

##题目:两数之和 II - 输入有序数组给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。##示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因此 index1 ...

2019-07-18 16:36:17 139

原创 Android Q新特性,一起来学习折叠屏应该如何适配

1. 前言Flutter作为时下最流行的技术之一,凭借其出色的性能以及抹平多端的差异优势,早已引起大批技术爱好者的关注,甚至一些闲鱼,美团,腾讯等大公司均已投入生产使用。虽然目前其生态还没有完全成熟,但身靠背后的Google加持,其发展速度已经足够惊人,可以预见将来对Flutter开发人员的需求也会随之增长。无论是为了现在的技术尝鲜还是将来的潮流趋势,都9102年了,作为一个前端开发者,似乎没有...

2019-07-18 16:09:25 342

原创 实现马蜂窝旅游头像泡泡动画

当pm制定完下一版本需求,打开马蜂窝旅游app准备出去嗨一圈的时候 ,看到了马蜂窝旅游app的一个用户头像动画后。。。(=@__@=) 先看看效果图:效果分析:1、涉及到有多个view在做动画操作 这里需要继承FrameLayout来左父布局 供图片做动画操作2、每个子view的动画路径类似于S型 我这里采用的是三阶贝塞尔曲线和PathMeasure来完成动画运动路径的封装每个子vie...

2019-07-17 15:44:21 373

原创 与“阿里”的flutter-go双剑合璧

GSY对外开源了一个应用:GSYFlutterDemo 作为简单示例和解决方案 Demo ,它可以给你学习和工作中提供一些便捷的帮助,比如 如何自定义布局,如何滚动控件到指定 child position ,如何调整 Text 控件的 Line Space ,如何监听键盘的弹出和收起 等等,所以例子方案都独立实现,方便阅读 CV 。已有例子Controller 例子圆角 例子...

2019-07-17 15:32:46 487

原创 Android混淆你了解多少?

在 Android 日常开发过程中,混淆是我们开发 App 的一项必不可少的技能。只要是我们亲身经历过 App 打包上线的过程,或多或少都需要了解一些代码混淆的基本操作。那么,混淆到底是什么?它的好处有哪些?具体效果如何?别急,下面我们来一一探索它的"独特"魅力。##1混淆简介代码混淆(Obfuscated code)是将程序中的代码以某种规则转换为难以阅读和理解的代码的一种行为。混淆的好处...

2019-07-17 15:01:28 1274

原创 来看漫画:我才是世界上最好的编程语言

周末的Hello World咖啡馆还是热闹非凡。转载:码农翻身所有说,谁才是世界上最好的编程语言?####Android开发者福利限时分享Android开发资料+面试架构资料 免费分享 点击链接 即可领取《Android架构师必备学习资源免费领取(架构视频+面试专题文档+学习笔记)》...

2019-07-16 15:25:00 7005 2

原创 MotionLayout系列之配合布局CoordinatorLayout, DrawerLayout, ViewPager使用

在前量部分我们引入了几个示例:基础使用滑动处理自定义属性插值关键帧在一,二部分已经大量的介绍了 MotionLayout 的功能,在这部分我们将介绍如何在已有的项目中使用 MotionLayout ,整合到已有的布局中(CoordinatorLayout, DrawerLayout, ViewPager)。...

2019-07-16 14:44:00 1561 1

原创 LayoutParams 你知道多少?

从概念讲起LayoutParams,顾名思义,就是布局参数。而且大多数人对此都是司空见惯,我们 XML 文件里面的每一个 View 都会接触到 layout_xxx 这样的属性,这实际上就是对布局参数的描述。大概大家也就清楚了,layout_ 这样开头的东西都不属于 View,而是控制具体显示在哪里。LayoutParams 都有哪些初始化方法通常来说,我们都会把我们的控件放在 XML 文件...

2019-07-16 14:03:52 250

原创 你是成熟的 AI 了,应该自己学会补全代码

在项目开发中,优秀的代码自动补全工具可以提升工作效率。然而,近来的 IDE 基本都使用搜索方法进行补全,在一些场景下效果不佳。近日,有开源项目用深度学习模型进行代码补全,显示出非常有潜力的效果。近日,Reddit 上的一篇帖子引起了网友的热议。帖子作者「mlvpj」称:「我们使用深度学习完成了一个简单的项目,可以自动进行 Python 代码补全。」根据介绍,该项目基于 LSTM 模型,训...

2019-07-15 14:55:09 304

原创 Android插件化探索与发现

简介对于App而言,所谓的插件化,个人的理解就是把一个完整的App拆分成宿主和插件两大部分,我们在宿主app运行时可以动态的载入或者替换插件的部分,插件不仅是对宿主功能的扩展而且还能减小宿主的负担,所谓的宿主就是运行的app,插件即宿主运行时加载的apk文件,这样宿主和插件结合的方案技术大概就是插件化了吧。为什么要插件化?解耦,独立各大模块的业务成为插件,互不干扰,即用即插,方便开发与维...

2019-07-15 14:45:34 179

原创 Flutter + MVP +Kotlin 实战!

简介1. KotlinKotlin,由 JetBrains 于 2011.07 推出,一款面向 JVM 在 Java 虚拟机上运行的静态类型编程语言。相比 Java,它可以静态检测很多陷阱,比如常见多发的空指针,所以开发效率更高。而且通过支持variable type inference,higher-order functions (closures),extension functio...

2019-07-15 13:55:36 380

转载 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...

曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我们需要先解决下面五个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?什么...

2019-07-12 15:44:22 234

原创 设计模式:工厂模式,解除耦合的利器

为什么要用工厂模式?解答这个问题前,我们先来了解什么是工厂模式。工厂模式其实也称创建模式,是用于创建对象的一种方式。本质上就是用工厂方法来代替new实例化对象。举个例子:我们在编写代码的时候,在一个A类中通过new的方式实例化了类B,那么A类和B类之间就存在耦合,如果以后修改了B类的代码和使用方式,例如需要在构造函数中传入参数,那么A类也就需要跟着修改了,一个类的依赖可能影响不大,但若有多个...

2019-07-12 15:35:37 134

原创 gradle中统一配置版本的小技巧

在Project/build.gradle中定义,在module/build.gradle中使用1、直接在Project/build.gradle中定义和引用:// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { ...

2019-07-12 15:23:01 281

原创 怎样在Android面试中聊聊多线程

多线程可以说是Android面试的高频问题了, 而多线程涉及的内容非常多, 因此在面试当中往往不知道从何说起, 本文并不是为了科普多线程或者研究多线程的知识, 而是尝试组织语言以便在面试当中更好地忽悠面试官.语言表达在面试当中虽说很重要, 不过更重要的还是相关知识技能过硬.假如在一场Android面试当中, 面试官让你聊聊多线程, 你可以试试这样回答.Android中的线程在Andr...

2019-07-11 16:15:24 198

原创 重磅!!Flutter 面试知识点集锦

谷歌大会之后,有不少人咨询了我 Flutter 相关的问题,其中有不少是和面试相关的,如今一些招聘上也开始罗列 Flutter 相关要求,最后想了想还是写一期总结吧,也算是 Flutter 的阶段复习。⚠️系统完整的学习是必须需要的,这里只能帮你总结一些知识点,更多的还请查阅 Dart/Flutter 官网。本篇主要是知识点总结,如有疑问可点击各文章链接了解详情,或者查阅我 掘金专栏。...

2019-07-11 15:44:36 340

原创 Android之AppBarLayout实现悬停吸附伸缩效果

前几天看到这样一个UI效果,然后自己也仿照实现了下:#####开眼app个人中心看着挺酷的,也有很多App都用到了这个UI效果,比如开眼App和沪江开心词场就用到了.所以下面就来简单实现一下这个UI效果吧.组合三剑客1.AppBarLayout2.CoordinatorLayout3.CollapsingToolbarLayout实现上面的UI效果需要将这三剑客的组合起来用,...

2019-07-10 16:59:47 2751 1

原创 最新 Android 热门开源项目公布

LeanCloud 工程师收集了 2019 年 5 月 GitHub 上比较流行的 9 个和 Android 开发相关的开源项目,分享给各位开发者,内容包括对话框、日历、矢量绘图组件,内存泄露检测库,Kotlin 的 linter、mock 库、依赖注入框架等。LeakCanarysquare 开源的内存泄露检测库。使用起来极为便捷,只需在 build.gradle 中...

2019-07-10 16:21:03 1149

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除