
Android
文章平均质量分 94
IT烂笔头
这个作者很懒,什么都没留下…
展开
-
Leakcanary原理解析以及换肤框架skin的原理分析
一、错误现场 java.lang.ClassCastException: androidx.appcompat.widget.TintContextWrapper cannot be cast to android.app.Activity at leakcanary.internal.navigation.ViewsKt.getActivity(Views.kt:16) at leakcanary.internal.activity.screen.LeaksScreen.onGroupsRe原创 2021-11-18 18:34:18 · 1004 阅读 · 0 评论 -
Android中如何计算图片占用的实际内存大小?
当我们看完本篇文章,你应该可以知道:占用的内存,不是说的图片的文件大小 我们可以在运行时去获取 要掌握图片内存大小的计算方法一、如何在运行时获取Bitmap的大小?获取图片实际需要的内存大小public final int getByteCount() { if(mRecycled) { return 0; } return getRowBytes() * getHeight();}图片实际占用的内存大小因为存在一个复用的场景,比如.原创 2020-06-07 17:38:06 · 1400 阅读 · 0 评论 -
ExoPlayer官方中文使用文档
① 前言在这之前笔者使用原生的MediaPlayer、B站开源的IJKVideoView等播放器。知道发现ExoPlayer,这款由YouTube开发的播放器真的是非常强大。对于自定义播放器非常友好,里面讲很多模块抽象成独立的组件可供使用者自行定制,当然官方也提供了一些默认的实现。如果你正在开发视频类功能,强烈推荐你尝试一下ExoPlayer。预备知识DRM:Digital Rights...原创 2019-06-19 19:47:10 · 9405 阅读 · 1 评论 -
Http知道这些,开发Android才算合格!
前言说起HTTP大家再熟悉不过了,无论是大学的课本上还是平时的工作中,几乎每天都要和HTTP打交道。但是,就是这么熟悉的老朋友,你真的是非常了解吗?你能轻而易举就回答出我下面的几个问题吗?① OSI模型分为哪几层?分别是什么作用?② Http协议属于哪一层?与HTTP同一层的协议你还能列举哪些协议?③ 说出5种以上的HTTP请求方法④ HTTPS比HTTP多做了哪些事?是不是看起来非常...原创 2019-04-17 20:02:55 · 246 阅读 · 0 评论 -
聊一聊onMeasure
微信公众号:南京Android部落1今天呢,我们一起来研究下怎么盖房子。(what!?) 同学们,房价这么贵,该自己学学怎么盖房子了。 大家是不是觉得楼主今天跑题啦,咱先别急,接着往下看。有时候我常想,很多技术的实现方式可能都来源于生活,但又高于生活。拿今天要讲的自定义View来说,其实我们在写自定义View的时候,需要去重写系统为我们设计好的一系列方法(如下所示):on...原创 2018-12-03 23:44:07 · 412 阅读 · 0 评论 -
谈一谈Android内存
Android内存及其优化或许,因为开发周期的原因;因为自身知识水平的原因;因为经验的原因;又或者是你接了个烂摊子。我们写出了并不太理想的代码,这都是可以接受的,只要你会去持续优化,这些问题都会得到改善。而有些人是心有余而力不足,“我也想优化,可是怎么去优化呢?”。本篇文章将给你带来一点启示,让你从力不从心到知道怎么去入手优化。一、 为什么需要做内存优化?尽管现在的手机硬件越来越好,手机的R...原创 2018-11-25 13:54:12 · 632 阅读 · 3 评论 -
Android性能优化之布局优化
为什么需要优化布局优化布局不是说优化界面的显示效果更好看、更美观。是指让界面的交互体验更好、更流程。因为手机性能有限,而绘制UI布局是很吃资源的(CPU,GPU)。所以,需要我们写出优美简洁的布局,尽可能的少占资源。我们平时玩游戏的时候,会看到游戏中会显示fps。当fps的值越大游戏越是流畅,当fps接近60的时候再往上也无法感知了。fps是指每秒钟显示的帧数,人眼感觉的平滑的帧数就是在60帧...原创 2018-10-23 22:34:16 · 361 阅读 · 0 评论 -
Mac配置Adb环境变量
① 打开终端,输入:cd Users/wuyanbao/Library/Android/sdk/进入sdk所在的目录。② 输入:ls -an查看当前文件夹有是否有**.bash_profile**文件③ 如果文件已存在,跳过本步骤。否则输入:touch .bash_profile创建**.bash_profile**文件④ 打开.bash_profile文件:open ....原创 2018-10-23 18:28:13 · 2518 阅读 · 0 评论 -
Android热修复原理简述
本文为《2018夯实基础》系列之热修复原理简述作者:Bob一、背景① 为什么会出现热修复技术?大家都是开发,所以应该都知道有一个东西我们永远也避免不了。不错,**Bug!**我们在开发阶段碰到bug那还好,直接解决就是了,大不了让测试多测一轮。可是,如果我们发出去的版本出现线上Bug,那可怎么办?大多数小的公司可能会选择,重新发新的版本去覆盖安装。这种方式成本较高,而且用户一般都比较讨...原创 2018-10-21 21:11:20 · 471 阅读 · 0 评论 -
进阶必备-Android Click事件是如何触发的?
一、背景阅读本篇文章前,假设你已经阅读前一篇文章。由于有同学问到onClick和touch事件的关系,这里就从源码的角度分析下onClick和onLongClick与onTouchEvent事件是怎么关联的。本文将通过View.java、TextView.java、Button.java的源码作为例子分析。二、源码解读首先我们知道View、TextView、Button三者的关系,即:Bu...原创 2018-10-15 19:58:38 · 3344 阅读 · 0 评论 -
ConstraintLayout的基本用法及优点
为什么推荐使用ConstraintLayoutConstraintLayout(约束布局)在2016年的Google I/O大会上就推出来了,经历这两年的迭代,功能已经非常的成熟了。一次偶然的机会,在项目中尝试了使用约束布局,从此被它的功能所深深折服。它能很轻易的将你从使用层层的嵌套去实现复杂的布局中解放出来。使用ConstraintLayout后基本可以抛弃LinearLayout和Relat...原创 2018-10-14 14:58:17 · 2394 阅读 · 0 评论 -
进阶必备-Android事件分发机制
一、简介或许你会问,“为什么我一定要知道View的事件分发机制?”。因为我们在实际开发的过程中,经常会遇到多层的View互相嵌套以后,对某一个View进行滑动的时候,特别不灵敏,甚至于没法滑动。这种滑动冲突的解决需要我们清楚的掌握View的事件分发机制。那下面我们详细的讲解下View的整个事件机制。Android将View的事件封装到MotionEvent这个类中,这也是监听touch事件中回...原创 2018-10-14 14:48:52 · 888 阅读 · 0 评论 -
AOP思想在Android项目中的应用
看完本篇文章你将学到什么?1.基本了解AOP的编程思想,以及如何在Android中使用AOP的思想2.借助AspectJ用AOP的思想实现埋点逻辑3.借助AspectJ用AOP的思想实现屏蔽快速点击事件的处理什么是AOPAOP,字面翻译为面向切面编程。它是一种编程思想,不是什么新技术。可以这么理解,在Android开发过程中,我们经常会在我们的具体业务代码中加入全局性、系统性的...原创 2018-09-19 19:19:50 · 752 阅读 · 0 评论 -
简单讲下postInvalidate和Invalidate的区别
invalidate这里我们从源码中去简单扒一下View的invalidate()的方法: 1/** 2*Invalidatethewholeview.Iftheviewisvisible, 3*{@link#onDraw(android.graphics.Canvas)}willbecalledatsomepoin...原创 2018-09-13 20:26:26 · 7918 阅读 · 0 评论 -
Android中Looper的架构设计与赏析
0.你将获得什么?看完本篇文章,你将搞清楚以下所有的关于Handler相关的任何问题。如果你以后在面试中碰到Handler相关的问题,相信你会给面试官眼前一亮的感觉。Handler整个消息处理的架构是什么样的? 什么是ThreadLocal?Looper?MessageQueue? Handler的消息处理是怎么和线程关联的? 在子线程中处理消息时为什么必须使用Looper.pr...原创 2018-09-02 22:44:23 · 10012 阅读 · 5 评论 -
使用IntentService的正确姿势
在开发安卓应用的过程中,我们经常需要这样的场景:希望APP在不影响当前用户的操作的前提下,在后台默默的做一些任务。比如:静默的下载文件或者上传数据。我们一般会考虑到新启一个线程去做异步的操作。不错,新启线程确实可以做到。那为啥还需要IntentService呢?. 1.优点本质上IntentService也是开了一个线程,但是IntentService是继承自Service的,所以根...原创 2018-08-18 22:08:22 · 10086 阅读 · 0 评论 -
如何优雅的从网络加载点九图?
如何处理从网络加载点九的图 我们开发Android应用的时候,当需要适配可拉伸的背景,我们会使用.9.png的图。通常我们是放在res目录下的,这种方式我们很容易做到。但是如果需要我们去网络获取.9的图该如何做呢?1 背景1.1 什么是点九图其实点九图和我们用的其他格式的图没有什么大的不同,只不过是在图片的四周各增加了1px的纯黑(#FF000000)的线进行标记。例如:...原创 2018-07-28 09:07:58 · 2925 阅读 · 0 评论 -
Android功能快速上线神器!
Android功能快速上线神器!推荐一款开源的轻应用开发框架RapidView:[https://github.com/Tencent/RapidView)用过的都说好,神器!简介RapidView是一套用于开发Android客户端界面、逻辑以及功能的开发组件。布局文件(XML)及逻辑文件(Lua)可以运行时执行,主要用以解决Android客户端界面、逻辑快速更新以及快速开发的诉...原创 2018-08-04 09:00:46 · 810 阅读 · 0 评论