自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Kotlin与Java的相互调用详解

文章目录一、Kotlin 调 Java1、访问属性2、将 Kotlin 中是关键字的 Java 标识符进行转义3、空安全与平台类型4、已映射类型5、Java数组6、Java 可变参数7、受检异常8、对象方法8-1、wait()/notify()8-2、getClass(),获取类的Class对象8-3、clone()8-4、finalize()9、SAM 转换9-1、SAM转换详解9-2、 SAM 转换的歧义消除9-3、Kotlin函数式接口9-4、SAM转换限制10、在Kotlin中使用JNI二、Java

2021-03-24 10:07:16 6667

原创 LeakCanary是如何定位内存泄漏的,看完就懂了

文章目录一、LeakCanary的简单使用二、LeakCanary原理简单分析:2-1、LeakCanary原理简述2-2、ActivityLifecycleCallbacks使用2-2-1、ActivityLifecycleCallbacks的使用:2-2-2、ActivityLifecycleCallbacks源码分析:三、LeakCanary源码分析:3-1、LeakCanary#install()3-1-1、第一步,调用LeakCanary的refWatcher方法:3-1-2、AndroidRef

2020-09-07 15:31:03 1952 1

原创 Android 内存优化实操,定位内存问题

文章目录一、内存泄漏定位1、观察法:2、使用内存分析工具2-1、收集内存快照2-2、hprof文件转换2-3、Mat分析内存二、内存抖动三、优化内存空间1、减少不必要的内存开销2、 使用最优的数据类型3、使用 IntDef和StringDef 替代枚举类型4、图片内存优化5、图片放置优化6、在App可用内存过低时主动释放内存7、item被回收不可见时释放掉对图片的引用四、总结1、内存泄漏2、内存抖动3、使用轻量级的数据结构一、内存泄漏定位我们都知道,内存泄漏的根本原因就是:堆内存中的长生命周期的对象持有

2020-08-04 19:24:02 2544

原创 Android 从内存模型深究内存优化本质

文章目录一、类加载机制1. ClassLoader的类型2. ClassLoader的加载过程二、Java虚拟机的运行时内存模型1. 程序计数器PC2. 虚拟机栈3. 本地方法栈4. 方法区5. 常量池:6. Java堆三、垃圾标记算法1、引用计数算法:2、根搜索算法3、Java中的引用类型四、垃圾收集算法1. 标记-清除算法2.复制算法3. 标记压缩算法4. 分代收集算法五、Android 虚拟机1. Android使用的虚拟机2. 引起GC的原因3.垃圾收集六、常见的内存问题七、常见的内存泄漏场景在A

2020-07-28 20:49:03 907 1

原创 系统服务管理者:ServiceManager进程

概述framework/native/cmds/servicemanager/service_manager.cbinder.ckernel/drivers/ (不同Linux分支路径略有不同)staging/android/binder.candroid/binder.cservice_manager进程是由是由init进程,通过解析init.rc文件来启动的进程。s...

2019-06-26 14:36:34 7499 2

原创 设置EditText输入的文字全部变成大写或小写方案总结

1.通过setFilters方法,设置输入变大写edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});2.通过setTransformationMethod方法设置输入变大写public class AllCapTransformationMethod extends ReplacementTransforma...

2019-06-26 14:34:57 912

原创 捕获Android文本中链接点击事件

TextView显示Html超链接常规用法 TextView myTextView = (TextView)findViewById(R.id.myTextView); String url = "<a href=\"http://baidu.com\">百度</a>"; myTextView.setText(Html.fromHtml(url)); // ...

2019-06-26 14:33:58 672

原创 Toolbar、AppBarLayout、CollapsingToolbarLayout和CoordinatorLayout使用填坑

1.AppBarLayout禁止滑动当内容没有填充整个屏幕的时候,我们给RecyclerView的高度设置成wrap_content,这样当滑动RecyclerView的时候,AppBarLayout是不会跟着滑动的,但是我们滑动AppBarLayout的时候,还是可以发现AppBarLayout会被收起,如果不想它被收起,则可以这样做:给AppBarLayout设置Behavior:...

2019-06-26 14:32:51 624

原创 CoordinatorLayout源码分析

一、Behavior 的初始化Behavior 是 CoordinatorLayout 里面的一个静态类。重写里面的若干方法,我们可以实现各种炫酷的效果,比如仿 UC 主页,仿新浪微博,仿 QQ 浏览器主页,仿知乎首页等效果。Behavior是CoordinatorLayout与其子View进行通信的桥梁,如:事件拦截。Behavior是CoordinatorLayout的子View通过Lay...

2019-06-26 14:29:27 318

原创 Path类常用API介绍

