爱做产品的程序猿
Understanding Android Custom Attributes: An Article Being able to modify behavior of a run ti...
Drawing Phase: Mechanics of onDraw The draw traversal is implemented in the View's draw() method.
一、In Android you can customize views in three ways: 1、Custom views (by extending the View class...
原文:http://www.blogjava.net/action/articles/17339.
一、为什么要进行序列化 再介绍之前,我们有必要先了解下对象的生命周期,我们知道Java中的对象都是存在于堆内存中的,而堆内存是可以被垃圾回收器不定期回收的。
有时我们需要对集合框架(包括Set、 List、 Map)中的元素进行排序,比如在Android开发中经常要用到ListView来显示一个列表,而这个列表中的数据很多时候都是使用一个ArrayList来存储的,因为ArrayList中的元素一般都是以存储顺序排序的(向List中添加元素,一般都是调用add方法将新元素添加在末尾,当然也可以调用另一个重载的add方法将元素添加到指定位置),很明显仅按添加顺序排序是不行的,所以我们有必要对ArrayList中的元素进行排序。
Java集合中泛型指的是在创建集合的时候要同时指定集合中存放的对象类型,这样做主要是基于类型安全方面的考虑。
集合HashSet中对象的特点是无序、不允许重复。无序好理解,那么两个什么样的对象算重复呢? 两个对象重复意味着这两个对象的内容相同、hashcode值也相同。
Java中的线程的生命周期大体可分为5种状态。 ①NEW:这种情况指的是,通过New关键字创建了Thread类(或其子类)的对象 ②RUNNABLE:这种情况指的是Thread类的对象调用了start()方法,这时的线程就等待时间片轮转到自己这,以便获得CPU;第二种情况是线程在处于RUNNABLE状态时并没有运行完自己的run方法,时间片用完之后回到RUNNABLE状态;还有种情况就是处于BLOCKED状态的线程结束了当前的BLOCKED状态之后重新回到RUNNABLE状态。
Java中的多线程让我们的程序可以同时运行多个任务,即使我们的CPU是单核的。当然我们都明白这种情况下的同时运行,并不是真正的同时运行,而是JVM中的线程调度器根据时间片轮转的方式快速的在不同线程间的切换。
当一个程序启动的时候,系统会为程序创建一个名为main的线程。这个线程重要性在于它负责把事件分发给适合的用户组件,这些事件包括绘制事件。
Android系统会尽可能时间长的来维持一个程序的进程,但当系统资源紧张的时候,系统终究会为一些新的或者更重要的进程杀死一些旧的进程来释放内存。
当程序的一个组件启动的时候,如果这时程序中没有其他组件正在运行的话,Android系统将会为这个程序启动一个进程和一个线程。
当你想通过减少后台更新服务的更新频率来降低程序对电池的影响时,检查电池当前的电量和充电状态将是一个比较好的起点。
“每当谈及移动智能设备的瓶颈,大家首先想到的总是电池续航能力。电池续航时间不仅与设备的硬件有关,还与运行在设备中的应用程序紧密相关。
与Content Provider测试、Service测试相比,Activity测试尤其离不开Android的测试框架(instrumentation framework),这是因为Android中的activities有着复杂的生命周期,而这些生命周期的各个阶段都是基于回调方法的,而这些方法只能由Android的测试框架来直接调用,也就是说,在一个程序中,向UI发送事件的唯一方法就是通过Android的测试框架。
留个记录,省的对应不上。 Android 4.0 代号:IceCreamSandwich API Level:14 Android 2.
DDMS全称Dalvik Debug Monitor Service,功能很是强大,可以用来截取连接的设备或虚拟机屏幕,可以查看正在运行的进程的堆和线程信息,可以模拟电话拨打、短信发送,虚拟设置地理位置,还包括文件浏览器,内存分配跟踪等。
Android是一个开发源码的平台,那就意味着,我们每一个人都可以下载、修改和创建自己的android platform,我们甚至可以帮助Android community完善和改进代码,当然这些离我们还有点远,反正离我还是比较远的,但看看总是可以的哈。
工厂方法模式,往往是设计模式初学者入门的模式,的确,有人称之为最为典型最具启发效果的模式。 android中用到了太多的工厂类,其中有用工厂方法模式的,当然也有很多工厂并不是使用工厂方法模式的,只是工具管理类。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2012/02/27/2010965.html 对于android开发者来说起,适配器模式简直太熟悉不过,有很多应用可以说是天天在直接或者间接的用到适配器模式,比如ListView。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2012/03/02/2020355.html CV一族,应该很容易理解原型模式的原理,复制,粘贴完后看具体情况是否修改,其实这就是原型模式。
迪米特法则(Law of Demeter, LoD):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2011/08/13/2135478.html 命令模式,在.net,java平台的事件机制用的非常多,几乎每天都与之打交道。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2011/08/07/2130306.html 单例模式,可以说是GOF的23种设计模式中最简单的一个。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2011/08/07/2129731.html 观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下。
原文链接:http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121488.html Android中对组合模式的应用,可谓是泛滥成粥,随处可见,那就是View和ViewGroup类的使用。
在程序开发中,为了界面更加美观,我们需要设置各种背景,比如布局背景、按钮背景等,但在不同屏幕尺寸的情况下,我们的背景图片可能要进行缩放,已适应新的屏幕显示,但这肯定就带来一个图片失真的问题,而这又将造成用户对产品的统一性体验较差,幸好Android对这方面早有考虑,那就是9Patch图片。
Matrix是Android提供的一个矩形工具类,主要是结合其他的API(如Canvas有个使用到Matrix做参数的drawBitmap()方法)来控制图形或者View组件的平移、旋转、缩放和倾斜变换。
因为程序测试方面是程序开发中非常重要的一方面,这里结合官方教程,来了解下Android程序是怎样进行测试的。
开发google地图,很重要的一个类就是MpaView,MapView类是一个让你的应用可以和Google Maps融合到一起的类,就是说通过MapView你可以让你的应用来下载、显示、标记和控制Google Maps。
一直在windows下进行的android开发,但有时感觉Eclipse和模拟器,执行效率不是很高,有时甚至感觉让人难以忍受,遂改在ubuntu下进行android开发,下面是我的android开发环境搭建过程,平台搭建成功,在搭建的过程中,一些注意事项我也做了下简单的介绍。
QuickView Android软件是由一个或多个应用程序组件组成的,这些组件有activities、services、content provider和broadcast receivers。
在android开发过程中,有时会在不同情况下遇到同种问题: java.lang.IllegalStateException The specified child already has a parent. You must call removeView() on the child's parent first. 也就是非法状态异常,它说这个特定的child已经有一个parent了,你必须在这个parent中首先调用removeView()方法,才能继续你的内容。
设计模式是每个程序员的必修课,这里将23种模式整理在一起,想学习这方面知识的朋友们有福了,呵呵。
让程序更好更多的被用户使用到,向桌面添加一个程序的快捷方式将是一种快捷方式,正好我在开发阅读器的时候,用到过这个知识点。
当系统或用户应用程序发送了某广播之后,符合条件的广播接收者都将收到该条广播。发送广播一般是通过sendBroadcast(Intent intent)(或者sendStickyBroadc...
Anroid Debug Bridge,android调试桥,简称ADB,它主要起到调试桥的做用,通过adb我们可以向模拟器或者实际设备上安装软件,可以在电脑与模拟器/实际设备之间进行文件传输,进入模拟器或者设备的shell等等。
1、当import一个新的android项目时,项目名称上出现一个红色的感叹号,程序不能运行。
我的关于Monkey的使用例子(这里我主要使用一个实际的设备来对我写的一个阅读器程序进行测试,当然你也可以在模拟器中测试,查看测试效果。
Monkey是一个可以在模拟器或者实际设备中运行的命令行程序,它可以向程序中发出一系列的伪随机事件流(比如按键输入、触摸输入、手势输入等的用户事件和一些系统级的事件)。
ListView是创建滚动列表的ViewGroup。列表中的item是通过ListAdapter自动插入的。
为了实现一个具有自动完成提示的文本输入框,可以使用AutoCompleteTextView组件(widget)。
Spinner是一种类似于下拉列表的widget。 在这个教程中,你将创建一个简单的用于展示星球列表的spinner组件。
Gallery是用来将当前选择的图片在View中间显示,并水平滚动的一种布局组件。(Gallery is a layout widget used to display items in a horizontally scrolling list and positions the current selection at the center of the view。