自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wildma的博客

放弃不难,但坚持一定很酷!

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

原创 将博客搬至CSDN

CSDN 是我最开始写博客的平台,后来因为体验问题就转向其他平台了。现在回来啦!我的 CSDN 地址:wildma.blog.csdn.net

2020-06-07 11:40:23 434

原创 一种非常好用的 Android 屏幕适配

更新:由于该适配方案越来越多人使用,也有很多人遇到不太理解的问题。所以为了大家更好的使用,我将文章很多内容更新了,老用户可以重新看下整篇文章。主要更新的内容是使用方法跟以前不同了,以前是不改变最小宽度基准值,根据 UI 图来计算布局中设置的值。现在改成最小宽度基准值与设计图一致,然后设计图标注多少 dp 就写多少 dp,非常方便。还整理了评论区比较多人问到的问题...

2018-04-06 02:09:03 426

原创 Android 实现 Alexa App-to-App Account Linking

Alexa 的 App-to-App Account Linking 指的是将你的 App 账号与 Alexa App 账号进行 “链接”,“链接” 的作用是为了通过 Amazon Echo 系列音箱来语音控制支持 Alexa 的设备。App-to-App Account Linking 有两种方式,分别 ”从您的应用开始“ 和 ”从 Alexa 应用开始“,这篇文章讲的是第一种。......

2022-08-09 00:20:42 2614 4

原创 Android 如何判断 Wi-Fi 是 2.4G+5G 双频?

前言由于稳定性、成本等原因,大部分智能家居设备都只支持连接 2.4G 的无线网络。所以我们在利用 APP 实现配网的时候就需要判断 Wi-Fi 是 2.4G、5G,还是 2.4G+5G 双频,也就是大部分智能家居设备是无法连接纯 5G Wi-Fi 的,如果用户手机连接的是纯 5G Wi-Fi 就需要给用户一个提示信息,2.4G+5G 双频则不需要提示。很多人肯定会想 “这个有什么难的?” 扫描出的 Wi-Fi 结果中肯定有属性可以判断。其实并没有这么简单,我们的测试人员在禅道上提了这个问题,结果我们团队

2021-07-08 23:55:05 4708

原创 面试官:Glide 是如何加载 GIF 动图的?

前言最近在一个群里看到有人说面试遇到一个问题是 “Glide 是如何加载 GIF 动图的?”,他说没看过源码回答不出来…好家伙!现在面试都问的这么细了?我相信很多人即使看过源码也很难回答出来,包括我自己。比如之前自己虽然写了两篇 Glide 源码的文章,但是只分析了整个加载流程和缓存机制,关于 GIF 那里只是粗略的看了一下,想要回答的好还是有难度的。那么这篇文章就好好分析一下吧,这篇依然采用 4.11.0 版本来分析。系列文章:Android 主流开源框架(一)OkHttp 铺垫-HttpCli

2021-03-13 22:36:09 2475 7

原创 6+3 种单例模式详解

