摘要: 最近在做的一个需求被产品的各种奇葩要求和各种为了体验的迷之借口搞得面目前非,里面有很多异步请求,而且有时候是独立执行,有时候需要相互依赖的串行执行(A的结果回来了,成功的话执行B,不成功不管)。一开始我都是非常简单的在Activity中实现各种回调接口,然后在回调方法中调用下一个异步请求,为了能串行 阅读全文
posted @ 2016-07-23 16:51 krosshuang 阅读(3127) 评论(1) 推荐(0) 编辑
摘要: 自问自答的两个问题 在我们去讨论Handler,Looper,MessageQueue的关系之前,我们需要先问两个问题: 1.这一套东西搞出来是为了解决什么问题呢? 2.如果让我们来解决这个问题该怎么做? 以上者两个问题,是我最近总结出来的,在我们学习了解一个新的技术之前,最好是先能回答这两个问题, 阅读全文
posted @ 2016-03-16 12:58 krosshuang 阅读(803) 评论(0) 推荐(0) 编辑
摘要: 前言 我是通过 "这个" 来学习的。个人愚笨,琢磨了半天,终于搞通了,醉了醉了,以前一直使用svn,用git确实有点水土不服。本文以 如何使用git 为主来展开,不涉及太多理论。 git是 分布式 的版本管理。什么叫分布式呢,这个得和SVN集中式对比一下。 SVN就是把所有的版本信息都管理在一个服务 阅读全文
posted @ 2016-03-15 14:29 krosshuang 阅读(1076) 评论(0) 推荐(2) 编辑
摘要: 语法:描述一个程序语言的正确性语义:描述一个程序的含义上下文无关文法是用来描述语法的一种办法,而描述语义的难度太大。上下文无关文法中的一些概念:终结符号 可以理解为关键字或者一些最小单元的字符,比如while if 0 1 3 之类非终结符号 是终结符号的集合,是自己命名的一个东西比如 digi... 阅读全文
posted @ 2014-11-15 21:54 krosshuang 阅读(2567) 评论(1) 推荐(1) 编辑
摘要: Android源码分析,Animation,Choreographer 阅读全文
posted @ 2014-11-10 19:58 krosshuang 阅读(16160) 评论(4) 推荐(3) 编辑
摘要: 我是通过这个来学习的。个人愚笨,琢磨了半天,终于搞通了,醉了醉了,以前一直使用svn,用git确实有点水土不服。本文以如何使用git为主来展开,不涉及太多理论。git是分布式的版本管理。什么叫分布式呢,这个得和SVN集中式对比一下。SVN就是把所有的版本信息都管理在一个服务器上,其他端都是客户端,c... 阅读全文
posted @ 2014-10-27 19:37 krosshuang 阅读(2284) 评论(1) 推荐(0) 编辑
摘要: 首先上Gravity的代码,Android原版的Gravity搞得挺复杂的,太高端了。但基本思路是使用位运算来做常量,我就自己消化了一些,按自己的思路来实现。先上代码,在做分析。 1 package kross.android.widget; 2 3 /** 4 * 重力属性,控制容器内子控件的... 阅读全文
posted @ 2014-10-21 15:41 krosshuang 阅读(3059) 评论(0) 推荐(0) 编辑
摘要: 在上一篇博客《Android中Activity启动过程探究》中,已经从ActivityThread.main()开始,一路摸索到ViewRootImpl.performTraversals()了。本篇就来探究UI的绘制过程。performTraversals()方法非常长,其中关键性的三个步骤是依次... 阅读全文
posted @ 2014-10-17 17:05 krosshuang 阅读(4159) 评论(2) 推荐(6) 编辑
摘要: 首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.m... 阅读全文
posted @ 2014-10-15 20:01 krosshuang 阅读(18964) 评论(4) 推荐(3) 编辑
摘要: 最近深受轮子哥影响,觉得造一些轮子应该会对自己的技术功底有一定的帮助,就决定先从简单的容器开始实现。废话不多说,就先实现一个Java中的ArrayList。ArrayList是我们在Java中使用非常多的一个类,它是顺序表的数组实现,LinkedList是顺序表的链式实现(自己编的名字,懂就好哈),... 阅读全文
posted @ 2014-10-07 16:01 krosshuang 阅读(1863) 评论(0) 推荐(0) 编辑
摘要: 今天看博客,发现有了这个下拉刷新的控件,效果看上去还蛮好的,于是我也想研究的是使用一下,写个demo。其实使用很简单的,但就是为了能使用这个新组建我下了好久的更新,后来还是直接去官网下载最新的ADT得到解决。该控件的完整名字是android.support.v4.widget.SwipeRefreshLayout因此在XML文件里,必须使用这个完整的名字,另外这个类似于linearlayout,是作为整个xml文件里的根节点用的。 然后在java代码里,只需要获取到这个控件,给这个控件设置一个onRefreshListener即可。public stati... 阅读全文
posted @ 2014-04-05 20:04 krosshuang 阅读(10300) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.cnblogs.com/kross/p/3645594.html以前一直好奇QQ的输入框里面是如何出现表情的,今天看了下这个,心中发出“原来是这样啊”的感叹。通常情况下,我们都是使用字符串类型的变量,直接放置在TextView.setText()的参数里面的。这样只能单纯的输出字符串。如果要给TextView加上特殊的文本效果,就要使用SpannableString这个类了。用法如下:new一个SpannableString对象,将要显示的字符串作为构造方法的参数传入。调用SpannableString.setSpan(Object, int, int, int 阅读全文
posted @ 2014-04-04 17:29 krosshuang 阅读(6631) 评论(2) 推荐(1) 编辑
摘要: 原文地址:http://www.cnblogs.com/kross/p/3643708.htmlAlarmManager可以设定一个规定的时间,或者重复从某一个时间开始,等间隔的做一个操作。可以用来做一个闹钟程序,或者在特定的时间访问互联网。获取AlarmManager和获取系统的其他服务是一样的,使用如下代码:AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);我们通过AlarmManager来发送一条请求到BroadcastReceiver,先简单的实现一个BroadcastReceiver。public clas 阅读全文
posted @ 2014-04-03 19:30 krosshuang 阅读(1469) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.cnblogs.com/kross/p/3621952.html考虑到以后可能要用到这方面的知识,就来写个Demo尝试下,其实以前学过,但不记得了……(用不到的东西各种不记得啊)直接进入正题吧,在Android上使用Socket实际上跟在Java中使用差不多,只要注意下在Manifest中加网络权限就好了(我原来经常犯这个错误),另外网络请求不能再主线程里,基本就OK了。そして,先写一个服务器的小程序吧。就直接使用Java写就好了,灰常的简单,随便写写。/** * 测试服务器 * */public class TestServer { public sta... 阅读全文
posted @ 2014-03-24 22:01 krosshuang 阅读(2933) 评论(0) 推荐(1) 编辑
摘要: 原文地址:http://www.cnblogs.com/kross/p/3615695.html一直没弄懂Session,cookies什么的登陆验证到底是怎么回事,昨天分别用HttpURLConnection和HttpClient两个类来实验了一下,基本弄明白了Session验证登陆的机制和这两个类的区别。第一步:先在本地写一个登陆页面和一个内容页面(登陆了才能进去)吧。代码大致如下:下面是login.php,用于请求登陆的,通过post传递参数,如果登陆成功就会注册session。 1 进入网站";11 } else {12 echo "-1";13 }14. 阅读全文
posted @ 2014-03-21 13:42 krosshuang 阅读(6795) 评论(1) 推荐(1) 编辑
摘要: 先通过github下载cocos2d。これ:https://github.com/ZhouWeikuan/cocos2d进入上面的网址后,如果不会用git或者svn的朋友就在页面的右下角点那个“Download ZIP”即可。下载完成后解压,里面有个叫“cocos2d-android”的目录,因为我是Android开发,所以就会使用到这个目录。接下来在Eclipse里面包含这个文件夹。运行的时候有两个错误:1.第一个错误是这个项目是一个Library项目,在属性中取消它的Libray属性即可。接下来再运行会遇到第二个错误看了好久,终于发现是这个文件夹中已经包含了一个jar文件,和src中的源代 阅读全文
posted @ 2014-03-06 20:32 krosshuang 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 最近看到一个题目,代码如下: public static void main(String args[]) { Thread t = new Thread() { public void run() { pong(); } }; t.run(); System.out.println("ping"); } static void pong() { System.out.println("pong"); }问,结果... 阅读全文
posted @ 2014-03-02 21:24 krosshuang 阅读(653) 评论(0) 推荐(0) 编辑
摘要: 买了本《重构》,粗略的看了第一遍,把一些要点记录在印象笔记中了,发出来分享下。首先是,代码的坏味道:Duplicated Code重复代码某些代码重复出现,可以抽象到一个新的函数中,或者抽象到父类上去。Long Method过长函数过长函数是指,一个函数里面实现的功能太多,越长也就越难理解。你需要将一个过长的函数分解成各种小函数,命名是关键。Data Clumps数据泥团函数的参数非常的多,调用也频繁,其中一个参数被删掉,其他的参数就不是那么有意义了。可以把这些参数抽到一个类里面,直接传这个类的对象就好了。Large Class过大的类一个类如果做太多的事情,就会导致内部有很多实例变量,重复代 阅读全文
posted @ 2014-01-09 21:11 krosshuang 阅读(789) 评论(0) 推荐(1) 编辑
摘要: 最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修改了,最好还是从服务器上重新获取一下,那么就要在MainActivity里重新获取,假如把重新获取数据的操作放在MainActivity的onStart()方法里,那么MainActivity跳转到其它的地方再回来不需要请求数据的,它也必然会又请求一次,这样就白白的增大了服务器的压力。也就是说,要能有一个东西能判断,是从哪里跳转回到MainActivity的,这样就能判断是否需要重新进行网络请求了 阅读全文
posted @ 2013-12-11 14:22 krosshuang 阅读(10515) 评论(0) 推荐(1) 编辑
摘要: 最近一直在学习Android里面的事件分派机制,感觉很奇妙,看了很多博客和分析,才在脑子里形成了一个模糊的概念,对事件分派有了一定的认识。于是,我画了一个图来简单明了的表述Android中事件的分派机制:看了这个图,说起来就简单了。假设一个视图结构如左上角所示,最外面的父控件是一个ViewGroup A,内一层是ViewGroup B,最最里面的控件是View C。当用户去点击View C的时候,最先触发的是ViewGroup A的onInterceptTouchEvent()方法。这个方法是用来阻断事件的。如果返回false(默认返回false),事件就会继续向内层传递。 内层如果是Vie. 阅读全文
posted @ 2013-12-10 13:34 krosshuang 阅读(1326) 评论(10) 推荐(5) 编辑