随笔-240  评论-610  文章-0 
  置顶随笔
摘要: viewpagerindicator,既使用viewpager翻页时候,标题的指示条随着改变的控件,是常用android控件之一,几乎所有的新闻类APP中都有使用。如下图所示: 今天,我们将从0到1实现这一控件。 其实,实现这一控件思路很简单: ①对头部的标题栏进行布局,头部标题栏,只能进...阅读全文
posted @ 2015-12-04 16:53 laozhu1124 阅读(4224) 评论(2) 编辑
摘要: 来自星星的你,一个风靡全亚洲的连续剧。这里来自星星的你——既是一个消灭星星的游戏。既是一个大名鼎鼎的游戏——消灭星星。那请看我游戏运行后最终的结果: 下面,我们来看一看相应的游戏mvc思维导图: 下面是类的结构图: 下面进行主要类的介绍,这节主要介绍三个接口。 第一个接口,I...阅读全文
posted @ 2014-04-25 08:42 laozhu1124 阅读(2179) 评论(4) 编辑
摘要: 所有的android的app启动都有三种深入启动的方式: ①app——Runtime Service——Lib 这种启动方式是: Ⅰapp程序中启动application framework 层中Runtime Service ⅡRuntime Service通过jni调用Libray层中的Native Binding ⅢNative Binding通过动态加载的方式来调用HAL Library层的东西 ⅣHAL Library再调用Linux Kernel的东西 相应示意图如下: ②app——Runtime Service——Native Service——Lib Ⅰap...阅读全文
posted @ 2014-04-10 08:15 laozhu1124 阅读(2054) 评论(3) 编辑
摘要: android系统启动的时候首先会启动Linux的基础进程,加载Linux kernel启动初始化(init)进程。 接着,回启动Linux deamon(守护进程)会启动以下的内容: ①启动USBdusb管理守护进程来管理USB连接。 ②启动adb守护进程来管理adb连接 ③启动debugged守护进程来管理调试程序请求。 ④启动ridle守护进程来管理无线管理进程. 请看图: 在启动init进程会启动守护进程同时,同时还会启动一个zygnote进程,其步骤如下: ①初始化一个davilk虚拟机实例 ②装载一个socket请求所需的类和监听 ③创建虚拟机实例来管理虚拟机...阅读全文
posted @ 2014-04-09 08:39 laozhu1124 阅读(1445) 评论(0) 编辑
摘要: 俗话说的好啊,“工于利启事,必先善其器”,如果说你的编程功底是一个枪法的话,那么强大的eclipse就是android战士们最好的武器。 这里,我们来总结eclipse的使用技巧,从而使我们的编程达到一个事半功倍的效果。一、我的地盘我做主——切换工作空间,拷贝相应工作空间的样式。工作空间就是你的工程项目放在的位置。这本身没有什么好说的,但是大概80%程序员就把所有的项目放在同一个工作空间下面。就像这样子:这样子虽然没有什么大问题,但是至少带来了2个坏处:一、eclipse打开的时候加载的时候非常非常的慢,像上面这么多工程,加载完成需要他妈的4-5分钟。二、你如果真正要找个什么东西的话,由于同一阅读全文
posted @ 2014-03-15 19:09 laozhu1124 阅读(16002) 评论(4) 编辑
摘要: 在Linux系统中,是以进程为单位分配和管理资源的。出于保护机制,一个进程不能直接访问另一个进程的资源,也就是说,进程之间互相封闭。但是,在一个复杂的应用系统中,通常会使用多个相关的进程来共同完成一项任务,因此要求进程之间必须能够互相通信,从而共享资源和信息。所以,操作系统内核必须提供进程间的通信机制(IPC)。在Linux中,进程间的通信机制有很多种,例如可以采用命名管道(namedpipe)、消息队列(messagequeue)、信号(signal)、共享内存(sharememory)、socket等方式,它们都可以实现进程间的通信。但是,在Android终端上的应用软件的通信几乎看不到这阅读全文
posted @ 2014-03-08 21:22 laozhu1124 阅读(1183) 评论(0) 编辑
摘要: 这节中,我们我们来讨论微盾上界面上实现的二三事。这也是这个项目的重头戏。界面上我们要做一个什么效果,一个倒计时的效果了,这个倒计时效果以后用的很多,希望对大家有帮助。我这里布局方式用到了帧布局的方式,一个是所谓的表盘的情况,一个是倒计时的秒针, 相应的布局文件如下了: 那个RingView是我自定义的表盘控件,它即在手机的界面上画了一个园,而这个CountdownIndicator即是一个倒计时控件,它是一个什么,一个扇形,一个随着时间的变化而不断改变自己大小的扇形。这两个控件的原理是什么了,我们来窥探它一下原貌了。首先看一...阅读全文
posted @ 2014-03-07 08:05 laozhu1124 阅读(1304) 评论(0) 编辑
摘要: 一、Tablelayout简介 Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。当为View时,该View将独占一行。二、TableLayout行列数的确定(最大的原则) TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行。TableLayout的列数等于含有最多子控件的TableRow的列数。如第一TableRow含2个子控件,第二个TableRow含3个,第三个TableRo...阅读全文
posted @ 2014-03-06 15:53 laozhu1124 阅读(21518) 评论(0) 编辑
摘要: 在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果。其主要特征如下:处理异步Http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,不会阻塞UI操作,通过线程池处理并发请求处理文件上传、下载,响应结果自动打阅读全文
posted @ 2014-03-06 08:52 laozhu1124 阅读(25369) 评论(0) 编辑
摘要: 上节我们说到我们主要的算法是在Google的一个开源项目Google Authenticator 修改的。那么我们窥探一下Google Authenticator的全貌。我们通过源代码来了解,上代码:首先是一些噼里啪啦的定义的常量,变量。private static final int PASS_CODE_LENGTH = 6; static final int INTERVAL = 30; private static final int ADJACENT_INTERVALS = 1; private static final int PIN_MODULO = (int) ...阅读全文
posted @ 2014-03-04 07:26 laozhu1124 阅读(1133) 评论(0) 编辑
摘要: 上节我们说到,关于opt算法的说明,也说到这个项目是使用TOTP(基于时间)方法。 这节讲的主要把它怎么整合项目中。整合项目中,此算法需要注意这么几点。1. 与服务器端统一的准确时间由于是使用totp算法,客户端与服务器端的算法是必须要保存一致的。对时接口,获取服务器端准确时间,返回{“svr_time”:1319512158},以秒为单位的时间戳。时间偏移量 = 本地时间 – 服务器端时间,将时间偏移量保存在地SharePreference中,供计算动态密码时读取服务器端时间 = 本地时间 - 时间偏移量使用时间偏移量的好处是:只需要从服务器获取一次时间,以后都可以离线使用微盾。2. 静态密阅读全文
posted @ 2014-03-03 07:58 laozhu1124 阅读(1387) 评论(3) 编辑
摘要: 这是一个老黄历的事件,曾记得淘宝上的卖家卖10元卖50g网络硬盘,并且卖的相当的火,一个月就卖了500个账号。由于我也是那个事件的亲身经历者之一,这里就看到了IMEI号在项目中防止作弊是何其的重要。是不是,觉得我说的什么云里雾里的东西吧。好吧,我这里就说整个事件的前因后果把。是这样子,那个时候,新浪的微盘还不是很火的时候,当然了新浪微盘一直都没有真正火爆过,他为了提高他的装机量,他的注册用户量。那个时候,htc的手机还是异常的火爆,他们同htc搞活动,要求内置微盘的客户端了,而htc则要求新浪微盘送他们的用户50g的微盘的空间了。这一切倒影是理所当然。 但作为微盘的开发者们,没有在没有htc用阅读全文
posted @ 2014-03-02 22:37 laozhu1124 阅读(2570) 评论(4) 编辑
摘要: 近日来,我在倒腾360手机卫士的时候,发现,你无论是把他数据清空,还是把它强行停止以后,甚至是把它卸载以后,它的service都没有被Android的系统干掉,依然是岿然不动了。我就感到了纳闷了,后来和群里的大牛讨论后,才知道360手机卫士真他妈的流氓,它是靠第三方的应用,360手机卫士将其开启。这就引出了,我们今天的话题,说一说service的重启方式,从而获取到最高的权限了。1. 在service的OnDestroy中重新start service。正规的stopservice的退出后,都会调用OnDestroy方法了,咦,我们何不在此方法后调用start service了,要想保证一个s阅读全文
posted @ 2014-03-02 16:38 laozhu1124 阅读(3173) 评论(6) 编辑
摘要: 这个新浪微盾客户端的核心算法,就是这个OTP算法。这个otp算法是什么了?OTP是One-Time Password的简称,可称之为一次性口令,也称动态口令。每个口令只能使用一次,按照时间或使用次数不断动态变化,是随机、不可预测、不重复使用的数字组合。这个OTP算法,在大型企业中,办公网的接入和VPN的访问或者其他重要数据的访问等通常都需要使用一次性口令来进行认证。常用OTP算法说明1.1 HOTP(基于事件)1.1.1 算法概述HOTP算法是基于一个加法计数器和一个静态对称密钥的,该密钥仅有令牌和认证服务器知道,如下:C: 一个递增的值,可以看作是一个计数器K: 一个静态对称密钥每次进行密码阅读全文
posted @ 2014-03-02 10:12 laozhu1124 阅读(1168) 评论(0) 编辑
摘要: 最经公司的项目需要实现类似于新浪微盾功能的功能,因此我把这个实战的demo的经历分享给大家。新浪微盾是啥子玩意?微盾是由新浪网推出的一款产生一次性动态密码的产品,可以用于新浪旗下各服务,包括新浪微博,新付通,SAE等。可有效提高帐号安全性。说白了,就是为了提高账号的安全性的,来实现的一套“加密”的工具。他分硬件和软件两种。文件硬件图如下:这个是不是和大家使用的u盾很像吗?而他的Android版效果图如下:这也是,我们要在以后的教程中要实现的最终结果。阅读全文
posted @ 2014-03-01 20:10 laozhu1124 阅读(305) 评论(0) 编辑
摘要: android sdk 退出机制的研究 有多种,方法一、用list保存activity实例,然后逐一干掉上代码:import java.util.LinkedList;import java.util.List;import android.app.Activity;import android.app.AlertDialog;import android.app.Application;import android.content.DialogInterface;import android.content.Intent;public class SysApplication extends阅读全文
posted @ 2014-03-01 18:36 laozhu1124 阅读(211) 评论(0) 编辑
摘要: Causedby:java.lang.UnsatisfiedLinkError:Couldn'tloadBaiduMapVOS_v2_1_3:findLibraryreturnednull在使用百度地图的时候碰到了这问题网上搜了下各种方法都不顶用我想死的心都有了。。有没有碰到过这问题的求分享下经验啊。。。。。。。。后来看了百度地图sdk的demo以后,是因为有一个文件 liblocSDK.so,必须放在 libs/armeabi 目录下。将其对应的liblocSDK.so拷到相应的目录下,问题完美解决了。问题是完美解决了,可这个liblocSDK.so文件是什么样的东东了。后来查了一下阅读全文
posted @ 2014-03-01 16:59 laozhu1124 阅读(19416) 评论(0) 编辑
摘要: 最近反编译了几个Android软件,发现一些以前未用到的资源文件:ids.xml——为应用的相关资源提供唯一的资源id。id是为了获得xml中的对象而需要的参数,也就是Object = findViewById(R.id.id_name)中的id_name。这些值可以在代码中用android.R.id引用到。若在ids.xml中定义了ID,则在layout中可如下定义@id/price_edit,否则@+id/price_edit。为什么使用ids?我个人认为有以下几点作用:(1)优化编译效率。我们知道android的组件必须用一个int类型的id属性来标识其唯一性,id属性必须以@开头的值,阅读全文
posted @ 2014-02-26 08:23 laozhu1124 阅读(2738) 评论(0) 编辑
摘要: 最近研究oauth协议,为了进一步 的巩固自己的学习成果,顾完成了android的新浪客户端。他的架构如下:UI层微博中的各个窗体 就是所谓的各个activitylogic层程序的核心控制调度模块,获取UI传递的数据、要执行的任务,调用微博接口,获得网络数据,返回消息,刷新(切换)UI相当于mvc中的control,处理相应的业务逻辑.微博接口层(新浪API已封装)网络访问层(新浪API已封装)Dao层数据库操作以上都是mvc中的model,即使相应数据操作。下面对logic层进行一个简介:Task类 有程序中的任务taskID 表示相应的业务的idtaskParams 表示 一个业务要处理的阅读全文
posted @ 2014-02-24 13:34 laozhu1124 阅读(509) 评论(0) 编辑
摘要: android的handler 是一个神奇东西,处理异步消息的时候,我们离不开他.那么他的具体的介绍是什么了?Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。对于handler的常用的一些方法有:post(Runnable) postAtTime(Runnable,long) postDelayed(Runnable long) sendEmptyMessage(int阅读全文
posted @ 2014-02-23 19:00 laozhu1124 阅读(3742) 评论(0) 编辑
  2016年8月26日
正文内容加载中...
posted @ 2016-08-26 16:26 laozhu1124 阅读(844) 评论(0) 编辑
  2016年5月19日
摘要: 前言 列表,它作为一种非常重要的显示形式,不管是在web端还是在移动平台上,都是一种非常友好的,功能强大的展现形式。在Android中,ListView就接管了这一重任。尽管在Android5.X时代,后起之秀RecyclerListView在很多地方会取代ListView。但这依然无法撼动List阅读全文
posted @ 2016-05-19 13:57 laozhu1124 阅读(6143) 评论(0) 编辑
  2016年5月12日
摘要: 亲爱的同学们,我们在在线教育领域沉淀了1年多以后,决定自己创业做在线直播授课,我们召集了一大批顶尖的讲师,始终把帮助大家通过学习实现人生价值放在第一位,我们也欣慰于通过分享我们的技术和知识让更多的学员改变命运。我们希望做一家受人尊敬的企业,我们希望做一位受人尊敬的老师。我们为已经有安卓基础的学员,研阅读全文
posted @ 2016-05-12 09:32 laozhu1124 阅读(121) 评论(0) 编辑
  2016年4月25日
摘要: 相对于在Android2.x版本上出现的长按、点击事件的效果,不得不说,滑动操作具有更好的用户体验。因此,从Android 4.X版本开始,出现了更多滑动操作的效果。越来越多第三方应用模仿这样的效果,来改善自己的应用。本文,我们刨根问底来探寻滑动效果的产生。 滑动效果如何产生 滑动一个View,其本阅读全文
posted @ 2016-04-25 08:50 laozhu1124 阅读(1235) 评论(0) 编辑
  2016年4月21日
摘要: 像使用百度地图api时候,一般需要获取keystore的SHA1值,这里就手把手教大家如何查看Android的keystore文件中的SHA1值。 第一步: 打开cmd,切换到keystore所在的文件夹下 第二步: 输入 keytool -list -v -keystore xxx 回车,如果ke阅读全文
posted @ 2016-04-21 15:32 laozhu1124 阅读(1323) 评论(0) 编辑
  2016年4月18日
摘要: 对于Android事件拦截机制,相信对于大多数Android初学者是一个抓耳挠腮难于理解的问题。其实理解这个问题并不困难。 首先,你的明白事件拦截机制到底是怎么一回事?这里说的事件拦截机制,指的是对触摸事件的拦截机制。那何为触摸事件?所谓的触摸事件,就是指系统捕获的触摸屏幕所产生的事件。当我们点击按阅读全文
posted @ 2016-04-18 14:48 laozhu1124 阅读(2016) 评论(3) 编辑
  2016年4月12日
摘要: 前面几节,我们重点讨论了自定义View的三板斧,这节我们来讨论自定义ViewGroup,为什么要自定义ViewGroup,其实就是为了更好的管理View。 自定义ViewGroup无非那么几步: Ⅰ、重写OnMeasure()方法,测试子控件的大小。 Ⅱ、重写onLayout()方法,计算子控件的布阅读全文
posted @ 2016-04-12 11:28 laozhu1124 阅读(1233) 评论(2) 编辑
  2016年4月7日
摘要: Android系统本身给我们提供十分丰硕的组件让我们实现包罗万象的UI效果,与此同时,我们也能够非常方便实现各种方法来实现各种强大的功能。通过继承现有的UI控件,我们也能够拓展现有的功能。我们也能够完全自定义控件,实现Android系统所没有的功能。自定义控件,对于Android初学者来说,是一个老阅读全文
posted @ 2016-04-07 19:46 laozhu1124 阅读(1463) 评论(2) 编辑
  2016年4月5日
摘要: 通常情况下,Android实现自定义控件无非三种方式。 Ⅰ、继承现有控件,对其控件的功能进行拓展。 Ⅱ、将现有控件进行组合,实现功能更加强大控件。 Ⅲ、重写View实现全新的控件 本文来讨论最难的一种自定义控件形式,重写View来实现全新的控件。 首先,我们要明白在什么样的情况下,需要重写View来阅读全文
posted @ 2016-04-05 09:29 laozhu1124 阅读(6593) 评论(4) 编辑
  2016年3月28日
摘要: 通常情况下,Android实现自定义控件无非三种方式。 Ⅰ、继承现有控件,对其控件的功能进行拓展。 Ⅱ、将现有控件进行组合,实现功能更加强大控件。 Ⅲ、重写View实现全新的控件 上文说过了如何继承现有控件来自定义控件,这节我们来讨论第二个议题。怎么将控件组合来实现一个功能强大的自定义控件。 先看看阅读全文
posted @ 2016-03-28 08:42 laozhu1124 阅读(2267) 评论(4) 编辑

淘宝免费计数器