- 博客(9)
- 收藏
- 关注
原创 Android Hook式插件化教程(一)Hook从入门到精通
Android Hook式插件化教程(一)Hook从入门到精通1.hook的定义hook,顾名思义就是钩子。而在我们开发中通俗来讲就是劫持,就是某段SDK源码逻辑执行的过程中,通过代码手段劫持拦截执行该逻辑,加入自己的代码逻辑。2hook的价值hook是中级开发通往高级开发的必经之路。如果把谷歌比喻成 安卓的造物主,那么安卓SDK源码里面就包含了万事万物的本源。中级开发者,只在利用万事...
2019-10-28 23:28:11 5896 3
原创 Android OpenGL基础知识之正交投影和透视投影的理解
OpenGL 在观察空间转换到裁剪空间时,需要用到投影矩阵。而在着色器脚本中,也需要提供一个投影矩阵给对应的 u_ProjectionMatrix变量。对于初学者来说,正交投影矩阵和透视投影矩阵比较难以理解,通过本文来带你彻底理解一下这两个投影矩阵。首先要在程序里绑定到对应的变量,然后再给变量赋值。 // 绑定到着色器脚本中的对应变量private int uProMatrixLoca...
2019-07-08 23:34:23 2234
原创 Android 终极屏幕适配方案
Android 屏幕适配问题的由来我们都知道 Android 碎片化问题令人痛心疾首,而造成的屏幕差异正式碎片化的问题中心。屏幕的尺寸从3英寸到10英寸,分辨率从320到1920应有尽有,这对我们ui适配问题造成很大的困难。对于屏幕碎片化问题,Android 官方推荐使用dp作为尺寸单位来适配ui,因此我们很有必要清楚px,dp,dpi,ppi,density这些概念。定义概念转...
2019-03-30 20:03:08 365
原创 JVM的垃圾回收策略
1.标记-清除算法:算法分两个阶段:标记和清除阶段,首先会标记出所有需要回收的对象,在标记完后统一回收所有被标记的对象,它是最基础的垃圾回收算法。因为后续的垃圾收集算法主要基于这种思路对其不足进行改进。它的不足有两个:一个是效率问题,标记和清除两个过程效率都不高,另一个是空间问题,标记清除后产生大量的不连续的空间碎片,太多的碎片导致以后在程序运行过程分配较大的对象时候因为找不到足够大的内存而不得不...
2018-07-08 19:53:08 774
原创 Android图片处理之加载大图策略
在Android开发中常常遇到加载大图的需求,而手机分配的内存有限,所以如果直接加载到手机经常会oom,因此我们需要解决这类问题。一 加载缩略图简单介绍一下BitmapFactory,它是android加载图片的工厂,里面有一个常用的内部类options,这个类很重要,一般对Bitmap压缩就是使用这个类,这个类可以认为是对图片解码时做的一些设置,具体请看官方文档。这里简单的介绍一些常用的属性。1...
2018-07-01 16:33:56 1067
原创 android多线程并发协调semaphore机制
在项目开发过程中我们难免用到多线程机制,但不可否认的是如果对公共资源共同访问时候没有处理好线程同步的话很容易出现非线程安全的问题,会带来不可预知的错误,在java中进行线程同步的话一般都用wait和notify机制,但个人认为有点难控制,其实我们用java提供的信号量semaphore机制来处理线程同步的问题,接下来请看看代码:
2016-04-20 17:45:23 1673
原创 android中ListView嵌套GridView图片显示的问题
在android开发中我们常常会在ListView中嵌套GridView图片显示,但效果总是不如人意,因为我们不能很好的控制gridView中图片尺寸显示的问题,接下来就让我来讲讲如何设置图片显示位置和尺寸的方法,让大家借鉴借鉴,直接上代码:public class MainActivity extends Activity { ListView listview;
2016-04-20 11:44:07 2208
原创 android中自定义控件之TitleBar实现
在Android项目开发中我们常常会用到自定义的标题栏,可是Android系统中自带的ActionBar太难看了,因此我们通常会自己写一个控件来实现TitelBar的功能,接下来让我来说说如何实现这一个过程吧,直接上代码:public class TitleBar extends LinearLayout { private TextView titleName; private Te
2016-04-20 10:39:05 996
原创 android中HandlerThread的原理和用法讲解
android中HandlerThread继承了Thread,它是一种可以使用Handler的Thread,它的实现原理就是在run方法的内部用Looper.prepare()创建消息队列,然后通过Looper.loop()开启消息循环,这样的话我们就能用在HandlerThread中创建Handler来处理消息了,下面请看HandlerThread源代码中的run方法的实现:{CSDN:
2016-04-18 17:21:28 577
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人