随笔分类 - Android
摘要:最近在做的一个需求被产品的各种奇葩要求和各种为了体验的迷之借口搞得面目前非,里面有很多异步请求,而且有时候是独立执行,有时候需要相互依赖的串行执行(A的结果回来了,成功的话执行B,不成功不管)。一开始我都是非常简单的在Activity中实现各种回调接口,然后在回调方法中调用下一个异步请求,为了能串行
阅读全文
摘要:自问自答的两个问题 在我们去讨论Handler,Looper,MessageQueue的关系之前,我们需要先问两个问题: 1.这一套东西搞出来是为了解决什么问题呢? 2.如果让我们来解决这个问题该怎么做? 以上者两个问题,是我最近总结出来的,在我们学习了解一个新的技术之前,最好是先能回答这两个问题,
阅读全文
摘要:Android源码分析,Animation,Choreographer
阅读全文
摘要:首先上Gravity的代码,Android原版的Gravity搞得挺复杂的,太高端了。但基本思路是使用位运算来做常量,我就自己消化了一些,按自己的思路来实现。先上代码,在做分析。 1 package kross.android.widget; 2 3 /** 4 * 重力属性,控制容器内子控件的...
阅读全文
摘要:在上一篇博客《Android中Activity启动过程探究》中,已经从ActivityThread.main()开始,一路摸索到ViewRootImpl.performTraversals()了。本篇就来探究UI的绘制过程。performTraversals()方法非常长,其中关键性的三个步骤是依次...
阅读全文
摘要:首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈。如下图所示:于是我们先看android.app.ActivityThread的main()方法。android.app.ActivityThread.m...
阅读全文
摘要:今天看博客,发现有了这个下拉刷新的控件,效果看上去还蛮好的,于是我也想研究的是使用一下,写个demo。其实使用很简单的,但就是为了能使用这个新组建我下了好久的更新,后来还是直接去官网下载最新的ADT得到解决。该控件的完整名字是android.support.v4.widget.SwipeRefreshLayout因此在XML文件里,必须使用这个完整的名字,另外这个类似于linearlayout,是作为整个xml文件里的根节点用的。 然后在java代码里,只需要获取到这个控件,给这个控件设置一个onRefreshListener即可。public stati...
阅读全文
摘要:原文地址:http://www.cnblogs.com/kross/p/3645594.html以前一直好奇QQ的输入框里面是如何出现表情的,今天看了下这个,心中发出“原来是这样啊”的感叹。通常情况下,我们都是使用字符串类型的变量,直接放置在TextView.setText()的参数里面的。这样只能单纯的输出字符串。如果要给TextView加上特殊的文本效果,就要使用SpannableString这个类了。用法如下:new一个SpannableString对象,将要显示的字符串作为构造方法的参数传入。调用SpannableString.setSpan(Object, int, int, int
阅读全文
摘要:原文地址:http://www.cnblogs.com/kross/p/3643708.htmlAlarmManager可以设定一个规定的时间,或者重复从某一个时间开始,等间隔的做一个操作。可以用来做一个闹钟程序,或者在特定的时间访问互联网。获取AlarmManager和获取系统的其他服务是一样的,使用如下代码:AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);我们通过AlarmManager来发送一条请求到BroadcastReceiver,先简单的实现一个BroadcastReceiver。public clas
阅读全文
摘要:原文地址:http://www.cnblogs.com/kross/p/3621952.html考虑到以后可能要用到这方面的知识,就来写个Demo尝试下,其实以前学过,但不记得了……(用不到的东西各种不记得啊)直接进入正题吧,在Android上使用Socket实际上跟在Java中使用差不多,只要注意下在Manifest中加网络权限就好了(我原来经常犯这个错误),另外网络请求不能再主线程里,基本就OK了。そして,先写一个服务器的小程序吧。就直接使用Java写就好了,灰常的简单,随便写写。/** * 测试服务器 * */public class TestServer { public sta...
阅读全文
摘要:原文地址: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.
阅读全文
摘要:先通过github下载cocos2d。これ:https://github.com/ZhouWeikuan/cocos2d进入上面的网址后,如果不会用git或者svn的朋友就在页面的右下角点那个“Download ZIP”即可。下载完成后解压,里面有个叫“cocos2d-android”的目录,因为我是Android开发,所以就会使用到这个目录。接下来在Eclipse里面包含这个文件夹。运行的时候有两个错误:1.第一个错误是这个项目是一个Library项目,在属性中取消它的Libray属性即可。接下来再运行会遇到第二个错误看了好久,终于发现是这个文件夹中已经包含了一个jar文件,和src中的源代
阅读全文
摘要:买了本《重构》,粗略的看了第一遍,把一些要点记录在印象笔记中了,发出来分享下。首先是,代码的坏味道:Duplicated Code重复代码某些代码重复出现,可以抽象到一个新的函数中,或者抽象到父类上去。Long Method过长函数过长函数是指,一个函数里面实现的功能太多,越长也就越难理解。你需要将一个过长的函数分解成各种小函数,命名是关键。Data Clumps数据泥团函数的参数非常的多,调用也频繁,其中一个参数被删掉,其他的参数就不是那么有意义了。可以把这些参数抽到一个类里面,直接传这个类的对象就好了。Large Class过大的类一个类如果做太多的事情,就会导致内部有很多实例变量,重复代
阅读全文
摘要:最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修改了,最好还是从服务器上重新获取一下,那么就要在MainActivity里重新获取,假如把重新获取数据的操作放在MainActivity的onStart()方法里,那么MainActivity跳转到其它的地方再回来不需要请求数据的,它也必然会又请求一次,这样就白白的增大了服务器的压力。也就是说,要能有一个东西能判断,是从哪里跳转回到MainActivity的,这样就能判断是否需要重新进行网络请求了
阅读全文
摘要:最近一直在学习Android里面的事件分派机制,感觉很奇妙,看了很多博客和分析,才在脑子里形成了一个模糊的概念,对事件分派有了一定的认识。于是,我画了一个图来简单明了的表述Android中事件的分派机制:看了这个图,说起来就简单了。假设一个视图结构如左上角所示,最外面的父控件是一个ViewGroup A,内一层是ViewGroup B,最最里面的控件是View C。当用户去点击View C的时候,最先触发的是ViewGroup A的onInterceptTouchEvent()方法。这个方法是用来阻断事件的。如果返回false(默认返回false),事件就会继续向内层传递。 内层如果是Vie.
阅读全文
摘要:转载请注明出处:http://www.cnblogs.com/kross/p/3458068.html最近在做一些UI,很蠢很蠢的重复写了很多代码,比如一个自定义的UI Tab,由一个ImageView和一个TextView构成,如果不自定义属性的话,就需要单独new出几个Tab,然后分别给它们设置Drawable和Text。如果能使用XML属性的话,就直接在XML文件中就可以给Tab设置好Drawable和Text。Java中就可以少些几行代码。网上看了好多例子,大部分内容都是大同小异,(可能是因为各种转载的原因吧)。有很多细节都没有提及到。自己也是琢磨了半天才弄通。自定义XML属性,就是可
阅读全文
摘要:官方文档地址:http://developer.android.com/guide/topics/ui/declaring-layout.htmlPS:API Guides里面的内容不免都简单些,翻译还是很渣,明明知道意思,但按着它的原话翻感觉就是很怪……一个布局为用户接口定义了视觉上的结构,像activity或app widget的UI界面。你可以使用两种方式来声明布局:在XML中定义UI元素。Android提供了一个直截了当的XML词汇表,与那些小控件,布局的视图类以及它们的子类关联。在运行时实例化布局元素。你的应用可以通过编程的方式创建View和ViewGroup对象(并且操纵它们的属性
阅读全文
摘要:最近一直想做下拉刷新的效果,琢磨了好久,才走到通过onTouch方法把整个视图往下拉的步骤,接下来就是能拉下来,松开手要能滑回去啊。网上看了好久,没有找到详细的下拉刷新的例子,只有自己慢慢琢磨了。昨天和今天,研究了两天,下拉之后回滚回去的效果终于今天做出来了!开心。现在来分享下我的实现方法和一些心得体会吧。我看了网上一个大神的例子,发现是在onTouch里面使用View的scrollTo(int, int)方法,来使整个视图往下滚动的,我尝试了使用setTranslationY()来对视图进行回滚,第一次是没问题的,但多滚动几次之后,整个视图实际上已经到了非常“高”的地方了,要拉很长的距离才能
阅读全文
摘要:官方文档原文地址:http://developer.android.com/guide/components/bound-services.html一个Bound Service是一个客户端-服务器接口的服务。一个Bound Service允许组件(像activity)绑定一个service,发送请求,接受结果,甚至进行进程间通信。一个Bound Service通常只在他向其它组件提供服务的时候运行,不会无法确定的运行在后台的。这篇文档将展示你如何去创建一个Bound service,包括如何绑定一个bound service到其它的应用程序组件上。然而,你也应该关注Service的文档来获取
阅读全文
摘要:官方文档原文地址:http://developer.android.com/guide/components/services.htmlService是应用程序组件之一,它并不提供一个用户界面,可以负责一些在后台运行时间较长的操作。其它的应用程序组件可以启动它,就算用户切换到其它的应用上面,Service还将继续在后台运行着。另外,一个组件可以绑定一个Service并与之交互,甚至可以进行进程间通信。打个比方,service可以处理网络传输,播放音乐,执行文件IO,或者与Content Provider进行交互,这些都可以在后台进行。一个Service从本质上来说有两种形式:Started .
阅读全文
浙公网安备 33010602011771号