android开发大揭秘
android开发大揭秘包含了从IDE环境到开发中遇到的各种问题,各种自定义组件,各种炫酷效果等开发,真正做到从入门到精通的转变。
xiangzhihong8
著有《React Native移动开发实战》、《Kotlin入门与实战》、《Weex跨平台开发与实战》、《React Native开发进阶》和《Flutter跨平台开发实战》,正努力完成《Android应用架构实战》
-
原创 Android11新特性
前不久,谷歌发布了Android 11 的预览版,从开发者预览版我们可以了解到,Android 11增强了对用户隐私的保护,提供了很多吸引用户的新特性,并且可以更好地支持可折叠设备和 Vulkan 扩展程序等等。谷歌官方的资料显示,Android 11 开发者预览版计划从 2020 年 2 月启动,到向 AOSP 和 OEM 提供最终的公开版本时结束,最终版本预计将于 2020 年第 3 季度发...2020-05-07 17:59:115587
0
-
原创 Android 8.0以上系统应用如何保活
最近在做一个埋点的sdk,由于埋点是分批上传的,不是每次都上传,所以会有个进程保活的机制,这也是自研推送的实现技术之一:如何保证Android进程的存活。对于Android来说,保活主要有以下一些方法:开启前台Service(效果好,推荐)Service中循环播放一段无声音频(效果较好,但耗电量高,谨慎使用)双进程守护(Android 5.0前有效)JobScheduler(Andro...2019-08-22 15:45:093549
8
-
原创 Android刘海屏、水滴屏全面屏适配
现在,市面上的屏幕尺寸和全面屏方案五花八门。这里我使用了小米的图来说明:上述两种屏幕都可以统称为刘海屏,不过对于右侧较小的刘海,业界一般称为水滴屏或美人尖。为便于说明,后文提到的「刘海屏」「刘海区」都同时指代上图两种屏幕。刘海屏、水滴屏全面屏适配细节当我们在谈屏幕适配时,我们具体谈什么呢?适应更长的屏幕防止内容被刘海遮挡其中第一点是所有应用都需要适配的,对应下文的声明最大长宽比,...2019-06-09 13:40:5711316
1
-
原创 Android适配多摄像头
从 Android P 开始,Android将添加对逻辑多摄像头和 USB 摄像头的支持。这意味着,除了前后两个摄像头外,Android手机的前置或者后置有两个及两个以上的摄像头。对此,对于Android开发者来说,就需要完成这方面的适配工作。多摄像头一台设备有多个摄像头没什么新鲜的,但是直到现在,Android 设备仍然最多只有前后两个摄像头。而新出的Android P系统将打破这一常规,今...2018-09-28 10:50:526682
0
-
原创 面向切面编程AspectJ在Android埋点的实践
在项目开发中,对 App 客户端重构后,发现用于统计用户行为的友盟统计代码和用户行为日志记录代码分散在各业务模块中,比如在某个模块,要想实现对用户的行为一和行为二进行统计,因此按照OOP面向对象编程思想,就需要把友盟统计的代码以强依赖的形式写入相应的模块中,这样会造成项目业务逻辑混乱,并且不利于对外提供SDK。因此,通过研究发现,在Android项目中,可以使用AOP面向切面编程思想,把项目中所有...2018-07-18 11:48:59938
0
-
原创 Android热修复Tinker接入实战
自2016年底Android Studio3.0版本退出以来,Android提出了InstantRun热修复方案,基于这种机制,各种热修复框架竞相涌现,国内的软件大厂纷纷开发了自己的热修复框架。对于热修复的更多介绍大家可以通过下面的文章来了解:全面了解Android热修复技术。 这些框架主要支持的功能如下: 这张图漏掉了阿里的Spofix,该框架可以及时更新,由于目前大多数的热修复框架...2018-05-04 18:02:38779
0
-
原创 Android D8,下一代 dex 编译器
Google 在刚刚发布的 Android Studio 3.1 新版本中,将 D8 作为新版本开发工具默认的 Dex 编译器。那么什么是 D8 呢,D8 与之前的 Dex 打包器有何区别呢?大家知道,安卓项目在打包生成 Apk 安装文件的过程中,最重要的一步便是将我们所写的 java 代码编译过成 .class 字节文件再打包转化成一个或多个 .dex 格式的代码压缩文件。这种 dex 文件...2018-05-03 22:05:542321
0
-
原创 Android 网络请求OkHttp3流程分析
基本概念首先从使用出发,其次再结合源码来分析OkHttp3的内部实现的,建议大家下载 OkHttp 源码跟着本文,过一遍源码。首先来看一下OkHttp3的请求代码。OkHttpClient client = new OkHttpClient();String run(String url) throws IOException { Request request = new R...2018-04-27 22:19:36799
0
-
原创 Android 控件之TextureView
TextureView在4.0(API level 14)中引入的,它可以将内容流直接投影到View中,可以用于实现Live preview等功能。和SurfaceView不同,它不会在WMS中单独创建窗口,而是作为View hierachy中的一个普通View,因此可以和其它普通View一样进行移动,旋转,缩放,动画等变化。例如,将TextureView设置成半透明。值得注意的是TextureV...2018-04-24 11:11:591358
0
-
转载 再谈Android Binder跨进程通信原理
在谈Android的跨进程通信问题上时,总会问到Android的IPC机制,是指两个进程之间进行数据交换的过程。按操作系统的中的描述,线程是CPU调度最小的单元,同时线程是一种有限的系统资源,而进程是指一个执行单元,在PC和移动设备上指一个程序或者一个应用。在谈IPC机制时候核心的就是Binder的运作原理,本文将从以下几点来讲Android额Binder原理。 什么是Binder...2018-04-13 22:32:24783
1
-
原创 Android KTX举例
早在今年的1月份,就有报道称谷歌2018年I/O大会将于5月8日至5月10日在加利福尼亚山景城的海岸线露天剧场举行。近日,谷歌公布了本次开发者大会的具体日程安排。在具体细节上,本次开发者大会将围绕Android、增强现实(AR)与虚拟现实(VR)三个主题来展开。 在本次开发者大会的首日,会议将从Google Play、Android即时应用、Android KTX,Android Kotlin开...2018-03-03 14:13:02841
0
-
原创 Android9.0新特性曝光,你准备好了吗
Android9.0最早出现在2018年1月25日的谷歌官网上,初步代号已经确定为“Pistachio Ice Cream”(开心果冰淇淋),不过按照Google的惯例,如此长的三个单词代号,通常都只会在安卓新版本开发初期使用,后期会更换为更简单的单个或双个单词代号。那么Android9.0究竟带来了哪些新的特性呢,让我们先来一探究竟。刘海设计安卓P 9.0的一个核心变化就是会支持类似...2018-02-28 10:06:1511669
0
-
原创 Android滤镜效果实现及原理分析
Android在处理图片时,最常使用到的数据结构是位图(Bitmap),它包含了一张图片所有的数据。整个图片都是由点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。而颜色值——ARGB,分别对应着透明度、红、绿、蓝这四个通道分量,他们共同决定了每个像素点显示的颜色。下图是ARGB的模型图。 色彩矩阵分析在Android中,系统使用一个颜色矩阵-Col2018-01-20 11:49:266654
0
-
原创 仿微信语音聊天
如上图,是常见的仿微信的聊天程序2017-12-08 11:05:067845
6
-
原创 Android仿拼多多拼团堆叠头像
序言做电商的都知道,作为商品的一种售卖方式,拼团是是提供商品售卖的一种及时有效的方式,而在拼团市场中,拼多多无疑是做的最好的一家。于是,研究拼多多的售卖方式之后,我们的产品也开始了这方面的开发。本文将要给大家介绍的就是通过自定义的方式实现堆叠头像,这种效果在直播app中非常常见。下面是部分效果: 通过分析,上面是一个使用ViewPager实现的一个可以左右无线循环的Galllery,相关实现可以访2017-10-19 11:16:068347
0
-
原创 阿里SopHix热修复框架接入
2015年以来,Android开发领域里对热修复技术的讨论和分享越来越多,同时也出现了一些不同的解决方案,如QQ空间补丁方案、阿里AndFix以及微信Tinker(Bugly sdk也集成Tikner热更新)和阿里最新出品Sophix.它们在原理各有不同,适用场景各异。不过从技术上来说多数热修复框架是基于ClassLoader加载机制。下面是常见热修复框架的比较。 开通热修复服务读者可以打开Sop2017-08-25 10:24:521915
0
-
原创 Android优化之Hardware Layer
项目中越来越多的动画,越来越多的效果导致了应用性能越来越低。该如何提升。 简介在View播放动画的过程中每一帧都需要被重绘。如果使用view layers,就不用每帧都去重绘,因为View渲染一旦离开屏幕缓冲区就可以被重用。而且,hardware layers会在GPU上缓存,这样就会让一些动画过程中的操作变得更快。通过hardware layers可以快速的渲染一些简单的转变(位移、选中、缩放2017-08-21 14:05:131154
0
-
原创 android 接入Fabric Crashlytics信息系统
客户端在迭代过程中,免不了会发生很多的问题,而收集问题成了很重要的一步。现在市面上关于客户端Crash收集的系统也很多,比如友盟,TalkingData,Crashlytics等等工具。今天给大家介绍的是Fabric。 例如是集成后的效果,是不是很强大。Fabric用法注册Fabric账号 到fabric官网注册账号, fabric官网: https://get.fabric.io 或 ww2017-08-08 20:49:416155
2
-
原创 Android侧滑删除另一种实现,SwipeListView补充
前不久在在做聊天删除功能的时候使用SwipeListView进行侧滑删除有一点小问题,因为SwipeListView嵌套在Fragment内的时候,会报一个转换错误,原因是SwipeListView是基于ListView实现的SwipeListView。 针对这个问题,首先想到的就是自定义View。首先看一下实现的效果。 自定义侧滑实现实现的思路很简单,通过对onTouchEvent方法进行重写2017-07-04 19:29:39945
0
-
原创 Android Studio配置Kotlin环境
在上周末召开的Google IO大会上,Google将Kotlin作为Android所支持的开发语言,并宣布以后会大力支持Kotlin,可以说Kotlin就是ios的swift。更多资料请查看:Google IO大会1,安装Kotlin插件打开Settings面板,找到Plugins选项,点击Browse repositories(浏览仓库),输入“Kotlin”查找,然后安装即可。 2,配置Ko2017-05-22 18:16:451610
0
-
原创 Google IO 2017为我们带来了什么
谷歌I/O大会是Google一年一度的开发者大会,通常在大会上,Google会在大会上发布一些最近的软硬件系统,给开发者指明下一年的技术方向。今年是Google IO大会的第十个年头,大会回到了加州山景城的海岸线圆形剧场。今年的Google IO大会和往年的有所不同,今年Google在大会上专门大篇幅介绍了自己在人工智能领域推出的最新项目和最新进展。可以说这次大会人工智能和VR成为未来Google2017-05-19 09:53:202113
0
-
原创 Google protocol buffer简介
Google Protocol BufferGoogle Protocol Buffer又简称Protobuf,它是一种很高效的结构化数据存储格式,一般用于结构化数据的串行化,即我们常说的数据序列化。这种序列化的协议非常轻便高效,而且是跨平台的,目前已支持多种主流语言。通过这种方式序列化得到的二进制流数据比传统的XML, JSON等方式的结果都占用更小的空间,并且其解析效率也更高,非常适合用于通讯协2017-04-29 10:09:532877
0
-
原创 Android App瘦身实战
随着业务的快速迭代增长,不断引入新的业务逻辑代码、图片资源和第三方SDK等,很多app都面临一个一个结果,app越来越大,甚至很多无用的代码,包体积的增大带来了很多问题,诸如app启动更慢,代码维护越来越困难。公司业务发展到一定程度之后,重构,代码优化,app瘦身成为不得不做的一个任务。这里以xx外卖app为例给大家讲讲app瘦身过程中常用的几种方法(也都是网上老生常谈的)。apk文件构成我们可以用2017-04-21 20:43:204133
9
-
原创 Android实现仿支付宝流水
今天给大家讲的是如何自定义下拉的ListView实现支付宝账单的效果,月份是需要悬浮的,然后没一个月归为一类,先看一个效果图吧。场景:后台下发的数据就是一个List<对象>,考虑到实际情况,还需要做下拉的分页操作,所以,基于上面的情况,我们需要自定义一个可以拦截月份的view。先定义一个FooterView类。public class ListViewFooter extends LinearLay2017-03-17 16:02:076931
3
-
原创 android 自定义Lint
概述Android Lint是Google提供给Android开发者的静态代码检查工具。使用Lint对Android工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正。为什么要自定义我们在实际使用Lint中遇到了以下问题:原生Lint无法满足我们团队特有的需求,例如:编码规范。原生Lint存在一些检测缺陷或者缺少一些我们认为有必要的检测。对于正式发布包来说,debug和verb2017-03-14 12:40:033183
2
-
原创 Android通信安全之HTTPS
HttpsHTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL2017-03-07 22:03:102002
0
-
原创 Android 配置Freeline教程
Freeline简介Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,2017-03-05 18:14:352537
0
-
原创 ConstraintLayout约束控件详解
简介在Google IO大会中不仅仅带来了Android Studio 2.2预览版,同时带给我们一个依赖约束控件–ConstraintLayout。一种构建于弹性Constraints(约束)系统的新型Android Layout,最终你将会在Android Studio中编辑与构建一个相对复杂的Layout。简单来说,她是相对布局的升级版本,但是区别与相对布局更加强调约束。何为约束,即控件之间的2017-02-25 16:50:153774
0
-
原创 Google VR技术大揭秘
VR虚拟现实(Virtual Reality)技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真, 使用户沉浸到该环境中。附:WikipediaVR产品Google VR Oculus HTC ViviGoogle VR for AndroidGoogle VR SDK同时支持DayDream和CardB2017-02-25 10:42:258247
1
-
原创 Android ormLite复杂条件查询
OrmLite要继承一个OrmLiteSqliteOpenHelper,通过OrmLiteSqliteOpenHelper实例的getDao方法可以获取一个Dao类,下边代码中mDao是Dao的实例,用来进行各种数据库操作。Dao类其中有个queryBuilder()方法可以得到builder来构造复杂查询语句。假设有Person实体,对应数据库t_person表。通过该表来讲下述各种查询方法。Id2017-02-17 18:58:303216
1
-
原创 关于Android性能优化的若干方案
概述通常项目比较大的APP都面临着如下性能问题,APP启动慢、界面跳转慢、事件相应慢、滑动和动画卡顿、展现内容慢等,有的公司处理的很好,有的还有很大的优化空间,对于性能优化,怎么去做,我总结了一下性能优化如何入手,Android性能优化这个系列目前已经完成11篇,涉及到常用内存优化工具的使用,比如Memory Monitor、MAT、Allaction Tracing、TraceView 等,也涉及2017-02-16 23:26:385100
2
-
原创 Android资源混淆打包方案
概述我们知道在Android的打包过程中,有一个步骤是压缩,也是为了减少apk包的大小,其中在压缩的过程中,很大一部分就是对资源的压缩,除了系统的压缩方案之外,我们今天讲另外两种压缩方案:微信方案和美团方案 微信的方案是通过修改aapt在处理资源文件相关的源码达到资源文件的替换;而后者指通过直接修改resources.arsc文件达到资源文件混淆的目的。相比之下,微信的方案更加优秀。微信资源混淆方2017-02-11 22:59:406574
0
-
原创 Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存库的联系与区别
前言Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片比较。在Android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里介绍一下Universal-Image-Loader,android-Volley,Picasso、2017-01-24 22:05:101879
0
-
原创 Android仿京东、天猫商品详情页
前言前面在介绍控件TabLayout控件和CoordinatorLayout使用的时候说了下实现京东、天猫详情页面的效果,今天要说的是优化版,是我们线上实现的效果,首先烂看一张效果: 项目结构分析首先我们来分析一下要实现上面的效果,我们需要怎么做。顶部是一个可以滑动切换Tab,可以用ViewPager+Fragment实现,也可以使用系统的TabLayout控件实现;而下面的 View是一个可2017-01-22 16:25:3324981
5
-
原创 ExpandableListView实现商品列表折叠
简介在日常的开发中,有可能会遇到需要一些可以展开的列表,比如QQ的好友列表,电商的购物车折叠显示。Android也给我们提供ExpandableListView类,完美实现这样类似的需求, 极大的方便了我们开发。结合之前的项目我们做一个简单的讲解。 首先懒看一下最终的实现效果: 使用到的第三方框架: AndroidAutoLayout 屏幕适配框架代码首先是布局需要用一个Expandabl2017-01-18 22:06:523216
2
-
原创 Android仿网易云音乐播放界面
概述网易云音乐是一款非常优秀的音乐播放器,尤其是播放界面,使用唱盘机风格,显得格外古典优雅。这里抛砖引玉,原文地址:http://www.jianshu.com/p/cb54990219d9 首先来看一下网易的播放效果。 要实现上面的功能,我们需要对界面进行一个拆分,拆分后大概包含如下结构:主界面布局设计唱盘布局设计动态布局唱盘控件DiscView对外接口及方法音乐状态控制时序图2017-01-11 23:13:3918308
5
-
原创 android 仿音悦台页面交互效果
概述新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,然后在底部悬浮一个小框,还可以左右拖动,然后回弹的时候也会有相应的效果,这种交互效果在头条视频和一些专注于视频的app也是很常见的。 前几天看网友有仿这个 效果,觉得不错,现在分享出来,代码可以再优化,这里的播放器使用的是B站的ijkplayer,先上两张动图。 当图片到达底部后,左右拖动 实现的思路首先,要是拖动视图2017-01-05 22:01:3619321
4
-
原创 Android Studio中 .gitignore配置
前言在用 Git 进行代码管理的过程中,我们会发现后添加进去的 .gitignore 文件,或者是中途修改了.gitignore 文件后,.gitignore 文件并没有生效,需要清楚.track缓存和强制.track来解决问题。如果我们在第一次提交的时候,忘记添加 .gitignore 文件或者在首次添加了 .gitignore 文件之后,又对 .gitignore 文件进行了修改,你会发现这两种2017-01-04 12:43:0511149
1
-
原创 android 二维码简化,实现仿qq扫描效果
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,2014-01-07 23:51:062807
0
-
原创 android混淆那些坑
ProGuard简介在最新的Android Studio 2.2.2版本创建的Android工程中,module中的build.gradle有如下一段配置。这里的minifyEnabled即用来控制在编译时是否需要启用Proguard,将minifyEnabled修改为true,即表示启用Proguard。’proguard-android.txt’是Android SDK中自带的一个基本Progu2016-12-21 20:08:1110967
0