/** * The Path class encapsulates compound (multiple contour) geometric paths consisting of straight line segments, quadratic curves, and cubic curves. * It can be drawn with canvas.drawPath(path, pa

2017-10-25 23:25:15 1668

原创 Canvas的基本使用——常用的Api方法(2):clip*裁剪方法

Canvas的裁剪所用到的方法主要是clipRect,clipPath,clipRegion三类方法。clipRect方法:clipRect方法提供了七个重载的方法实现,如: 参数介绍如下:rect:Rect对象,用于定义裁剪区的范围,Rect和RectF功能类似,精度和提供的方法不同而已 left:矩形裁剪区的左边位置 top:矩形裁剪区的上边位置 right:矩形裁剪区的右边位置 b

2017-10-19 23:33:01 1075

原创 Canvas的基本使用——常用的Api方法介绍(二)

在上一篇博客中,介绍了Canvas常用的绘制方法,在这篇博客中,将继续对Canvas的常用方法进行介绍。Canvas的save方法:/*** 保存当前画布的矩阵Matrix信息和切割clip信息,并返回一个代表当前状态的一个状态值,通过这个状态值,我们可以在之后把画布恢复到这个状态,保证了绘制不会出错和紊乱。* @return 返回状态值*/public int save();/***

2017-10-12 20:29:47 410

原创 Canvas的drawText方法详解

通过Canvas的一些方法画圆,画矩形或者图像的时候,我们都需要有有一个定位坐标,即把圆或者矩形,画在画布上的上面位置,如:画圆:需要确定圆心,圆心确定了,圆的位置也就确定了。画矩形:需要确定左上角的坐标,坐标确定了,矩形的位置也就确定了。思考:如果我们画的是文字,那又改采用什么样的规则去画呢?1、四线格与基线 小时候,我们在刚开始学习写字母时,用的本子是四线格的,我们必须把字母按照规则写在

2017-09-28 22:13:24 12740

原创 Canvas的基本使用——常用的绘制方法介绍

Canvas直面意思是画布,其实是一个封装了很多绘制方法的工具类。 绘制图像有四大基本的要素:一个用来保存像素的Bitmap。一个用来执行绘制操作的工具类Canvas。绘制的东西,如指明画直线,画文字以及其他各种我们想绘制的东西。绘制用的画笔Paint。一、 Canvas基本Api介绍: 1、绘画用到的API:画背景:/** *把整个画布用指定的颜色填充 * @pa

2017-09-26 23:07:54 600

原创 Paint滤镜效果 实现各种阴影效果,包括不规则图形

paint的滤镜效果,即对图像进行一定的过滤处理,可以实现如模糊阴影效果,浮雕效果,高亮图片,黑白照片,复古照片等效果。 Android的绘图颜色值是32位的int值,即ARGB :A—Alpha值,RGB—颜色值,根据对Alpha和RGB值的处理,滤镜的实现方式分类有:Alpha滤镜处理,颜色RGB的滤镜处理(矩阵Matrix实现)和两者混合叠加—Matrix,PortDuffColorFilt

2017-09-25 23:20:24 1394

原创 Paint的基本使用

Paint 基本使用,Paint的方法主要可以抽象成两大类:1.1 负责设置获取图形绘制、路径相关的 1.setStyle(Paint.Style style) 设置画笔样式,取值有 Paint.Style.FILL :填充内部 Paint.Style.FILL_AND_STROKE :填充内部和描边 Paint.Style.STROKE :仅描边、 注

2017-09-24 18:01:40 590

原创 Android UI绘制流程源码分析

从setContentView出发,分析UI的绘制流程,大致可分为如下几个步骤:生成DecorView(通过LayoutInflater解析xml文件,并添加到DecorView中)把生成的DecorView添加到Window中(这里涉及到Activity的启动流程)通过ViewRootImpl完成View的measure,layout和draw操作。一、生成DecorView: 1、act

2017-09-19 17:50:26 564

原创 NDK开发学习笔记(3):JNI访问数组、引用、异常处理、缓存策略

/** jni访问java中的数组*/JNIEXPORT void JNICALL Java_com_mei_test_jni_JniTest_giveArray(JNIEnv *env, jobject jobj, jintArray arr) { int compare(jint *a, jint *b);//声明方法,可以在函数的内部 //jintArray->jint

2017-08-13 22:26:27 243

原创 NDK开发学习笔记(2):JNI访问Java中的方法

通过之前的学习,知道了jni函数的调用流程以及在jni中访问java的静态字段和非静态字段,接下来将继续学习JNI中访问java中的各种方法。基本步骤遵循JNI的开发流程(参考:NDK开发学习笔记(1):JNI开发步骤及遇到的问题详解),JNI中调用java方法的基本流程:(1)通过对象找到类://jclass 通过jobject来搜索class(搜索的过程由jvm来完成),如果找到了,将这个c

2017-08-13 11:21:22 325

原创 NDK开发学习笔记(1):JNI开发步骤及遇到的问题详解

JNI 开发 步骤: 1.在Java文件类中编写native 方法 2.通过javah 命令,生成.h 头文件文件 (生成的头文件名称规则:Java_类的全名_方法名) 或者自己手写头文件 3.复制上一步生成的 .h 头文件到c 工程(提示缺少jni.h文件和jni_md.h文件),不要直接在工程中粘贴,而是要复制到工程的目录中,然后在右键点击头文件,选择添加现有项,把刚才复制的.h文件添

2017-08-10 21:03:51 255

原创 Paint:xfermode的使用

我们的手机屏幕是由很多的像素组成的,而每一个像素的颜色都是由四个分量组成,即ARGB,A表示的是我们Alpha值,RGB(Red,Green,Blue)表示的是颜色值。 当我们在屏幕(Canvas)中绘制的时候,如果对应位置的像素点已经绘制过了,即不是透明的,有颜色了,默认的情况下,Android的处理方式是直接覆盖替换对应位置的像素值,如果不想直接这样的覆盖替换的话,那就要用到xfermode,

2017-06-21 20:48:31 310

原创 Paint的高级渲染

Paint的高级渲染Paint的高级渲染主要用到方法: public Shader setShader(Shader shader); Shader:着色器,Canvas的drawXXXX这个方法是画具体的形状,画笔的shader定义的就是图形的着色和外观,即Canvas定义了一个区域(如:矩形,圆形等),Paint的Shader就是给这个区域填充内容(内容可以是图片,颜色等),也就是着色。一.

2017-06-03 01:32:47 344

原创 跑马灯效果设置

XML布局属性介绍android:ellipsize:设置当文字过长时,该控件该如何显示。有如下值设置:”start”—-省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;marquee——以跑马灯的方式显示(动画横向移动)android:marqueeRepeatLimit在ellipsize指定marquee的情况下,设置重复滚动的次

2016-08-31 17:06:11 1419

转载 详解intel处理器命名规则

原文地址:http://lf.lnu.edu.cn/detail.jsp?id=42868  intel CPU命名规则    intel的几代CPU中,后缀字母主要有以下几种:    M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器。    U:笔记本专用低电压CPU,一般为双核,U前面一位数

2016-08-29 13:10:57 8762

转载 Ubuntu下boot分区剩余空间不足解决

转自:http://www.2cto.com/os/201305/208245.htmlUbuntu下boot分区剩余空间不足解决 经常升级系统,出现了上图的提示,解决办法:1.dpkg --get-selections |grep linux-image 查看已安装的linux-image各版本2.uname -a 一般使用的都是最新版

2016-07-27 20:37:28 325

原创 MonKey:android自动化测试工具

Monkey是android自带的自动化测试工具,需要具备android开环境,在此不做过多介绍。 注:Monkey测试需要获取root权限。 步骤: 1.配置adb环境:D:\Android\android-sdk\tools, 打开cmd,输入adb测试是否配置成功,输出很多信息的就算是成功了。 2.被测试程序运行到机器之后,在cmd上输入命令:adb shell monkey -p c

2016-05-16 16:32:22 377

转载 Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9401981ADB server didn't ACK 这个问题会困恼很多的新手朋友,我以前刚开始做Android的时候也遇到过这个问题,不过自己百度,google啥的,也不知道怎么就给解决了,看到群里很多新手朋友都会问这个问题,说实话我也没有一个解决这个问题的终极方法(百试百灵

2015-11-17 11:32:42 301

转载 Caused by: java.lang.ClassNotFoundException[android的终极解决错误]

08-13 18:29:22.924: E/AndroidRuntime(1875): Caused by: java.lang.ClassNotFoundException:XXXXX    in loader dalvik.system.PathClassLoader[/data/app/XXXX.apk]我想大家经常因为疏忽出现ClassNotFoundException的异常,这个

2015-11-02 12:26:04 1248

转载 (最新版)百度地图§覆盖物OverlayOptions

转载至:http://blog.csdn.net/u012637501/article/details/45603857目前百度地图SDK所提供的地图等级为3-19级,所包含的信息有建筑物、道路、河流、学校、公园等内容。所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。如标注、矢量图形元素(包括:折线、多边形和圆等)、定位图标等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的

2015-07-02 14:36:10 6594 1

转载 Android ViewPager使用详解

此文为转载文章,原文地址是:http://blog.csdn.net/wangjinyu501/article/details/8169924这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。那如何使用它呢,与LisstView类似,我们也需

2015-05-20 16:05:24 348

转载 Android中Activity四种启动模式和taskAffinity属性详解

在android应用开发中,打造良好的用户体验是非常重要的。而在用户体验中,界面的引导和跳转是值得深入研究的重要内容。在开发中,与界面跳转联系比较紧密的概念是Task(任务)和Back Stack(回退栈)。activity的启动模式会影响Task和Back Stack的状态,进而影响用户体验。除了启动模式之外,Intent类中定义的一些标志(以FLAG_ACTIVITY_开头)也会影响Task和

2015-05-13 10:51:53 412

空空如也

空空如也

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

TA关注的人

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