上一页 1 ··· 320 321 322 323 324 325 326 327 328 ··· 353 下一页
摘要: android源码中包含了大量的设计模式,除此以外,android sdk还精心为我们设计了各种helper类,对于和我一样渴望水平得到进阶的人来说,都太值得一读了。这不,前几天为了了解android的消息处理机制,我看了Looper,Handler,Message这几个类的源码,结果又一次被googler的设计震撼了,特与大家分享。android的消息处理有三个核心类:Looper,Handler和Message。其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了,我们不会直接与MQ打交道,因此我没将其作为核心类。下面一一介绍:线程的魔法师 LooperL 阅读全文
posted @ 2014-04-13 01:57 brave-sailor 阅读(247) 评论(0) 推荐(0)
摘要: 我们在Java程序中使用日志功能(JDK Log或者Log4J)的时候,会发现Log系统会自动帮我们打印出丰富的信息,格式一般如下:为了免去解析StackTrace字符串的麻烦,JDK1.4引入了一个新的类,StackTraceElement。 一、问题的引入 我们在Java程序中使用日志功能(JDK Log或者Log4J)的时候,会发现Log系统会自动帮我们打印出丰富的信息,格式一般如下: [运行时间] [当前类名] [方法名] INFO: [用户信息] 具体例子如Tomcat启动信息: Jul 9, 2004 11:22:41 AM org.Apache.coyote.http... 阅读全文
posted @ 2014-04-13 01:46 brave-sailor 阅读(10973) 评论(0) 推荐(0)
摘要: Java中的守护线程 & 非守护线程守护线程 (Daemon Thread)非守护线程,又称用户线程(User Thread)用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。守护线程最典型的应用就是 GC (垃圾回收器)守护线程通常是由虚拟机自行创建使用,不过通过编码同样可以创建守护线程,而且 very easy:Thread daemonTread = new Thread(); // 设定 daemonThread 为 阅读全文
posted @ 2014-04-13 01:31 brave-sailor 阅读(500) 评论(0) 推荐(0)
摘要: 在本节中,你会学到1、定义接口2、实现接口3、将消息传递给fragment为了重用Fragment UI 组件,在设计中你应该通过定义每一个fragemnt自己的layout和行为,让fragment的自包含和模块化。一旦你定义了这些可重用的 Fragment,你可以通过Activity将它们关联起来并通过程序的逻辑代码将他们连接起来以实现整体组合的UI。你会经常想要一个fragment与另一个fragment通信,例如基于用户事件改变fragment中的内容。所有fragment质检单额通信都是通过Activity关联起来的。两个fragment之间不应该直接进行通信。定义接口为了允许fra 阅读全文
posted @ 2014-04-10 23:23 brave-sailor 阅读(221) 评论(0) 推荐(0)
摘要: Android开发学习之LauncherActivity开发启动的列表创建项目:OtherActivity项目运行结果:建立主Activity:OtherActivity.java[java]package wwj.otherActivity;import android.os.Bundle;import android.app.Activity;import android.app.LauncherActivity;import android.content.Intent;import android.view.Menu;import android.view.MenuItem;impor 阅读全文
posted @ 2014-04-10 22:27 brave-sailor 阅读(489) 评论(0) 推荐(0)
摘要: 有时候android传统的页面布局不足以满足我们的需求,常常需要自己定义view,通常继承View,然后重写构造方法以及onDraw等函数,再 具体实现自己定义的复杂view。我们知道在给控件赋属性时,通常使用的是android系统自带的属性,比如 android:layout_height="wrap_content",除此之外,我们亦可以自己定义属性,这样在使用的时候我们就可以使用形如 myapp:myTextSize="20sp"的方式了,步骤大致如下:1》在项目文件res/value下面创建一个attr.xml文件,该文件中包含若干个attr集合 阅读全文
posted @ 2014-04-10 21:28 brave-sailor 阅读(402) 评论(0) 推荐(0)
摘要: Camera拍照:今天做照相机程序,结果写好了发现出问题了,预览的图像差90度。相关源代码如下: Camera.Parameters params = camera.getParameters(); params.setPreviewSize(width, height);params.setPreviewFrameRate(4); params.setPictureFormat(PixelFormat.JPEG); params.set("jpeg-quality", 85); params.setPictureSize(width, height); camera.se 阅读全文
posted @ 2014-04-10 16:00 brave-sailor 阅读(898) 评论(0) 推荐(0)
摘要: this 在 JavaScript 开发中占有相当重要的地位,不过很多人对this这个东西都感觉到琢磨不透。要真正理解JavaScript的函数机制,就非常有必要搞清楚this到底是怎么回事。函数调用方式不同,this 含义也跟着不同。JavaScript语言中有七种调用函数方式:第一种:调用方法var obj = { method: function() { alert(this === obj); }}obj.method();上面这行obj.method()显然method是作为方法被调用,这种情况下,函数体中的this绑定的就是method的宿主对象,也就是obj。从这种调用方式我们得 阅读全文
posted @ 2014-04-10 14:14 brave-sailor 阅读(327) 评论(0) 推荐(0)
摘要: 简单的说,比较两个int型或long型的数据没有什么问题,可以用==来判断,但对浮点数(float与double)来说,需要对Float.NaN和0.0这个两个特殊数字作额外的处理。Float.NaN严格说来不是一个数字(它的字面意思也就是Not a Number),但是因为这个值可以被保存在一个float型的变量中(因为它常常是除0的结果),所以暂且当它是个数字吧。但它与一般的浮点数有些许不同,就是两个NaN用==比较的结果会得到false。可以用下面的代码验证:Code highlighting produced by Actipro CodeHighlighter (freeware)h 阅读全文
posted @ 2014-04-10 13:11 brave-sailor 阅读(1070) 评论(0) 推荐(0)
摘要: 看到很多书中都没有对PreferenceActivity做介绍,而我正好又在项目中用到,所以就把自己的使用的在这总结一下,也方便日后查找。PerferenceActivity是什么,看下面的截图: Android系统截图(左) MusicPlayer Setting截图(右) 好了,我们看到Android系统本身就大量用到了PreferenceActivity来对系统进行信息配置和管理,那么它是怎么保存数据的呢,如何创 建PrefenceActivity的呢,更关键是怎样触发相应事件的呢。 先看第一个问题,PreferenceActivity是如何保存的数据。对Android系统了解的都知道, 阅读全文
posted @ 2014-04-10 09:25 brave-sailor 阅读(490) 评论(0) 推荐(0)
上一页 1 ··· 320 321 322 323 324 325 326 327 328 ··· 353 下一页