- 博客(280)
- 资源 (124)
- 收藏
- 关注
原创 Android开发艺术探索——第十四章:JNI和NDK编程
JNI的意思是Java Native Interface(java本地接口),它是为了方便java调用C,C++等本地代码所封装的一层接口,我们都知道,JAVA的优点是跨平台,但是作为有蒂娜的同时,其在本地交互的时候出现了短板,java的跨平台性导致了本地交互的能力不够强大,一些和操作系统相关的特性无法满足,这才出现了java JNINDK是android所提供的一个工具借,通过NDK可以在a...
2018-07-13 15:01:45
1623
原创 Android开发艺术探索——第十三章:综合技术
这章主要是说如何收集Crash,如何解决65536问题,动态加载的方案以及反编译一.使用CrashHandler来获取应用的crashAndroid不可避免的会发生crash,也称之为崩溃,无论你的程序写得有多么完美,总是无法完全避免崩溃的存在。有可能java层也有可能底层,所以我们需要收集到相关的日志来解决问题,所以Thread给我们提供了一个setDefaultUncaughtExce...
2018-07-11 13:46:12
1018
原创 Android开发艺术探索——第十二章:Bitmap的加载和Cache
这章讲述的是Bitmap的加载和Cache,主要包含三个方面的内容,首先讲述如何有效的加载一个Bitmap,这是一个很有意义的话题,由于Bitmap的特殊性以及Android对单个应用所施加的内存限制,比如16MB,这就导致加载Bitmao的时候很容易的出现内存溢出:java.lang.OutofMemoryError:bitmap size exceeds VM budget因此如何高效...
2018-07-11 13:44:19
1246
原创 Android开发艺术探索——第十一章:Android的线程和线程池
这一章比较有趣,说的是线程和线程池,线程在Android中是一个很重要的概念,他分为主线程和子线程,主线程负责UI操作,子线程负责耗时操作,由于Android的特性,主线程耗时过长就会无响应,因此耗时操作必须放在子线程中去执行,除了Thread本身之外,Android自身还有一些线程类,比如AsyncTask和IntentService,像HandlerThread也算是一种特殊的线程,尽管Asy...
2018-07-05 20:04:32
1752
原创 Android开发艺术探索——第十章:Android的消息机制
一.Android的消息机制概述前面提到,Android的消息机制主要是指Handler的运行机制以及所附带的MessageQueue和Looper的工作过程,这三者实际上是一个整体,只不过我们在开发的时候比较接触多的是Handler而已,Handler的主要作用是将一个任务切换到某个指定的线程中去执行,那么Android为什么要提供这种功能呢?这是因为android的UI规范不允许子线程更新...
2018-07-04 17:04:19
1863
原创 Android开发艺术探索——第九章:四大组件的工作过程(下)
我們继续来看四大组件的工作过程一.BroadcastReceiver的工作过程广播的工作过程,我们主要看两个方面,一个是注册过程,另一个就是接收的过程,我们想使用广播是非常简单的,只需要继承BroadcastReceiver即可 class TestReceiver extends BroadcastReceiver{ @Override ...
2018-07-01 16:51:21
790
原创 Butter Knife注解框架的点点滴滴
Butter Knife这个框架实际上很多人很早就会了,或者说听说了,这里我就不再多赘述了,只是来教一下大家如何去快速上手和使用一.配置我们在项目app/build.gradle中添加依赖implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-...
2018-06-27 11:48:27
1389
3
原创 QT开发(十一)——项目实战:截图工具
我们继续来写小玩意,本来写了一个记事本,但是很无奈,功能实在是太多了,细节也需要处理的很多,所以很到一半就没写了,这次我们来写一个截图工具,先来看下UI的实现我们要实现的功能不多,但是经典1.新建截图(全屏)2.保存截图3.复制图片到系统粘贴板4.实时预览桌面5.右键菜单的实现大概就是这五个模块了,其中我们的延时使用的是定时器来实现的,好的,来看下吧!一.UIUI很简单,我们用了一个QL
2018-05-09 16:17:07
7806
原创 QT开发(十)—— C++/Qt 开发过程中的一些技巧性总结
我会不定期的把我发现的一些小技巧都总结下来,这样自己就算忘记了,翻翻博客也能找回来,也是极好的。一.C++1.变量的修饰auto:属于一次性存储,其存储空间可被若干变量重复覆盖使用register:存放在通用寄存器中extern:在所有函数和程序段中都可以引用static:在内存中时以固定地址存放的,在整个程序运行期间都有效2.显示转换操作符static_casedynameic_ca
2018-05-08 19:03:52
2619
原创 QT开发(九)—— Qt实现应用内动态切换语言,使用Qt语言家编译字体包
QT的多国语言做的还算是比较好的,我们来看下如何去做大致的可以分为如下几个步骤1.update生成ts文件2.使用QT语言家生成qm文件3.加载语言包我们先来看下如何生成ts文件,实际上这个很简单,我们有两种办法,首先是用IDE自己去编译,我们需要在pro文件中增加配置信息TRANSLATIONS = Tranlate_EN.ts\ Tranlate_CH.ts
2018-05-07 15:07:17
2998
原创 QT开发(八)—— Network网络操作,本地HOST,GET请求
QT的网络东西也蛮多的,我们今天先学一部分,然后后面在学一部分吧一个能使用网络的应用,我们需要在项目工程中的pro文件里进行标记QT += core gui#标记 网络QT += network然后我们来看下这一段代码void MainWindow::getHost(){ //获取主机名 QString localHostName = QHostInfo
2018-04-19 13:22:12
16747
2
原创 QT开发(七)—— 定时器事件,系统时间,随机数
我们来学习一些小知识点,分别是定时器的时间,系统时间,以及随机数,这里要说明一下,事件和信号是不一样的,不要混淆了,表面看起来都是为了触发某个功能,实际上你可以理解为时间他更偏向底层一些一.定时器事件我们其实学习过定时器 QT开发(五)—— 项目实战:秒表,QTime,Qtimer的使用在这个小项目中,我们使用的是通过timeout信号去实现的定时触发,实际上,与上篇一样,我们QT也有对应的事件
2018-04-18 14:38:44
1535
1
原创 QT开发(六)—— 鼠标,键盘事件
我们可以在QT中监听鼠标的各种事件和键盘的各种事件,在QT中,他已经为我们实现了这一系列的功能了,这个我们可以参考QEvent等事件类了,我这里就做一些简单的实际操作来带领大家认识一下这些有趣的函数;一.鼠标事件鼠标事件太多了,我一个个来讲鼠标左键和右键的区分,以及点击的坐标轴值等,实际上的动作都是点击,所以我们有一个函数mousePressEvent所以我们可以在头文件中重写这个函数prote
2018-04-18 13:50:29
33010
5
原创 QT开发(五)—— 项目实战:秒表,QTime,Qtimer的使用
我们继续QT之旅,这次写的依旧是个小东西,那就是秒表,这个秒表主要还是逻辑操作,实际上本身并没有多少内容,也就是学习了一下QTime和QTimer的使用,我们来看下UI是什么样子的这里就很简单了,我们先分析一下控件,最上面是一个QLCDNumber用来显示秒数,中间四个按钮用来控制,下面就是一个记录时间点的逻辑,控件使用的是QTextBrowser,好的,我们来看下头文件#ifndef MAINWI
2018-04-16 14:53:58
21731
5
原创 QT开发(四)—— 项目实战:学生管理系统,QMessageBox,QTableView和QFile的使用
Hello,大家好,我们又开始来学习新的QT小项目了,这个项目就是学生管理系统,我也是在网易云的课堂上学习的哦,如果想看效果图的直接滑到文章的最下面即可我们首先说一下,这个项目的组成是一个WindowView和两个Dialog,首先我们来看下主页的WindowView的UI效果可以看到这里非常的简单,只是放了一个Label,主要的功能在于左上角的菜单栏,关于菜单栏如何创建,可以看下UI上双击即可创建
2018-04-12 12:02:58
2654
原创 QT开发(三)—— 项目实战:计算器,打包发布软件
这次我们来做一个小案例,这个案例算是比较有特色的就是计算器了,我们采用MVC的方式来实现效果还是比较满意的实际上算了一下 大小然后再UI中可以设置指定的大小,就不会变形了,因为我们这个也不是主Window,而是一个Dialog我们先来说下我们使用的MVC架构,实际上,我们默认的UI文件,他就是View,也就是我们所说的界面,那么默认创建的UI源文件,就是C了也就是控制类,而M呢,就需要我们自己去实现
2018-04-10 19:56:24
1811
原创 QT开发(二)—— 信号与槽,编写登录页面UI
Qt的UI很多门道,也需要自己去画,这里我就不多BB了,直接写一个登录页面的简单逻辑,大家看完应该会有所了解,毕竟这是很基础的东西,我们一步步来信号与槽,其实就想是个点击事件,so easy , 他有两种实现方式,一种用ui来操作,这也是Qt的一个特色,一种就是代码实现了,我们先来说下简单的步骤吧!一.信号与槽假设我们有一个登录的按钮Button,他的objectName为btn_login,那我们
2018-04-10 14:50:26
4599
1
原创 QT开发(一)—— 安装QT Creator,创建属于你的Hello QT
Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系统等。也就是说,Qt 可以同时支持桌面应用程序开发、嵌入式开发和移动开发,很厉害,如果你有C++的基础就是最好的了,没有的话就赶紧去学习一下C++基础吧。一.安装QT Creator下载地址: 点击下载我们这里选择qt-opensource-windo
2018-04-06 21:52:48
2269
原创 Android系统篇(二)——Android编译核心Build系统
《深入解析Android5.0系统》 一书笔记Android的Build系统非常的庞大,他是基于GUN Make以及shell来构建的,我们主要的面对方向是Android.mk文件,这也是Android为我们处理好的,不用直接跟shell打交道,Build不光可以处理系统的编译打包,还能生成img镜像等,十分的强大。从大的方面来说,Build系统分为三大块,第一块处于build/core目录下的文
2018-03-29 16:32:10
12452
7
原创 Android系统篇(一)——建立Android系统开发环境
在开始研究Android系统之前,我们要准备好一些开发的资料,比如Ubuntu,源码,开发资料等,Android系统本身来说,非常的庞大,应用使用的是JAVA语言,底层使用C/C++,所以,如果条件允许的话,尽可能的多掌握一些吧。一.Ubuntu我们更多的可能会选择 Window + Ubuntu 来进行工作,所以我们会比较依赖虚拟机,在我之前的博客中已经有介绍了,这里不会重复介绍...
2018-03-13 17:18:42
37882
6
原创 Android开发艺术探索——第九章:四大组件的工作过程(中)
Android开发艺术探索——第九章:四大组件的工作过程(中)在上一篇我们一起学习了Activity的工作过程,这才是我们的的第一个组件,我们接着来看我们的后三个组件一.Service的工作过程本文中,我们将连接Service的启动过程和绑定过程,在分析Service的工作过程之前,我们先来了解一下如何使用Service,我们都知道,Service有两种状态,一种是启动状态,一种是绑定状态,前者是处
2018-01-02 22:31:35
1225
3
原创 2017年,毫无作为的感想篇
一年又过去了,细细数来,今年确实做成了的事情寥寥无几,不管是工作上还是生活上,还是开年的时候信誓旦旦的计划,不知道有多少人和我一样,感觉到今年是碌碌无为,亦或者毫无作为的一年。很多人喜欢谈一年的收获,完成了多少目标之类的,我就不这么俗套了,我还是带着我的疑问和看法和大家一起讨论下工作上的事情,人们把他叫做——“瓶颈”不知道从何时起,我这个90后孤寡老人开始变得异常的焦虑,不知道从何说起,可能是今年去
2018-01-02 14:43:26
2063
16
原创 Android开发艺术探索——第九章:四大组件的工作过程(上)
本篇幅要讲讲四大组件,这也是我们再熟悉不过的,分别是Activity,Service,BroadcastReceiver,ContentProvider,怎么使用我们这里就不多赘述了,我们本篇主要是讲他们的执行流程和工作原理,也让我们更加的了解他们,所以本章的侧重点在于四大组件的工作过程分析,通过分析他们的工作过程我们可以更好的理解系统内部运行机制,这也有助于我们对系统有一个更加深入的了解。一.四大
2017-12-24 21:39:00
2419
1
原创 Kotlin学习(四)—— 类和对象,继承,覆盖,抽象类,属性和字段,接口,可见性修饰符,扩展
一.类和对象1. 类Kotlin和java的类的声明都是一样的,用class表示,比如class TestClass {}如果是空类的话,大括号都可以省了2.构造函数一个主构造函数和多个次要函数,主函数在类名后,如class TestClass { //主函数 class TestClass constructor(firstName: String) { init
2017-12-22 11:40:57
1112
4
原创 Kotlin学习(三)—— 基本类型,包,控制流:if、when、for、while,Break和continue
一.基本类型Kotlin的数字表现,如下Double 64Float 32Long 64Int 32Short 16Byte 8这些就是全部的定义数字的方式了,而我们一般的写法也和JAVA类似十进制: 10086十六进制:0x0F二进制: 0b00001011Long类型:10086LFloat类型:10086fDouble类型:100.8
2017-12-12 13:50:13
2193
2
原创 AIDL 客户端与服务端的双向通信
时隔一年半了,终于写下了这个续篇,我发现我的很多博客有头无尾,都是有前面一点点,后面就没写去了,也正在想办法都补上初涉IPC,了解AIDL的工作原理及使用方法今天聊聊的是客户端和服务端的相互通信,何谓双向通信,事实上,我们在上一篇的博客中,只是讲解了客户端请求服务端的方法,然后服务端返回一个值给我们 这样,其实是最简单的用法,但是常常在我们的开发过程中,如果调用了某些方法,比如网络请求,那么就
2017-11-21 10:51:30
5369
3
原创 Kotlin学习(二)—— 基本语法,函数,变量,字符串模板,条件表达式,null,类型检测,for,while,when,区间,集合
一.基本语法Kotlin的很多概念跟JAVA是有类似的,所以我应该不会像我的JAVA之旅一样那么的详细,但是不用担心,你会看的很明白的,我也是根据官方的文档来学习的我们在IDEA中创建一个项目Kotlin021.函数(fun)我们默认有一个主函数,就是main了fun main(args: Array<String>) { print("主函数")}和JAVA一样,他就是程序的主入口了,当
2017-11-20 10:30:30
3265
6
原创 Kotlin学习(一)—— IDEAIntelliJ IDEA的安装配置及Kotlin的环境部署
Kotlin学习(一)——IDEAIntelliJ IDEA的安装配置及Kotlin的环境部署一.概括从这篇博客开始,我们就正式的开始学习Kotlin了,首先我们来了解下他的几个重点Kotlin 是一个基于 JVM 的新的编程语言,由 JetBrains 开发。Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。JetBrains,作为目前广受
2017-11-19 11:40:18
13400
8
原创 Android接入支付宝实现支付功能
Android接入支付宝实现支付功能我本来是想直接讲Android支付这一块的,包括支付宝,微信,其他第三方整合支付等,但是微信开放平台他对我的账号做了限制,所有我今天就先把重心放在支付宝的支付上,也算是写得尽可能详细些吧,毕竟是第三方的SDK,只要我们耐心的阅读文档和开发引导,这个其实不是很难的,我也是没有用过支付宝的支付,但是我相信,你看完这篇博客,也会对他了如指掌的,好的,我们正文开始一.准备
2017-06-28 13:46:17
41733
9
原创 Google Android Developer
Google Android Developer我记得我学习Android那会儿,老师也不是很会Android,所有经常是对着Google的文档读,那个时候翻墙也是个麻烦事,再加上全英文的时候文档,看起来还是很吃力,经常是开着有道词典一句一句的翻译,等后来工作了,才意识到,这玩意是个好东西呀,但是那个时候已经不怎么去看API指南了,后来经常看一些技术书籍,我发现很多的写书人也大多数是看着官方文档的印
2017-06-27 13:33:45
3703
2
原创 Android开发艺术探索——第八章:理解Window和WindowManager
理解Window和WindowManagerWindow表示的是一个窗口的概念,在日常生活中使用的并不是很多,但是某些特殊的需求还是需要的,比如悬浮窗之类的,他的具体实现是PhoneWindow,创建一个Window很简单,只需要WindowManager去实现,WindowManager是外界访问Window的入口,Window的具体实现是在WindowManagerService中,他们两个的交
2017-05-14 12:08:33
4753
4
原创 Android大型实战:《亲信,优雅的从入门到进阶》-刘桂林-专题视频课程
课程从入门到,实战经验丰富,通俗易懂,我将带领大家学习一些新技术,新概念!课程基本上拜托了初学者的拖沓,完全面向进阶知识,通过对比,论证知识点,来分析每个知识点的优缺点,以及源码的通读,归纳,总结!...
2017-05-11 14:08:43
464
原创 Python入门(四)——函数概述,参数,可变参数,关键字参数,组合参数,递归函数
Python入门(四)——函数概述,参数,可变参数,关键字参数,组合参数,递归函数Hello,各位,我们继续来学习python一.函数概述函数,就是方法嘛,其实在我们之前就已经接触过了,看一下代码#求长度print len(["xx", "yy"])#求绝对值print abs(-2)在这段代码中,这个len()和abs()就是函数而且有意思的是,函数可以赋值a = absprint a(-2)
2017-05-05 17:17:45
1683
1
原创 Android Sensor Development
Android Sensor Development本文我们说一下Android中的传感器,这对于我们有时候做一些特殊的应用的时候还是需要的,这里我用小米手机下载了一个安兔兔,我们来看下大致的传感器安兔兔上面,有很多的传感器对吧,但是他们大致的其实是分三类,在我们的官方文档上,是这样说的sensors_overview一.传感器概述大多数Android设备都具有测量运动,方向和各种环境条件的内置传感
2017-04-30 12:38:56
3264
4
原创 Python入门(三)——list和tuple,条件判断和循环,dict和set
Python入门(三)——list和tuple,条件判断和循环,dict和set好的,我们继续来学习python,这次我们讲容器,也就是list,我们可以这样表示一.liststudent = ["zhangsan", "lisi", "wangwu"]print studentprint "长度为:",len(student)这样我们可以看下输出的内容我们可以看到打印的内容,以及他的长度是3,也
2017-04-29 15:22:38
3394
1
原创 Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说那么的被动,我学习的是Python2.7,虽然现在随着版本的迁移至Python3,但是这个并不会对我们造成什么困扰,毕竟只是一个适应阶段我们的学习资料:廖雪峰官方网站Python2.7教程一.IDE选择P
2017-04-27 22:15:16
10818
7
原创 Python入门(一)——环境的搭建,创建第一个Python项目:Hello World
Python入门——环境的搭建,创建第一个Python项目:Hello World一.安装环境安装就很简单了,我们进入官网Python,然后下载对应的版本就好了如果你是Liunx的话,可以直接运行python关于环境的配置,大家百度下就好了。二.Eclipse配置Python这个配置和Android的开发差不多,Android需要ADT,而Python也是需要插件的我们点击【help-Install
2017-04-25 00:06:12
23844
2
原创 Android开发艺术探索——第七章:Android动画深入分析
Android开发艺术探索——第七章:Android动画深入分析Android的动画可以分成三种,view动画,帧动画,还有属性动画,其实帧动画也是属于view动画的一种,,只不过他和传统的平移之类的动画不太一样的是表现形式上有点不一样,view动画是通过对场景的不断图像交换而产生的动画效果,而帧动画就是播放一大段图片,很显然,图片多了会OOM,属性动画通过动态的改变对象的属性达到动画效果,也是ap
2017-04-22 19:02:15
3583
原创 RX系列五 | Schedulers线程控制
RX系列五 | Schedulers线程控制在我们上一篇文章中的,我们的小例子里有这么一段代码//网络访问.observeOn(Schedulers.io())事实上,我们在使用网络操作的时候,便可以控制其运行在哪个线程中,而Schedulers类,有四个方法,分别是Schedulers.immediate();Schedulers.newthread();Schedulers.io();
2017-03-24 11:44:22
8208
6
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人