- 博客(54)
- 资源 (17)
- 收藏
- 关注
原创 【Android】修改App字体的三种方法.md
引言一款视觉优秀的App除了良好的图片和颜色搭配,好的字体也是必不可少的,这里主要介绍Android中修改App字体的三种方法,每种方法都有自己的优缺点,根据实际情况选用。字体文件后缀一般为.ttf,在Android项目中一般将字体文件存放在assets/fonts目录下,也可以放到存储器中。为了方便使用,三种字体修改方式已经打包,可直接在gradle中使用,源码和使用方法参考 Github。方式1
2015-11-01 21:01:05
17068
原创 【Android】一个获取Android应用签名摘要的App工具
将APK发布到应用商店或接入第三方的SDK时,有时需要提供APK的签名摘要信息,可以通过摘要算法MD5或SHA-1来获取签名的摘要,除了获取自己的APK签名,也可以获取手机上其他已安装的APK签名,只需要传入其他APK的包名即可./** 获取签名的MD5摘要 */public String[] signatureDigest() { pkgInfo = mContext.getPackageM
2015-09-09 23:22:08
8234
原创 【Android】Android程序自动更新
App自动更新的步骤可分为三步:检查更新(如果有更新进行第2步,否则返回)下载新版的APK安装包安装APK下面对这三步进行解释,其中会穿插相应代码,App自动更新的这三步全部被封装到了一个单独的Updater类中,可以直接拿来使用,我会在文章最后贴出源码github地址。Updater 使用示例通过单一的类Updater可以方便的实现自动检查更新、下载安装包和自动安装,可以监听下载进度,可以
2015-07-23 08:43:05
2277
原创 【Android】ListView 优化
重用 ListView ItemListView创建时其会创建屏幕可容纳数量的 Item,ListView 滚动时,刚消失的 item 会被保存到回收池中,新出现的 item 从回收池中获取避免重复创建,这个回收池由 ListView 维护。从回收池取出 item 会传递给 Adapter 的 getView() 方法的第二个参数,如果回收池中没有内容就传递一个 null。所以在 getView()
2015-06-05 22:59:13
1231
原创 【Android】ListView 顶部浮动栏效果
ListView 中有时需要在顶部固定一个浮动栏,当向上滑动 ListView 时,浮动栏固定在顶部,当向下滑动 ListView 到其 HeaderView 可见时,浮动栏成为ListView的一部分,与ListView一起滑动。效果如下:实现思路使用两个浮动栏,一个浮动栏(A)添加到 ListView 的 HeaderView中,另一个浮动栏(B)与ListView顶部对齐布局。当ListVie
2015-05-31 21:17:55
3057
原创 【Android】消息机制原理
Android 消息机制涉及到的类主要有LooperHandlerMessage、MessageQueueHandlerThread下面结合 Android API 22 的源码分析上面几个类的内部实现细节,以窥探其中的原理一二。Looper 消息循环Looper 是一个循环处理消息的类,Looper内部维护一个消息队列,循环的从消息队列中取出消息并处理,如果队列为空则等待新消息。Loop
2015-05-12 09:46:22
1712
原创 【Android】消息机制应用
通过一个例子来熟悉下 Android 消息机制的使用,这个例子中主线程中有一个EditText、ImageView 和一个 Button,在 EditText 中输入图片地址后,点击 Button,主线程向后台线程发送消息请求下载图片,后台线程下载完图片后向主线程发送消息请求更新UI以显示下载的图片。通过这个例子一方面熟悉消息机制过的使用,另一方面理解 Handler 的双向传递。最终的效果如下:主
2015-05-06 11:50:52
986
原创 【Android】Activity 生命周期详解
与其他编程模式不同,android中的Activity没有main()函数,我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完成,系统会在Activity的生命周期的各个阶段回调Activity相应的成员函数。如果你想在Activity的某个生命周期阶段完成一些事情,你要做的就是重写(Override)相应的生命周期回调函数,并在该函数中完成相应的任务。下
2015-04-01 17:50:37
1373
原创 【Java】内部类
摘要java内部类可分为下面四种: * 成员内部类 * 静态嵌套类 * 方法内部类 * 匿名内部类 为什么使用匿名类?内部类也会想普通类生成一个对应的class文件?带着这些问题往下看。成员内部类java中内部类可以访问外围类的成员,并且可以有多个内部类实例,多个内部类之间共享一个外围类实例。每当创建一个内部类对象时,内部类会保存一份指向外围类的引用,在内部类里面通过该引用访问外围类,这些
2015-03-26 14:18:35
779
原创 【Java】Class 对象
每个类都有一个Class对象Java中一切皆对象,各种各样的对象提供了丰富的功能,今天说说”对象的对象”。java.lang.Object java.lang.Class<T>每个类都有一个相应的Class对象,该Class对象包含了创建对应类所需的各种信息,在我们编译一个新定义的Java类时会生成一个相应的Class对象(也就是同名的.class文件),程序中需要实例化该类时,就通过该类对
2015-03-25 15:53:14
1677
原创 【Java】== 和 equals() 区别
==可以用于基本类型和引用类型的比较,比较基本类型时,是比较其值是否相同;比较引用类型时,是比较其是否引用了同一对象(其实也是比较其值是否相同,这里的值是对象的地址)。equals()用于比较两个对象的内容是否相同,
2015-03-22 15:44:23
829
原创 【Java】package 和 import 关键字
一些人用了一阵子的Java,可是对于 Java 的 package 跟 import 还是不太了解。很多人以为原始码 .java 文件中的 import 会让编译器把所 import 的程序通通写到编译好的 .class 档案中,或是认为 import 跟 C/C++ 的 #include 相似,实际上,这是错误的观念。import的作用如果没有import,我们在使用java类库时就需要书写该类的
2015-03-18 13:58:58
5306
2
原创 2015 New Start
马上就是农历春节了,回家的火车票已经买好了,明天中午出发。实习的公司前天放假了,今天是最近这段时间最悠闲的一天了,走在校园里空荡荡的,好久没有这么安静了。回顾这一年,感觉经历了很多事,从四月份开始实习做C++/Qt开发,十月又做C++/cocos2d-x,前面一份工作很闲,感觉应该忙点就找了第二份游戏开发,多少也有点理想在里面。做了几个月了在项目组做的还不错,虽然是实习但是和正式工一样正常作息和加班
2015-02-15 14:37:10
768
原创 【Cocos2d-x】节点裁剪 ClippingNode
有时候我们需要一张圆形的图片,可是美术提供的是一个矩形的资源图片,怎么办?让美术再做一张圆形的?即使这样能暂时解决问题,无疑增加了开销,何况有时候你可能需要显示一张图片里的不同部分,不可能每种情况都让美术都做一次修改吧,这时候 cocos2d-x 里提供的节点裁剪技术就派上用场了。节点裁剪 原理cocos2d-x 提供 CCClippingNode 类的可以用来对节点进行裁剪,可以根据一个
2014-12-11 20:56:19
2002
原创 【C++】cmdline —— 轻量级的C++命令行解析库
平时用C++写一些命令行工具,需要解析命令行的输入参数,这是一项繁琐并且容易出错的工作,我们不应该将主要精力放在这上面,可以考虑使用开源的库,下面的cmdline就是其中非常好用的一款。cmdline 是一个非常简单好用的C++命令行解析库,其基于模板,所以使用很简单,写出的代码也很优雅。由于其只包含一个头文件,所以很容易集成到自己的项目中。
2014-10-26 20:15:30
17404
原创 【C++】Byte/KB/MB/GB/TB/PB/EB 单位换算C++代码
字节单位换算公式:1 GB = 1024 MB1 MB = 1024 KB1 KB = 1024 Bytes1 Byte = 8 bits将字节单位转化为目标单位根据公式我写了一段C++代码,用于将输入的以字节为单位的数值,转换为目标单位数值。代码中的枚举类型用的是C++11的语法。enum class Unit{ Byte, KB, MB, GB, TB, PB, EB};
2014-10-20 22:56:36
7533
原创 【cocos2d-x 3.x 学习笔记】对象内存管理
cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色(自动回收池)。
2014-10-01 16:01:10
1803
原创 【Qt】为QtCreator 配置 VS2013 黑色主题
概览先看一下最终的效果图,与VS2013深色主题相近的代码配色和界面配色,是不是有点心动了呢?如果只想使用可以跳到这里,如果想了解如何配置请继续往下看。安装和使用(1)配置代码编辑区域的配色方案先下载配置问价 vs2013_dark.xml,拷贝到QtCreator安装目录下的"QtCreator\share\qtcreator\styl
2014-09-23 20:19:39
10747
2
原创 【cocos2d-x 3.x 学习笔记】对象创建方式讨论
一般C++创建对象的方式,直观符合一般的C++编程习惯,缺点是需要自己负责资源的释放(这一点可以使用共享指针std::shared_ptr来最大限度避免)。而且如果无法知晓init()函数调用是否成功(这一点可以通过增加一个是否初始化成功的成员字段,作为标识来间接判断)。cocos2d-x创建对象的方式,其在构造函数中初始化成员变量,在初始化函数中完成对象的初始化工作,在类的静态函数create()中完成前两步并将内存交由其内部的内存管理机制管理。可能有点绕弯,但是一旦习惯用起来还是很好的。这种方式最大的
2014-09-14 17:27:13
2555
原创 【cocos2d-x 3.x 学习笔记】 HelloWorld —— 小程序大道理
cocos2d-x 3.2 的环境搭建可以参考官方给出的教程。这里我使用的是 Win7 + VS20131. 创建项目在Windows下搭建好环境后,打开命令行(按 Win+R,输入cmd),执行下面命令:cocos new MyGame -l cpp -d F:\ -p mypackage.com执行上述命令后,将会在F盘根目录下创建名为“MyGame”的
2014-09-13 17:24:31
3238
3
原创 【Qt for Android】OpenGL ES 绘制彩色立方体
Qt 内置对OpenGL ES的支持,选用Qt进行OpenGL ES的开发是非常方便的,许多辅助类头已经具备。从Qt 5.0开始增加了一个QWindow类,该类既可以使用OpenGL绘制3D图形,也可以使用QPainter绘制2D传统的GDI+图形,5.0以前的QGLWidget不推荐再使用。在即将到来(官方时间是今年秋天)Qt 5.4会完全废弃QGLWidget,作为替代将会新增QOpenGLW
2014-09-03 11:25:20
5700
1
原创 【Qt for Android】第一个安卓程序
1)首先需要去官网上下载 Qt for android 版本的 Qt SDK2)下载 android 相关的 SDK,下载地址不用找了,在Qt Creator工具选项的Android配置中有相应的下载链接地址。3)下载完安卓SDK后,在上面的配置界面中指定相应SDK的目录,然后在"Build & Run"中新增Android的Kits
2014-08-30 21:48:59
3637
原创 【Qt】仿QQ表情选择控件
表情选择控件在聊天应用中经常要用到,做起来虽然不复杂但是很繁琐,特别是有些图标需要按顺序排列。每次重做必然是很费时,所以我将聊天表情选择控件封装成一个独立的类QFaceSelectWidget,方便直接应用到自己的项目中。先来看看效果图:测试程序是一个对话框,里面放有一个QPushButton和一个QLabel,水平布局。点击按钮弹出“表情选择框",选择表情后"表情
2014-08-24 15:36:42
3861
1
原创 【HTML5】实现QQ聊天气泡效果
今天自己用 HTML/CSS 做了个类似QQ的聊天气泡,下面是效果图:下面说下关键地方的样式设置,然后贴出html和css代码(不多)。步骤1:布局消息采用div+float布局,每条消息用一个DIV标签包裹,里面再放两个DIV分别用来包裹用户图标和用户消息内容。左边消息,先清除浮动,然后设置 float:left,这样用户图标和消息内容就可以显示在同一行了,其
2014-08-23 14:46:50
13803
1
原创 【Qt】C++中的循环遍历
介绍 本文主要讨论C++中常见的几种循环遍历操作的语法:基于迭代器、基于Qt库中的foreach关键字、基于C++11新增的for循环语句。基于迭代器的遍历在C++容器中经常需要进行遍历操作,在C++11之前一般使用下面这种方式——基于迭代器的遍历: QList list {"a", "b", "c", "d"}; QList:
2014-08-06 15:13:36
5272
原创 两个月没写博客了
有近连个月没有写bolg了,总觉得有点不踏实。这两个月在一家小公司实习,做企业内部通信软件,用的是Qt开发框架,学习了不少知识。没出来实习前,自己一直都是对什么感兴趣就连续几天研究、做demo、记笔记,实习后时间比较紧张,每天回家已经很累了,有时玩下游戏放松下就该睡觉了,所以没有继续写bolg了。一段时间不写东西,自己就感觉不踏实,总觉得刚学会的知识点可能会随时间遗忘,有种不确定感,所以决定从今天
2014-07-26 20:57:00
1112
原创 Spire.XLS for .NET 测评
有一位朋友推荐了我 Spire.Office (官网:http://www.e-iceblue.com/) —— 基于.NET的办公软件库,说不错。到底如何呢?只有亲测一下才能知道了。前言 网络上流传的 Office 库很多,可谓“百家争鸣”,但有时候选择多了反而容易让人产生困惑,难以抉择。所以最能吸引程序员的 Office 库一般都具有下面的优点:(1)功能完整(
2014-05-28 11:18:11
8020
原创 经典C语言程序设计100例 -- C 和 Python 版 (06 - 10)
【06】格式化输出题目:用*号输出字母C的图案。思路:可先用'*'号在纸上写出字母C,再分行输出。如果输出图形较大,且有规律可循,可考虑使用循环。C 语言代码int main(){ const char *p = " **** \n" " ** ** \n" "** \n"
2014-05-20 22:53:18
2159
原创 经典C语言程序设计100例 -- C 和 Python 版 (01 - 05)
写在开头的话Python 重写C语言程序设计百例,每篇5题,每题分别用C语言和Python实现,方便对比。 C语言编译器:GCC 4.8.2 Python版本:Python 3.7写这个系列是受这位博主(http://blog.youkuaiyun.com/berguiliu?viewmode=contents)的启发,自己想重写一遍,使用更加Python化的风
2014-05-20 19:05:09
3135
原创 Python 练习 —— 2048
1. 引言 2048 这段时间火的不行啊,大家都纷纷仿造“百家争鸣”,于是出现了各种技术版本:除了手机版本,还有C语言版、Qt版、Web版、java版、C#版等,刚好我接触Python不久,于是弄了个Python版——控制台的2048,正好熟悉下Python语法,程序运行效果如下,左右两幅图是连续的:图 1 Python版控制台2048运行截图
2014-05-08 19:31:06
15812
1
原创 Python 基础 —— 模块和包介绍
1、模块的作用 在交互模式下输出的变量和函数定义,一旦终端重启后,这些定义就都不存在了,为了持久保存这些变量、函数等的定义,Python中引入了模块(Module)的概念。一个Python模块其实就是一个脚本文件,具有后缀“.py”,例如 hello.py 就是一个模块文件名,和普通文件一样可以被永久保存在本地存储磁盘中。2、模块的内容 Python
2014-05-06 15:54:02
2253
原创 Python 基础 —— 循环技术
简单谈谈 Python 中容器的遍历和一下小技巧。1、遍历单个容器 下面代码遍历一个 List 结构,同样适用于 Tuple、Set 结构类型>>> x = [1, 2, 3, 'p' , 'y']>>> for v in x:... print(x)... 123py 遍历字典 Dict 结构也是
2014-05-05 16:34:44
1511
原创 史上最强大的 Vim 代码补全引擎:YouCompleteMe
引言 自己之前Vim的代码补全插件都是使用 ctags + autotag + taglist + omnicppcompele 的组合,而且很多时候都没有提示或提示补全,而且每次打开一个新文件文件都需要创建一个 ctag 标签库,代码补全才能正能工作,十分的繁琐蛋疼。当时我就在想,既然源代码都有了,难道就没有一个 Vim 插件能的通过已有的源代码,实时构建语法书来提供代码补全提示吗
2014-05-04 21:37:36
6092
原创 TCP/IP 体系常见协议图解
以前自己学习 《计算机网络》和 Socket 编程时,需要做笔记或者PPT之类,经常需要一些网络协议格式图,网上找的每个图都有自己的风格,不统一,索性自己画了一些常见的网络协议格式示意图,方面大家在做报告、PPT时引用。等有空了,会为每张图添加一些字段和相应的代码结构说明,现在先上图吧。 图 0 常见的网络协议1. 数据链路层协议图1 Ethernet Fr
2014-04-15 17:42:28
4769
原创 【C++】重载二维数组下标 [ ][ ]
1. 分析重载一维数组下标很简单,通过下标传入的索引值,返回内部数组中相应的值。那重载二维数组的下标运算呢?其实重载二维和一维本质是一样的,因为 C/C++ 中所谓的 “二维或多维数组”都是又简单的一维数组表示的。举个例子哈:下面是两个 int 数组,第(1)个是熟悉的一维数组,第(2)个是熟悉的二维数组,现在你要做的就是将第(2)个数组看成是一个一维数组。
2014-03-16 19:34:25
10363
6
原创 【C++】字符串和数值类型的相互转化(借助STL)
在C++编程中有时会遇到字符串和数字的相互转化,以前学习的时候老师喜欢将这种转化当成作业,要我们写函数实现。但是实际为了方便准确还是会优先使用STL来完成。 在 C 标准库中提供了字符串到数值类型的转化函数,但是没有提供数值到字符串的转换(不过有些系统如 Windows API中提供数值到字符串的转化)。先看看C标准库中的字符串转化函数,这些函数都包含在头文件 中:
2014-03-14 17:34:58
5072
原创 【C++】Runtime error:iterators incompatible 迭代器类型不一致
之前写了下面这样的一段代码(数据类型简化了一下,功能类似),结果老是报错误 "iterator can not dereference" 或者是 "iterators incompatible"的运行时错误.后来找到了问题的关键是一个疏忽,但是又容易犯,这里记录下方便以后遇到类似的问题给自己提个醒。#include #include #include using namespace st
2014-03-14 15:14:45
1371
原创 【译】愿逝者安息,UEFI先驱——BIOS
如果你在过去的三十多年里用过计算机,那么你应该对计算机中基本输入输出系统(BIOS)很熟悉。事实上它存在了这么长时间也暗示这它需要被取代了(计算机世界里很少有技术能三十多年不变)。UEFI 正在慢慢的取代BIOS,这将会使我们的计算机体验提升到一个更高的层次。BIOS 为主板本身提供了核心功能,诸如开启硬件、为实际操作系统启动过程开始之前提供硬件系统启动。它本质上是一个主板的操作系统,你的操作
2014-01-09 22:05:52
1285
原创 【Qt】Windows7 和 Ubuntu11 下安装配置 Qt 5.2.0
一、Windows 7 下安装配置 Qt 5.2.01) 下载 Qt, 可以在qt project 官网上下载,有两个编译版本,一个是VS2010,另一个是MinGW(GCC的Windows移植版本),选一个即可。http://download.qt-project.org/official_releases/qt/5.2/5.2.0/qt-windows-opensour
2014-01-09 16:38:13
4941
Python 版 2048
2014-05-10
C#端口扫描器demo
2014-01-05
网络协议分析器的设计与实现
2013-06-05
基于TCP和UDP的socket通信程序(C语言)
2013-05-07
蚁群算法实现路由选择拥塞避免C#实现
2011-07-23
C语言写的日历(含叙述思想的文档)
2011-07-23
C#CMatlabSQL函数查询器
2011-03-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人