前言Java 版的单例模式是以前写的了,最近又补充了 Kotlin 的写法,所以一起发出来。这里的 6+3 说的就是 Java 的 6 种 + Kotlin 的 3 种。更多设计模式系列文章可以看我之前写的 AndroidNotes。一、介绍定义确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。简单示例public class Singleton { private static Singleton instance = new Singleton; privat

2020-12-23 00:07:37 476

原创 Android 主流开源框架(九)LeakCanary 源码解析

前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎么使用,然后再去深究每一步底层做了什么,用了哪些好的设计模式,为什么要这么设计。系列文章:Android 主流开源框架(一)OkHttp 铺垫-HttpClient 与 HttpURLCo

2020-12-09 00:26:26 881 7

原创 Android 主流开源框架(八)EventBus 源码解析(含面试相关文问题解答)

前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎么使用,然后再去深究每一步底层做了什么,用了哪些好的设计模式,为什么要这么设计。系列文章:Android 主流开源框架(一)OkHttp 铺垫-HttpClient 与 HttpURLCo

2020-11-29 15:28:07 567

原创 Android Studio 4.1 问题记录

前言好久没写博客了,这几个月实在太忙,工作和生活上的事都很忙。之前计划写的 《Android 主流开源框架》 系列也断更了,一是实在没时间,二是这种分析源码的文章很少人看,Glide 源码的 2 篇文章我花了近 2 个星期(每天晚上下班开始写)才写完,结果阅读量才几百个。当然写博客肯定不是为了别人看才写的,但是写过博客的人都知道,你的博客越多人看,你就会写的越有劲!说下正经事吧!今天写这篇博客主要是我的开源项目 ScreenAdaptation 有人反映说他们的 Android Studio 升级到 4

2020-10-16 00:37:06 5925 9

原创 Android 主流开源框架(七)Glide 的缓存机制

前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎么使用,然后再去深究每一步底层做了什么,用了哪些好的设计模式,为什么要这么设计。系列文章:Android 主流开源框架(一)OkHttp 铺垫-HttpClient 与 HttpURLCo

2020-05-17 21:23:55 848

原创 Android 主流开源框架(六)Glide 的执行流程源码解析

前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎么使用,然后再去深究每一步底层做了什么,用了哪些好的设计模式,为什么要这么设计。系列文章:Android 主流开源框架(一)OkHttp 铺垫-HttpClient 与 HttpURLCo

2020-05-10 16:15:21 840

原创 Android 主流开源框架(五)Retrofit 源码解析

文章首发于我的个人博客:wildma的博客,这里有更好的阅读体验,欢迎关注。前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎...

2019-11-03 15:17:48 488

原创 Android 主流开源框架(四)Retrofit 使用详解

文章首发于我的个人博客:wildma的博客,这里有更好的阅读体验,欢迎关注。前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎...

2019-10-26 14:12:37 741

原创 Android 主流开源框架(三)OkHttp 源码解析

文章首发于我的个人博客:wildma的博客,这里有更好的阅读体验,欢迎关注。前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎...

2019-10-21 22:37:22 590

原创 Android 主流开源框架(二)OkHttp 使用详解

文章首发于我的个人博客:wildma的博客,这里有更好的阅读体验,欢迎关注。前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎...

2019-10-20 15:11:48 770

原创 Android 主流开源框架(一)OkHttp 铺垫-HttpClient 与 HttpURLConnection 使用详解

文章首发于我的个人博客:wildma的博客,这里有更好的阅读体验,欢迎关注。前言最近有个想法——就是把 Android 主流开源框架进行深入分析,然后写成一系列文章,包括该框架的详细使用与源码解析。目的是通过鉴赏大神的源码来了解框架底层的原理,也就是做到不仅要知其然,还要知其所以然。这里我说下自己阅读源码的经验,我一般都是按照平时使用某个框架或者某个系统源码的使用流程入手的,首先要知道怎...

2019-10-20 15:08:23 914

原创 Android 设备与 U 盘之间的交互

前言最近需要实现一个 TV 或一体机从 U 盘读取数据显示的功能,该功能主要解决的问题是:获取 U 盘根目录解决拔出 U 盘进程被杀死的问题一、获取 U 盘根目录获取 U 盘根目录需要分两种情况:1.1 应用程序已经在运行,这个时候插入 U 盘。这种情况我是通过监听媒体挂载的广播来实现的,具体代码如下:注册广播: <receive...

2019-07-28 11:19:32 479

原创 自己撸一个 Android Studio 插件

前言用过 Android Studio 进行开发的人一般都使用过插件,因为使用插件可以大大提高我们的开发效率。例如我们常用的插件有:GsonFormat:将 json 数据转换成实体类。Android Butterknife Zelezny:一键生成 ButterKnife 注解。都知道插件很好用,那这些插件是怎么制作的呢?这篇文章就讲下怎么制作一个 A...

2019-05-11 17:32:19 521

原创 设计模式

一、设计模式概括设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它可以提高代码的可重用性,增强系统的可维护性,以及解决一系列的复杂问题。一名软件工程师搭建的框架是否健壮、是否易维护,很大程度取决于你是否运用了设计模式。是否懂得将设计模式运用到实际项目中也是区分初级工程师与高级工程师的其中一个重要因素。二、设计模式六大原则1. 单一职责...

2019-04-23 22:52:08 304

原创 聊聊 Android 中的字体大小适配

本篇文章已授权微信公众号 guolin_blog(郭霖)独家发布前言虽然去年写的一篇文章【一种非常好用的Android屏幕适配】就包含字体大小适配,但那篇文章讲的是根据不同屏幕尺寸来适配字体大小的,接下来我要聊的是字体大小适配中的其他几种场景。一、场景一有这样一个需求,界面上需要显示一个标题文本,但是该标题的文案长度是不固定的,要求标题的文案全部显示出来,...

2019-02-12 06:32:37 705

原创 Android 消息推送 MQTT 实战

前言年初做了一款Android TV 应用,用到了MQTT。主要实现的是类似一些景区利用大屏幕实时显示景点人数,超过人数就不允许进入。即利用闸机设备监控到进景区的游客,然后通过MQTT将消息发送给大屏幕,最后大屏幕实时显示景区人数,并响应一个消息通知闸机设备已经收到了它发过来的消息(确保消息到达)。这篇文章会模拟真实的使用流程进行讲解,即闸机发布消息——服务器(代...

2018-11-08 22:19:43 423

原创 发布自己的开源库让他人使用——基于 JitPack

前言在开发中为了方便,我们通常会使用第三方开源库,例如经常使用的图片加载库Glide(如下)。那么我们有没有想过自己也发布一个开源库让别人使用呢?虽然之前也发布过,但只是自己随便写的测试开源库,这次发布的也算是自己真正意义上可以给别人使用的开源库了吧!所以也顺便教大家怎么使用JitPack发布自己的开源库。compile 'com.github.bump...

2018-07-01 19:34:47 244

原创 Android 自定义相机实现身份证拍照,并加入自动对焦与图片不规则裁剪

一、 前言前段时间,应公司要求实现一个自定义相机,需要有自动对焦和图片不规则裁剪功能,其实难点主要也是这2个功能。经Google搜索,发现并没有现成的轮子。最后通过各种查找资料,自己封装了一个,效果图如下:二、使用Step 1. 添加JitPack仓库在项目的build.gradle添加JitPack仓库allprojects { repositor...

2018-06-30 19:01:54 498

原创 一个非常好用的 Android 图片选择框架

前言几乎每个APP都需要图片选择和裁剪功能,因为涉及到相机和存储,所以该功能还是要考虑很多兼容性的。这也是github上有一大堆图片选择框架的原因,但是你会发现github上找的图片选择框架并不是简单的只有图片选择, 它还包含视频选择、视频录制、图片压缩等等一大堆功能。其实你只需要一个头像选择的功能,那些框架很多功能你根本用不到,而且代码至少也几十个类,后期有问题...

2018-06-24 21:37:24 633 2

原创 详细讲解 Android Studio 中使用 Git——结合 GitLab

本文已授权微信公众号《鸿洋》原创首发,转载请注明出处。一、前言以前项目版本管理工具一直用的都是SVN,现在换成Git,并且项目托管平台使用的是GitLab。虽然经常用GitHub,但是却很少使用到分支,因为都是自己在写,也不用开发版与发布版、打Tag那些,所以这篇文章主要讲下GitLab与Git的使用。这篇文章还是会按我以前的写作风格,写的通俗易懂,并且全程...

2018-05-24 20:30:17 470

原创 Android 友盟统计的集成与使用(包含多渠道打包配置)

前言app上线后,一般公司都希望跟踪app在市场上的使用情况。包括新增用户、活跃用户、渠道信息、错误信息等,还有例如商城类的app,需要跟踪用户最喜欢浏览哪种类型的店铺或商品。这些都可以通过集成友盟统计来轻松实现。(小提示:由于截的都是大图,可能显示比较模糊,需要查看清晰图片则鼠标点击图片放大即可)一、集成1.1 获取Appkey集成友盟SDK之前,首先需要到...

2018-02-25 05:09:22 326

原创 一步一步教你集成腾讯浏览服务 X5 内核

前言腾讯浏览服务(TBS,Tencent Browsing Service)整合腾讯底层浏览技术和腾讯平台资源及能力,提供整体浏览服务解决方案。(来自-腾讯浏览服务) 通俗点讲就是系统webview的增强版。我在项目中选择它来替代系统webview的主要原因是:速度快:相比系统webview的网页打开速度有30+%的提升;省流量:使用云端优化技术使流量节省2...

2017-10-05 06:30:16 577

原创 带你通俗易懂的理解——线程、多线程与线程池

一、进程与线程进程:进程就是正在执行的程序。线程:是程序执行的一条路径, 一个进程中可以包含多条线程。通俗理解:例如你打开微信就是打开一个进程,在微信里面和好友视频聊天就是开启了一条线程。两者之间的关系:一个进程里面可以有多条线程,至少有一条线程。一条线程一定会在一个进程里面。关于进程与线程的讲解,这篇文章讲的挺好的–>进程与线程的一个简单解释二...

2017-10-05 02:35:19 262

原创 Android 仿微信朋友圈全文、收起功能

前言一般在社交APP中都有类似朋友圈的功能,其中发表的动态内容很长的时候不可能让它全部显示。这里就需要做一个仿微信朋友圈全文、收起功能来解决该问题。在网上看到一个例子–> http://blog.csdn.net/e042kuuw/article/details/55107537 ,写的很不错,但是有个bug,他这个Demo只有在条目固定的时候才正常,当增加...

2017-08-03 02:18:37 199

原创 Android 利用 Glide 获取图片真正的宽高

前言有时候需要获取网络图片的宽高来设置图片显示的大小,很多人会直接利用Glide的加载监听去拿图片的宽高,但是这样拿到的不是图片真正的宽高,而是图片显示在ImageView后的宽高。如下: //获取图片显示在ImageView后的宽高 Glide.with(this) .load(imgUrl) ...

2017-08-02 20:33:10 833

原创 Android使用友盟集成QQ、微信、微博等第三方登录

前言最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的。为了统一使用友盟的全家桶,这里三方分享和登录也就选择了友盟。这里记录一下完整的集成与使用流程。1、申请友盟Appkey直接到友盟官网申请即可。一般都不用自己去申请,跟项目经理要即可。 (我这里的Demo为了方便就直接用友盟Demo里面提供的Appkey,但是创建的项目包名也要和友盟一样。真实项

2017-07-16 20:54:59 13013 8

原创 Android使用友盟集成QQ、微信、微博等第三方分享

前言最近项目需要加入第三方分享和登录功能,之前其他项目的第三方分享和登录一直都使用ShareSDK实现的。为了统一使用友盟的全家桶,这里三方分享和登录也就选择了友盟。这里记录一下完整的集成与使用流程。1、申请友盟Appkey直接到友盟官网申请即可。一般都不用自己去申请,跟项目经理要即可。 (我这里的Demo为了方便就直接用友盟Demo里面提供的Appkey,但是创建的项目包名也要和友盟一样。真实项

2017-07-16 20:45:12 6042

原创 热修复框架Tinker最完整讲解(03)——使用Tinker常见问题

前言该系列第一篇文章 热修复框架Tinker最完整讲解(01)——集成之路 主要讲了tinker的集成,第二篇文章热修复框架Tinker最完整讲解(02)——加入Walle多渠道打包主要讲了Tinker与Walle多渠道打包在项目中的使用。这篇文章主要讲讲真实项目中使用Tinker的常见问题。tinkerId应该如何选择?tinkerId主要作用是区分当前打出的补丁包是基于哪个版本的apk,也就是说

2017-07-09 23:36:13 5291

原创 热修复框架Tinker最完整讲解(02)——加入Walle多渠道打包

转载请注明出处:http://blog.csdn.net/Alpha58/article/details/74906630前言上一篇文章 热修复框架Tinker最完整讲解(01)——集成之路 已经介绍我们的项目渠道包有20个,并且我们多渠道打包是采用productFlavors实现的。但是这种多渠道打包会造成20个渠道包的热更新就需要20个补丁,这样肯定是不合理的。那怎样才能实现20个渠道包只需要一

2017-07-09 22:20:00 1622

原创 热修复框架Tinker最完整讲解(01)——集成之路

转载请注明出处:http://blog.csdn.net/alpha58/article/details/74854680前言上个月我们的产品又更新了一个版本,当一个测试把产品上传了十几个应用市场的时候,另外一个测试突然测出一个重要bug。项目经理就说把全部渠道上传的先退回来,重新改好bug再发布。这时候我们就苦逼了,又要走一遍 签名打包->加固->签名->上传应用市场的流程。要知道我们的渠道有接近

2017-07-08 23:45:13 6355

原创 Scrollview嵌套百度地图MapView导致滑动有黑边或者阴影问题

问题项目中需求经常会出现Scrollview嵌套百度地图MapView,如下: 但是这样嵌套会出现Scrollview滑动的时候百度地图周边有黑边或者阴影 <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:sc

2017-06-05 23:35:41 2409 5

原创 svn提交代码的时候提示Please execute the 'Cleanup' command

问题修改了代码,按往常一样提交代码,突然就报了如下错误: Please execute the ‘Cleanup’ command 。如图: 解决方法一:有些人说照着上图提示,选中项目-右键-tortoiseSVN-clean up即可解决问题。但我并没有解决问题,我用的是第二种。 方法二:重新从仓库checkout一个项目下来,然后就有一个.svn文件夹,替换刚刚那个提交不上去的文件夹中的.

2017-06-02 22:57:39 33875

原创 面试时最常问到的Handler消息机制源码详解

前言辞职后,最近又开始加入找工作的大军中了。不得不说今年找工作确实比以前难了。从几个朋友说他们公司快倒闭的情况也验证了这一点。最近面了2家,竟然都问到了Handler消息机制,虽然以前看过源码,但是很久没看,也忘得差不多了,讲的不是很让面试官满意,所以这里自己干脆就再总结一遍写篇博客好了。正确阅读源码的姿势有些人阅读源码是力求每行代码都要读懂,我个人感觉这个方法是错误的。正确的方法是应该按平时你使用

2017-05-07 13:50:02 2698

原创 最全加快Android Studio的编译速度

前言一开始公司的电脑运行Android Studio的项目那叫一个慢呀! 每次都要2-5分钟。但是电脑的内存又是8G,CPU是I7的,按道理不应该这么慢呀。后来我实在不能忍受了, 经过一番折腾,终于将运行速度提升到10-30秒以内。下面总结下几种方法。1,加大分配的内存打开Android Studio的安装目录,找到下面的文件进行修改,如图: bin\studio64.exe.vmoptions2

2017-04-21 14:51:47 7610

原创 Android Butterknife 8.5.1 最新使用详解

转载请注明出处:http://blog.csdn.net/Alpha58/article/details/66473277前言以前我们会在代码中写很多findViewById以及setOnClickListener等代码,不仅写起来麻烦,看起来也不整洁。现在我们用View注入框架ButterKnife就能解决这些问题。ButterKnife的github地址:https://git...

2017-03-26 12:16:15 1153 3

空空如也

空空如也

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

TA关注的人

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