安卓
文章平均质量分 96
RalfNick
做最好的自己!
展开
-
Android ANR
1.ANR1.1 什么是 ANR?我们知道安卓应用中 UI 渲染是在主线程中,所以对于一些点击事件,以及和用户交互相关的事件需要能够及时,否则对于用户来说就是一个很不好的体验。安卓系统中对于这类在主线程中没有及时作出反馈的问题叫作 ANR(Application Not Responding)。安卓不同组件对于 ANR 的超时限制是不同的。安卓中 ANR 的机制采用类似于『看门狗』,发送事件的同时,会发一个计时的消息,如果在计时的时间内没有完成事件,则触发 ANR。gityuan 博客中形容的比较原创 2021-04-11 22:33:31 · 631 阅读 · 0 评论 -
深入理解 Handler 消息机制
上一篇 - 消息机制 Handler 使用 文章讲了 Handler 的一个概述和基本的使用方法,这里还有一点需要强调一下:对于初学者一定要将你创建的子线程区分开,Handler 是你在子线程执行完,准备进行线程切换执行其他操作时才开始使用 Handler本篇主要对 Handler 的工作原理进行分析,即 Handler、Looper、MessageQueue 三者是如何工作的,从源码层面来分析...原创 2019-03-18 00:06:12 · 231 阅读 · 0 评论 -
异步线程之 HandlerThread 和 IntentService
本篇主要讲解一下 HandlerThread 和 IntentService,其中 IntentService 内部使用了 HandlerThread,而 HandlerThread 是一个 Thread,内部使用到了 Handler 消息机制,对 Handler 消息机制还不熟悉的话,可以看看之前的两篇文章 消息机制 - Handler 使用 和 深入理解 Handler 消息机制下面就来看下...原创 2019-03-24 11:45:32 · 290 阅读 · 0 评论 -
自定义 View - Measure 详解
上图就是 View 绘制的主要过程,View 的绘制是从顶层的 DecoraView – ViewGroup(可能多个 ViewGroup)再到 View,按照这个流程从上往下,依次measure(测量),layout(布局),draw(绘制)。其中 Measure 过程是相对复杂的一个,但是其实我们梳理出来需要掌握测量过程的知识点,就很清楚了,下面就来一起看看 Measure 过程。Meas...原创 2019-04-07 22:58:21 · 377 阅读 · 0 评论 -
自定义 View - Canvas 详解
1.CanvasCanvas 是我们绘制各种图形或文字时主要的操作对象,因为绘制绘制过程调用的都是它的 drawXX 方法。官方给出的 Canvas 的解释:The Canvas class holds the “draw” calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels,...原创 2019-04-03 20:36:38 · 469 阅读 · 0 评论 -
自定义 View - onDraw 过程详解
之前两篇文章分析了 onMeasure 过程和 onLayout 过程,不熟悉的童鞋可以回头去复习下,本篇文章来分析绘制过程的最后一个 onDraw 过程。这个过程的绘制使用到的 Paint 和 Canvas 在之前也有讲解到,在本篇的练习代码中有使用到,不会具体讲解这些知识点,不熟悉的话可以看看我之前的文章自定义 View - Paint 详解自定义 View - Canvas 详解Vie...原创 2019-04-21 23:51:24 · 1632 阅读 · 1 评论 -
属性动画详解
1. 动画分类Android 中动画分为 3 种:View 动画(视图动画)、帧动画、属性动画。(1)帧动画:将一系列的图片按照顺序播放,每一张图片就是动画中的一帧,连续播放后就形成了动画,使用起来比较简单,缺点是当图片过多或者过大时,容易导致 OOM。(2)View 动画:动画变化分为 4 种,平移、缩放、旋转、透明度,通过这 4 种动画其中的一种变换或者组合变换,使视图完成一种渐进式的动...原创 2019-05-04 16:08:28 · 520 阅读 · 0 评论 -
EventBus 使用及源码分析
EventBus 是我们日常开发中使用很频繁的一个三方库,原因很简单,使用 EventBus 可以很容实现解耦,不需要设置很多回调接口,如在 Fragment 和 Activity 之间的通讯,不同 Activity 之间、不同的线程之间,不同的 Service 之间等,使用 EventBus 会减少很多代码,而且看起来更加简洁,在 Android Studio 中点击左侧的小安卓图标可以很方便从...原创 2019-05-26 17:58:50 · 198 阅读 · 0 评论 -
Android Studio 中通过 CMake 方式使用 JNI
在 AS 中使用 Eclipse 中的方式构建 jni 环境,这种方式配置起来稍有麻烦,在 AS 中还有另外一种方式可以使用:即 CMake 方式。一、说点题外话:2015年6月26日,Android产品经理在Android官网发表博客1、2015年底停止对eclipse的adt更新支持,后续更新由eclipse团体提供2、推荐大家使用Android官方集成开发环境 Android Stu...原创 2019-06-07 09:39:36 · 534 阅读 · 1 评论 -
NDK开发学习笔记之javah及ndk-build
NDK开发学习笔记之JNI环境搭建 写到 NDK 的基本使用及环境搭建。并写了一个简单的 cpp 文件,但是有没有发现在编写 cpp 文件中的函数时,名字是不是很长,很容易写错!那么,哟没有方法,自动生成函数名呢?没错,你猜对了,还真有这样的工具—— javah。下面就来介绍 javah 的使用以及以下小技巧,此外还有 ndk-build 生成 so 的方法。概要javah 的使用...原创 2019-06-07 09:50:24 · 544 阅读 · 0 评论 -
一篇文章介绍完 Drawable
1. Drawable 简介Drawable 在 Android 开发中是非常常用的,比如在 XML 中定义color,shape,selector 等。通过 Drawable 的使用,能够帮助我们实现一些比较好的界面效果,同时 Drawable 又相对轻量级,不像自定义 View 那样复杂。使用 Drawable 代替一些图片时,可以有效减少 APK 包的大小,开发成本也行对比较低。A ...原创 2018-11-11 20:35:01 · 659 阅读 · 0 评论 -
动画还可以这么玩?使用 Toast 显示 or Dialog 显示
本篇不是讲解动画的设计,而是分析动画在使用过程中,如何合理显示遇到的一些坑,主要是由于特定场景引起的。问题相信大家都见过这样的点赞动画,点赞之后图片能够飘一会。思路:动画其实并不难,通过一个自定义 View,大小为显示动画的范围,通过一个 ImageView显示图片,然后通过动画根据设计的路径改变位置,透明度和大小,显示特定的时长。思路有了,然后就是实现,实现完成之后就出现了坑,坑不在这个...原创 2019-03-10 18:22:23 · 303 阅读 · 0 评论 -
消息机制 - Handler 使用
消息机制提到消息机制,很快想到 Handler,没错,Android 的消息机制主要就是 Handler 的运行机制,另外也不能缺少 Looper 和 MessageQueue。很多人认为 Handler 的作用是用来更新 UI 操作的,多数情况下, Handler 的确用来更新 UI,由于 Android 机制的限制,UI 操作只能在主线程完成,所以当进行一些耗时操作,如网络请求,IO 操作,...原创 2019-03-03 20:53:33 · 282 阅读 · 0 评论 -
Android下Opengl ES实现单屏幕双眼显示
Android下利用Oengl ES 实现单屏幕的双眼模式的主要思路,阐述Opengl ES中帧缓存区对象的使用流程原创 2017-04-01 17:49:38 · 2975 阅读 · 1 评论 -
NDK 开发之 Android Studio 中使用 JNI
之前弄过一点 jni 相关的东西,使用过程中总是折腾很久,之后用到 jni 工程配置时,又忘记之前的操作了。 哎,记忆力不好,这也是作为一位伪码农的硬伤啊!所以为了以后重复使用,只能写写了,以便日后再用!好了,就开始记录吧! 由于 Jni 相关知识操作比较多,每部分写一块的内容,不至于文章过长!概要: NDK 开发简介 Jni 简介 NDK 开发环境搭建 1.NDK 简介原创 2017-11-11 17:51:51 · 1783 阅读 · 3 评论 -
Android 蓝牙开发 —— BLE
蓝牙——BLE介绍1.BLE 是 Bluetooth Low Energy 的缩写,意思为低功耗蓝牙。由蓝牙技术联盟(Bluetooth SIG)设计的无线通讯技术,主要用于医疗,健身,安全和家庭娱乐行业。 与传统蓝牙相比,蓝牙低功耗旨在大幅降低功耗和成本,同时也能够达到相同的通讯效果。 支持多个平台,包括 IOS,Android,Windows Phone 和 BlackBerry...原创 2018-06-04 15:42:43 · 16608 阅读 · 2 评论 -
Android 数据库 —— greeDAO
数据存储方式一般文章中介绍数据存储有这么几种: 文件 SharedPreferences 数据库 网络 ContentProvider 其实,在内存存储也可以算是一种存储,比如,有些时候我们用 static 变量存储一些共享数据,只不过与上面的数据不用,上面的是持久化数据存储,但是也是一种数据存储方式,需要根据需求来决定使用哪种方式。加上内存存储构成三级...原创 2018-06-04 15:46:21 · 1717 阅读 · 0 评论 -
数据库学习之 greenDAO 实战
前言上一篇 对 greenDAO 进行了基本的介绍,包括配置、注解含义、基本的操作。本篇主要对 greenDAO 的增删改查的一些高级用法进行介绍,有时可能业务需求,简单的增删改查可能满足不了,比如数据较大、多表联查,这时就需要学一下 greenDAO 的高级用法。本篇主要内容,就在这个粗略的草图中。1. 建表对于移动端来说,数据库不会很复杂,毕竟空间和处理能力有限,基本上用到的是一些单...原创 2018-09-24 21:36:02 · 422 阅读 · 0 评论 -
RecyclerView 全面使用及分析 - 基础篇(一)
一、RecyclerView 介绍在 RecyclerView 出来之前,大家都在使用 ListView、GridView,当然 RecyclerView 出来之后,基本上都转向了 RecyclerView,从名字上可以看出,它能够实现view 的复用,同样 ListView 在使用时我们自己也可以通过 converView 来实现复用,但是 RecyclerView 已经帮我们做好了,我们只...原创 2018-09-24 21:38:18 · 3776 阅读 · 0 评论 -
RecyclerView 全面使用及分析 - 使用细节(二)
上一篇 介绍了 RecyclerView 的基本使用,这篇主要整理下在使用过程中记录的一些小细节,不是很重要的一些知识点,但是这些小细节,如果遇到的话,也是需要上网查资料的,也会有时间成本,所以还是记录下来,以防以后再遇到。1. 分割线上一篇中已经介绍了分割线,但是悉心的童鞋发现分割线,在 LinearLayoutManager 中使用是正常的,但是在 StaggeredGridLayoutM...原创 2018-09-30 23:23:05 · 244 阅读 · 0 评论 -
自定义 View - 基础
先扯一点题外话,就现在的 Android 市场来说,可以说是不容乐观的,只不过是相对的,Android 的坑位有限,人又相对比较多,加上资本寒冬,像我一样的菜鸟是最为令人担忧的。那么能怎么办呢?只有进阶到高级才行,才能混的下去,高级 Android 工程师的市场还是很广阔的,所以一起努力吧,少年们!想进阶到高级,自定义 View 这部分是必须要攻克的,这篇也算是开篇,主要翻译一下官方文档,在补一...原创 2018-12-09 19:18:06 · 689 阅读 · 1 评论 -
自定义 View - Paint 详解
上一篇 文章对自定义单一 View 进行了初步的介绍,对绘制的流程有了一个概念,本篇将对 Paint 部分进行详细 的介绍。上一篇中给出一张图,自定义 View 部分设计的知识点,对于 Paint 部分,也是很大的一块,Paint 的 API 很多,有各种样式,各种效果,颜色设置,抗锯齿,文字设置等。绘制的过程可以想象为画画,有画布和画笔。画布就是 Canvas,画笔是 Paint。 ca...原创 2019-02-18 00:00:45 · 269 阅读 · 0 评论 -
自定义View 实战一 - 轻松显示星级
需求前面几篇文章主要都是在介绍一些自定义 View 的基础知识,本篇就来一起编写一个小 Demo,来感受感受。自定义 View 的编写,来源于产品的无理需求,有了需求,首先是要看现有的控件能否满足需求,或者控件的组合能否满足,现有的控件满足的话,就不必去造一个轮子,费时费力。再有,考虑产品的开发周期和开发质量,周期允许,质量要求较高,那么需要考虑使用自定义 View,能够带来性能上的提升。还有...原创 2019-02-24 16:39:39 · 293 阅读 · 0 评论 -
利用opengl es画立方体的简单流程
最近在学习opengl es,其中弄了一个小Demo,画了个天空盒,并在场景里加了个立方体,主要介绍在android中使用opengl es来绘制一个立方体,在android中的流程以及着色器中绘制物体的过程进行了描述。原创 2017-03-12 15:41:57 · 3586 阅读 · 0 评论