SharedPreferences源码分析 今天偶然看见一篇讲解SharedPreferences(以下简称SP)原理的文章,于是怀着前人种树后人乘凉的心情进去看了,发现写得不是很清楚,很多细节一笔带过,于是为了巩固一下基础就去百度了一下,发现百度上也没有让自己满意的文章。虽然SP说很简单,但是还是决定看看源码记录一下分析结果。此处分析的SDK版本为android-27。1.SP的使用我们都知道,SP是以XML文件方式存储的,我们先来看...
国庆,又快年底了。 很久没写博客了,自从4月份换工作后就一直比较浮躁,什么都想去学,一会儿学iOS,一会儿写C++搞游戏,一会又去玩前端,明明知道这样很不好,可是就是没有静下心来,估计这大半年时间是没有什么意义的。现在回过头来,才发现Android的知识好多都还没有掌握好,还有很多东西需要深入学习,View系统、Binder机制、AMS、WMS等等,现在的打算是静下心来好好读源码吧,这是一个比较漫长又枯燥的事情,希...
Java中Object的finalize()方法 finalize()是什么?finalize()方法是Java中Object类的一个空实现方法,我们都知道,Java中所有的类都是继承自Object,那么就是说,所有的类都有这个方法。我们先来看看该方法/** * Called by the garbage collector on an object when garbage collection * dete
一个简单的手势密码控件 GesturePasswordView最近项目需要做手势密码,于是呢顺手写了个,实现没有什么难度也没什么技术含量,只是贴出来以后不必重复造轮子,顺便也练习下写博客。项目地址https://github.com/Thuantanon/GesturePasswordView。使用方式1、工程gradle文件:allprojects { repositories { ... maven { u...
Android的Activity手指按下时的回调 我们都知道,Android事件分发是从Activity开始的,那么,Activity就能监听到每一个触摸事件。今天在看源码时发现了这个方法:/** * Called to process touch screen events. You can override this to * intercept all touch screen events before they
error LNK2005:"XXX已经在 XXX.obj 中定义 今天第一次遇到多文件包含的问题,一般来说C++开发都是声明放在头文件里,实现放在源文件里,然后使用时包含头文件,头文件为了避免被重复编译,一般来说要加个杂注“#pragma once ”,或者直接用“#ifndef XXX ....#endif”来处理。好吧,这些我都知道,偏偏各种办法都用遍了,extern也加了,就是一直给我报下面那个错:折腾了半天,终于让我给折腾好了。
C++两个平面矩形的相交判断 最近开发小游戏需要一个简单的碰撞检测,因为用的是自定义的Rect类,虽然这个判断方法很简单,但是百度看了很多人的写法代码量都相当的大。当然搜到的结果都不是我想要的,于是只有自己写啦。两个矩形(不考虑旋转)相交大概就那么几种情况,如下图:网上的算法要么就是判断顶点是否被包含,判断线段是否相交等等,这样做的不好的地方是要判断很多种情况。经过简单的分析我的方法如下图所示:
使用SDL2_mixer遇到error LNK2019: 无法解析的外部符号 最近在学习C++和SDL,前不久写了个俄罗斯方块的小Demo,但是是没有声音的,接下来准备写一个消灭星星的小Demo,希望,可以加入声效,于是今晚下载了SDL处理音频的库http://www.libsdl.org/projects/SDL_mixer/,然后新建Win32控制台应用程序...(此处省略10字)头文件全部正确导入:库文件全部正确导入:
SDL俄罗斯方块 整天写一些Android的业务逻辑太心烦了,换个语言找点新鲜感。最近在学习C++,为了避免写黑框框太枯燥坚持不下去,顺便学习了下SDL,做了一个俄罗斯方块小Demo。我的C++也就是停留在大学时Hello world的 代码已上传Github,地址https://github.com/Thuantanon/Tetrics
读取访问权限冲突。0xCDCDCD typedef struct List { List *next; // 表的下标 int i; // 总和结果 int sum;}List;已经一年多没有用C++了,最近厌倦了写一些垃圾App,想学一下游戏开发,于是开始复习下C。今天在复习数据结构的链表部分时,出现了这样的一个错误:折腾了半天,终于找到了原因:
Android使用CursorLoader加载手机联系人 1、Loader简介Loader是Android3.0(API版本11)中引入的一个抽象类,它主要是封装用来进行异步加载数据。Loader的直接子类是AsyncTaskLoader,也就是AsyncTask和Loader的一个封装类,关于AsyncTask这里就不举例了,总之就是异步加载数据,实际上和Thread+Hander+Loader都一样的效果。而CursorLoader是AsyncT
Navicat连接数据库Can't get hostname for your address 解决方法 我只是把自己遇到的问题分享出来,希望能解决大家的问题,特别是新手上路,很容易就因为一两个困难打击了学习的信心,编程是个耐心活儿,加油吧。
Android动态权限判断以及动态权限申请 首先查看权限是否授予:官网代码// Assume thisActivity is the current activityint permissionCheck = ContextCompat.checkSelfPermission(thisActivity,int permissionCheck = ContextCompat.checkSelfPermission(this...