
Android
文章平均质量分 94
走召大爷
《Python学习实战》GongZhongHao作者,每天学习一点点,每天进步一点点
展开
-
基于Windows微信实现实时收发微信消息App
基于windows微信,hook收发微信消息、联系人数据,实现一套与微信消息互通的IM App。原创 2022-11-14 08:00:00 · 11624 阅读 · 7 评论 -
Android中常见的内存泄漏
我们经常会在不经意间写出造成内存泄漏的代码,往往在代码上很难查出来。但是我们可以通过一些辅助工具来检测是否存在内存泄漏,比如通过AndroidStudio的monitors来查看内存的变化情况,或者是通过开源框架《LeakCanary》来检测。本文主要是从网络中搜索汇总一些常见的内存泄漏,一方面自己应对校招,另一方面以后自己写代码时也会注意这些问题。当然了,还有一方面就是方便大家~原创 2016-08-13 15:42:26 · 8396 阅读 · 2 评论 -
双亲委派模型与自定义类加载器
其实,双亲委派模型并不复杂。自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用。但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行。可是自定义类加载器又不经常用,时间久了容易忘记。相信你经常会记不太清loadClass、findClass、defineClass这些函数我到底应该重写哪一个?它们主要是做什么的?本文大致分析了各个函数的流程,目的就是让你看完之后原创 2016-08-24 12:38:57 · 5586 阅读 · 0 评论 -
Android OpenGL添加纹理
上一篇文章【Android OpenGL添加光照和材料属性 】我们已经学了如何为3D模型添加光照和材料属性,使得模型看起来更有立体感。今天我们学习如何为3D模型贴上纹理,使得模型看起来更真实!目前我在网上没有找到带有纹理图片的STL模型文件,如果随便贴一张图片上去的话并不好看,看起来不会很真实。好在手头上现在有2个带有纹理的STL格式文件,虽然这两个模型看起来有点残缺,但是不影响我们学习如何贴纹理。先看看效果原创 2016-08-10 10:27:43 · 10250 阅读 · 12 评论 -
Android OpenGL显示任意3D模型文件
前面两篇文章我们介绍了OpenGL相关的基本知识,现在我们已经会绘制基本的图案了,但是还远远不能满足我们的需求。我们要做的是显示任意的模型,这也是本文所要做的事情。在阅读本文之前,请先确保你已经看过我前面两篇文章原创 2016-07-29 15:44:07 · 27858 阅读 · 24 评论 -
Android OpenGL添加光照和材料属性
在上一篇文章【 Android OpenGL显示任意3D模型文件 】中,我们学习了如何读取并显示STL格式的3D文件,但是,最后,看到的并没有添加光照效果,导致虽然模型在旋转,但是我们看到的画面却像一个平面。今天我们开始学习如何给模型添加灯照效果,以及如何为模型添加材料属性,使得最终看到的旋转模型真正为3D效果。首先,看看最终效果,如下图所示原创 2016-08-09 11:14:59 · 8402 阅读 · 3 评论 -
抢先体验ConstraintLayout以及AS 2.2
今年的Google开发者大会上,google给我们带来了ConstraintLayout,这个Layout有啥不一样呢?你可以通过布局工具拖拽轻松实现布局,当然了,这必须得Android Studio 2.2以后才有这个工具,但ConstraintLayout这个类本身是兼容到Android 2.3 的,因此你可以放心大胆的用,只不过在Android Studio中必须升级到2.2才会有这个工具,这个工具如下截图原创 2016-06-22 10:09:26 · 6254 阅读 · 5 评论 -
Android OpenGL 显示基本图形及相关概念解读
在上一篇文章中,我们知道了如何在Android开发一个OpenGL模型显示。但是并没有对具体模型数据进行显示,只是展示一个背景颜色而已,在本章中,我们学习如何将一个模型数据显示成一个具体的3D图形。在Android中开发OpenGL程序非常简单,但是却有很多OpenGL相关概念是必须要清楚的,了解这些相关概念才能写出正确的代码,否则,你写出来的程序可能会无缘无故崩溃,或者是画出来的模型显示不出来等等问题。原创 2016-07-28 08:48:34 · 12896 阅读 · 13 评论 -
Android OpenGL入门
如今VR这么火,感觉有必要先把OpenGL学好,为以后转VR奠定一些基础。一年前,接触过Android的OpenGL,当时是实现了在Android上显示标准的3D文件(STL格式),但那个时候是在网上查看各种资料,东拼西凑,最终终于实现了将任何3D文件在Android上显示。可是,却无法理解其中的原理,以及为什么要那样写就可以显示来。导致虽然我实现了这些功能,却无法学习OpenGL,今天开始,我将原创 2016-07-28 08:31:59 · 25583 阅读 · 4 评论 -
Window与WMS通信过程
上一篇文章【理清Activity、View及Window之间关系】我们大致知道了Window的绘制过程,但是比较笼统,本文主要介绍Window对象与(后面缩写为WMS)之间是如何通信。毫无疑问,肯定是通过IPC(Binder机制),这点肯定都知道,但是我们要学习是的是,哪些类参与了IPC调用过程。另外,本文没有研究源码,而是通过阅读其他研究源码的文章,然后总结出来,以更容易理解的方式展示。本文设计到的相关资料在文章最原创 2016-07-27 10:28:23 · 3179 阅读 · 4 评论 -
AndroidStudio插件开发(Hello World篇)
工欲善其事必先利其器,自打从Eclipse转战AndroidStudio以来,还没彻底摆脱Eclipse。打算从开发AndroidStudio插件开始,彻底摆脱Eclipse。AndroidStudio基于IntelliJ平台,因此,开发AndroidStudio插件其本质只是开发IntelliJ平台的插件原创 2016-12-24 14:29:50 · 9708 阅读 · 5 评论 -
Android校招复习资料整理
在10月份开始就没有再参与校招了,面试过程真的很累,有时现场等面试一等就是几个小时。加上毕业论文开题的压力,所以没有继续参加各个公司笔面试了。过去几个月中,复习时也曾经到处搜资料、搜真题。毕竟从小到大考试都是有教科书复习,有老师划重点。现在找工作都没有这些,只有靠自己。所以特别理解准备找工作的小伙伴们空有好好复习的决心,花了很多时间却没有复习多少知识,因为在搜资料过程需要很多时间。原创 2016-11-14 11:10:28 · 9166 阅读 · 4 评论 -
IntelliJ IDEA平台下JNI编程(五)—本地C代码创建Java对象及引用
本文学习如何在C代码中创建Java对象和对象数组,前面我们学习了C代码中访问Java对象的属性和方法,其实在创建对象时本质上也就是调用构造函数,因此本文知识学习起来也很轻松。有了前面学习数组创建的方法后,C代码创建对象数组同样很容易,下面开始学习吧~原创 2017-03-23 19:37:47 · 6811 阅读 · 1 评论 -
IntelliJ IDEA平台下JNI编程(四)—本地C代码访问JAVA对象
本文主要针对C代码中访问JVM中对象的普通变量、静态属性、普通函数、静态函数进行举例讲解,通过本文的学习将进一步理解JNIEnv在本地代码和Java之间的重要性。有了前面几篇文章的基础,学习起本文来将更容易。好了,接下来往下学习吧~原创 2017-03-22 21:29:51 · 3204 阅读 · 0 评论 -
IntelliJ IDEA平台下JNI编程(二)—类型映射
这篇文章是直接从《The Java™ Native Interface Programmer’s Guide and Specification》中整理,可以前往http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html中查阅。本文只是作为参考用,并不涉及到深层次的技术。主要是为了后面学习过程中能快速查阅,花半分钟浏览一下即可。原创 2017-01-12 17:08:11 · 2340 阅读 · 0 评论 -
IntelliJ IDEA平台下JNI编程(三)—字符串、数组
在前面HelloWorld篇中,自动生成的头文件对本地方法声明的形参列表中的第一个参数即为JNIEnv *。那么JNIEnv到底能用来做什么?初学JNI的时候并没有太在意,只满足于Java能调用C代码就行,而并没有深究。今天这篇文章将学习JNI本地函数中如何与Java代码中的字符串、数组相互访问(或转换)。通过这篇文章的学习,相信会对JNIEnv有进一步了解。原创 2017-01-13 19:11:01 · 2911 阅读 · 1 评论 -
IntelliJ IDEA平台下JNI编程(一)—HelloWorld篇
JNI(Java Native Interface),出于学习JNI的目的,为了能够更方便快速地运行程序。本文的是在IDEA中进行,而不在AndroidStudio,这样能够对NDK的工作过程有个更深刻的认识,同时也能对JNI的原理有更深的理解。虽然本文是HelloWorld篇,但是其中涉及到很多内容。博主将遇到的坑都记录下来了,希望能够帮到大家。这篇文章可能是2016年的最后一篇文章了,接下来JNI相关系列文章明年原创 2016-12-30 11:30:10 · 37146 阅读 · 35 评论 -
打造酷炫AndroidStudio插件
前面几篇文章学习了AndroidStudio插件的基础后,这篇文章打算开发一个酷炫一点的插件。因为会用到前面的基础,所以如果没有看前面系列文章的话,请先返回。当然,如果有基础的可以忽略之。先看看本文实现的最终效果如下(好吧,很多人说看的眼花)原创 2016-12-27 20:48:04 · 5898 阅读 · 3 评论 -
AndroidStudio插件开发(进阶篇之Editor)
我们开发AndroidStudio插件,绝大多数插件功能是用在编辑文本上面,让用户开发更便捷。这篇文章主要是介绍Editor部分,看完之后可以开发简单实用的插件啦!在看本文之前,请先确定已经看完《AndroidStudio插件开发(Hello World篇)》和《 AndroidStudio插件开发(进阶篇之Action机制)》。因为这两篇是基础,没有这些基础就无法继续往下读。原创 2016-12-26 20:16:08 · 7876 阅读 · 7 评论 -
AndroidStudio插件开发(进阶篇之Action机制)
从上一篇《AndroidStudio插件开发(Hello World篇)》中我们已经大致了解了Action,这篇文章继续深入探究IntelliJ IDEA插件开发中的Action机制。一个Action本质上来说就是一个Java类,并且这个类需要继承AnAction。而一个Action对应于一个菜单项,每一次点击这个菜单项就回调这个Action的actionPerformed(AnActionEvent event)原创 2016-12-26 14:13:11 · 10428 阅读 · 5 评论 -
通过自定义Gradle插件修改编译后的class文件
或许你会觉得没有必要这样做,可是有一种应用场景就是,为每个编译后的class文件添加一行代码。比如:在每个Java类的构造函数中加一句`System.out.println("I Love HuaChao!");`(PS:莫吐槽~,莫嘲笑~),如果你每次创建一个类的时候都手动加这么一句话,先不谈容易出错,我们说说工作量。或许你觉得,你愿意手动加,那我再跟你提新需求,我现在不要这句代码了,我要的是`System.out原创 2016-07-04 18:37:43 · 16869 阅读 · 12 评论 -
理清Activity、View及Window之间关系
View、Window以及Activity主要是用于显示并与用户交互的。这让我们在初学的时候很容易弄混,而且无法理解他们区别以及联系。本文是笔者查阅相关资料后,结合自己的理解写出来。希望能帮你梳理清楚他们各自的工作职责,以及是因为什么需求导致了它们的出现。原创 2016-07-26 11:33:30 · 15223 阅读 · 8 评论 -
Material Design Library 使用汇总
本文对Material Design Library里面的库类的使用做一个简单的汇总,方便以后能快速查询、快速上手使用。本文包括以下内容: Color Palette Toolbar AppBarLayout CollapsingToolbarLayout CoordinatorLayout DrawerLayout、N原创 2016-07-25 10:41:58 · 7760 阅读 · 3 评论 -
自定义View,有这一篇就够了
我的简书同步发布:自定义View,有这一篇就够了为了扫除学习中的盲点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容并没有什么独特,其他大神们的博客上面基本上都有讲这方面的内容,如果你对自定义View很熟了,那么就不用往下看啦~。如果对自定义View不是很熟,或者说很多内容忘记了想复习一下,更或者说是从来没用过,欢迎跟我一起重温这方面的知识原创 2016-06-03 15:08:21 · 77969 阅读 · 57 评论 -
从Android代码中来记忆23种设计模式
我的简书同步发布:从Android代码中来记忆23种设计模式相信大家都曾经下定决心把23种设计模式牢记于心,每次看完之后过一段时间又忘记了~,又得回去看,脑子里唯一依稀记得的是少数设计模式的大致的定义。其实,网上很多文章讲得都非常好,我也曾经去看过各种文章。也曾一直苦恼这些难以永久记下的设计模式,直到我接触到了《Android源码设计模式解析与实战》——何红辉与关爱明著,发现原来其实我们在Andr原创 2016-05-30 19:56:22 · 25063 阅读 · 11 评论 -
制作圆形图片,你会以下几种?
说起圆角图片,相信每个人心中都有自己的圆角图片制作方法。但是你是否想知道,除了你所会的那几张方法以外,还什么什么方法制作圆形图片呢?我们一一学习~关于通过使用XferMode方式创建圆形图片,hongyang大神的《 Android Xfermode 实战 实现圆形、圆角图片 》原创 2016-06-04 16:59:12 · 13657 阅读 · 2 评论 -
教你一步一步实现图标无缝变形切换
在上一篇文章[《酷炫的Activity切换动画,打造更好的用户体验 》](http://blog.csdn.net/huachao1001/article/details/51659963)中,我们感受到了过渡切换动画带来的不一样的用户体验。如何你还意犹未尽,那么今天我们再体验一把图标切换动画。先来个效果图,让你更有动力往下看(PS:以下gif是放慢了的动画,另外gif丢帧导致不流畅,各位不要觉得很卡哈~)原创 2016-06-20 16:49:10 · 9065 阅读 · 4 评论 -
玩转AppBarLayout,更酷炫的顶部栏
上一篇文章《CoordinateLayout的使用如此简单 》对CoordinateLayout的使用做了讲解,今天我们再讲解常常与其一起使用的几个View:AppBarLayout、CollapsingToolbarLayout以及Toolbar。一下子出现3个陌生的View,是不是觉得很慌张~,很多人都写了这几个布局的使用,但是他们却没有有针对性的单独讲解每个View的作用以及如何使用,我看的很多文章都是一上来就原创 2016-06-02 14:09:59 · 31883 阅读 · 26 评论 -
JVM理解其实并不难!
我的简书同步发布:JVM理解其实并不难!在阅读本文之前,先向大家强烈推荐一下周志明的《深入理解Java虚拟机》这本书。前些天面试了阿里的实习生,问到关于Dalvik虚拟机能不能执行class文件,我当时的回答是不能,但是它执行的是class转换的dex文件。当面试官继续问,为什么不能执行class文件时,我却只能回答Dalvik虚拟机内部的优化原因,却不能正确回答具体的原因。其实周志明的这本书就有原创 2016-05-29 20:55:27 · 23950 阅读 · 11 评论 -
JVM对象引用与内存分配策略
前两天对《深入理解虚拟机》一书做了个总结:《JVM理解其实并不难! 》,今天针对垃圾回收和内存分配做个深入了解。关于引用在《JVM理解其实并不难! 》一文中提到,JVM是通过可达性分析来判断对象是否需要被回收,这可以弥补引用计数法的不足。即就算两个对象相互引用,只要这两个对象没有引用链连接GC Roots,这两个对象都会被判定为可回收的对象!注意,这里是指被判定位可回收的对象,并不是说他们原创 2016-05-31 20:46:41 · 5304 阅读 · 2 评论 -
RenderScript 让你的Android计算速度快的飞上天!
在上一篇文章Android自动手绘,圆你儿时画家梦! 中结尾提到,我将介绍提升轮廓提取速度相关内容,今天一起学习Android中的RenderScript。看完本文,你将学会如何使用并行计算技术,提高你的app中计算模块速度,尤其是提升图像处理中的复杂计算。原创 2016-05-28 20:04:58 · 11540 阅读 · 2 评论 -
简单明了,彻底地理解Binder
你是不是看过很多Binder文章但是还是对Binder没有一个深刻理解?不是那些文章讲得不够好,主要是存在两种情况,一种是讲的深,全C代码~,对我这种专做Java的人来说没有心情往下看;另一种是只讲framework层,Binder驱动并没有具体提,导致我们会用Binder,也大致能说的出一些原理,可并没有一个完整的深刻认知。那么接下来让我们一起学习Binder吧,相信接下来的内容会让你有一定的收获原创 2016-05-26 13:13:38 · 45858 阅读 · 8 评论 -
打造属于你的LayoutManager
我的简书同步发布: 打造属于你的LayoutManager 转载请注明出处:【huachao1001的专栏:http://blog.csdn.net/huachao1001】一直想找RecyclerView自定义LayoutManager相关资料,网上虽然有几篇,但是写的却不够详细,看的一知半解。Google了几篇国外的文章后研究了一下,今天决定静下心来好好去写一篇关于自定义LayoutManag原创 2016-06-06 16:23:13 · 22085 阅读 · 25 评论 -
ViewPager源码分析(1):onMeasure、onLayout
在网上看了一些面经,感觉ViewPager被问到的概率还是蛮大的,于是决定去好好研究ViewPager源码,一步一步去琢磨ViewPager的实现,并写到博文里来~。我们知道,ViewPager是一个ViewGroup,而我们平时自己自定义ViewGroup时,除了至少写两个构造函数以外,onMeasure和onLayout这两个函数基本上是必须要去写的。今天先把onMeasure和onLayout两个函数仔细研原创 2016-06-12 20:20:02 · 3933 阅读 · 4 评论 -
在AndroidStudio中自定义Gradle插件
一直都想好好学习AndroidStudio中的gradle,总感觉不懂如何在AndroidStudio中自定义gradle插件的程序员就不是个好程序员,这次上网查了一下相关资料,做了一个总结~原创 2016-07-02 14:17:55 · 29198 阅读 · 18 评论 -
彻底理解View事件体系!
View的事件体系整体上理解还是比较简单的,但是却有很多细节。这些细节很容易忘记,本文的目标是理解性的记忆,争取做到看完不忘。最近在复习,希望本文能对你也有所帮助。如果你已经对View事件体系有一定的了解,那么查漏补缺,看看你是不是已经掌握了以下内容呢?原创 2016-06-27 14:18:02 · 6168 阅读 · 10 评论 -
酷炫的Activity切换动画,打造更好的用户体验
我的简书同步发布:酷炫的Activity切换动画,打造更好的用户体验转载请注明出处:【huachao1001的专栏:http://blog.csdn.net/huachao1001】毫无疑问,动画效果能提高用户体验。我们平时使用最多的动画基本上是属性动画和补间动画了,属性动画很强,基本能定制我们想要的动画,但是你是否知道,API 21(5.0)后系统内置了Activity之间的切换动画,而且非常酷原创 2016-06-15 16:43:09 · 42173 阅读 · 29 评论 -
ViewPager源码分析(3):与PagerAdapter 交互
我们知道,ViewPager显示的页面离不开我们定义的适配器,正是因为我们编写了自己的适配器,才让ViewPager显示出满足你的需求的内容,那么ViewPager是如何与适配器(PagerAdapter)进行交互的呢?我们今天来研读一下ViewPager中与PagerAdapter交互的部分代码。本文对学习ViewPager很重要,请耐心往下仔细研读 ...O(∩_∩)O~~原创 2016-06-14 13:00:11 · 6393 阅读 · 2 评论 -
ThreadLocal原理解析(2):ThreadLocalMap源码解析
在上一篇文章【ThreadLocal原理解析(1):数据存取】中,我们介绍了`ThreadLocal`读取数据的过程及原理。我们知道,`ThreadLocal`将变量的各个副本值保存在各个线程`Thread`对象实例里面。而`Thread`对象实例是通过`ThreadLocalMap`数据结构来存原创 2016-07-22 17:29:42 · 6418 阅读 · 5 评论 -
ThreadLocal原理解析(1):数据存取
注意:`Android`内使用的`ThreadLocal`跟`JDK`内部的`ThreadLocal`具体实现有区别。但是他们所做的功能是一致的,只是`Android`针对`ThreadLocal`做了优化。但这不影响我们学习ThreadLocal的实现思想。`ThreadLocal`的使用相信大家都比较熟悉,但是`ThreadLocal`内部是如何做到为不同线程保存不同的副本的呢?能看到这篇文章,说明你也跟我一原创 2016-07-22 16:12:03 · 5800 阅读 · 7 评论