- 博客(40)
- 资源 (33)
- 收藏
- 关注
原创 设计模式案例代码之适配器模式
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。这个模式可以让我们通过创建适配器进行接口转换,让不兼容的接口变成兼容。这个模式让客户端从实现中解耦。当你需要使用一个现有的类而其接口并不符合你的要求时,就使用适配器。适配器模式将对象包装起来,改变其接口。装饰着模式将一个对象包装起来,增加其新行为和责任。案例情景:四只小花猫参加唱
2013-03-31 23:59:25 2470
原创 android短彩信数据库设计(三)
在Android短彩信中,有这么三个ContentProvider组建,MmsSmsPrivider.java,SmsPrivider.java,MmsPrivider.java,我们发送的数据库请求会到这里。ContentPrivider组建是android四大组件之一,我们来看看短彩信如何利用这个组件。MmsSmsPrivider.java1、private sta
2013-03-30 01:07:55 2889
原创 android短彩信数据库设计源码解析(二)
这几天连续加班,昨天很早就睡了。一个人的时候要学会自我祝福,祝自己注意身体,天天精力充沛。明天父亲生日,在此祝父亲生日快乐,身体健康,笑口常开。接着介绍android系统短彩信数据库设计。单例模式,获取数据库设计类的单一引用。关于数据模式,可以参考:http://blog.csdn.net/hailushijie/article/details/8715154。1、
2013-03-29 01:28:38 3827
原创 android短彩信数据库设计源码解析(一)
维护短彩信很长时间了,终于想写点什么了,那就从数据库开始吧!不当之处,欢迎指正。关于LEFT_JOIN,INNER_JOIN等数据库知识,大家可以访问W3SCHOOL。MmsSmsDatabaseHelper.java1、首先看一下私有静态常量。这些静态常量在构建数据库触发器,构建数据表时会用到。private static final String SMS_UPDAT
2013-03-27 00:47:07 3883 3
原创 设计模式学习笔记之命令模式
定义:将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销等操作。命令模式将发出请求的对象和执行请求的对象解耦。在被解耦的两者之间是通过命令对象进行沟通的。案例代码下载案例情景:开灯和关灯操作是电灯的基本操作。我们用命令模式模拟这种情景。Handler.javapublic class Handler { public static fi
2013-03-26 00:38:28 1856
原创 设计模式之单例模式
单例模式:确保一个类只有一个实例,并提供一个全局的访问点。在单例模式下,当需要返回单个实例时,通过单件类获取是唯一的途径。案例代码下载情景:小明家只有一辆车,车在某一个时刻,只有一个状态,要么前进,要么后退,也就是倒车。案例代码:在正规的单例模式中,单例类需要提供私有的构造方法,通过共有的全局访问点。在本测试代码中为了比较差异,对单例模式稍作改动。单例模式只允许
2013-03-25 01:08:05 1783
原创 Ubuntu下Sqlite数据库图形化管理工具
安装命令:sudo apt-get install sqlitebrowser大家也可以使用sqliteman,这款工具自我感觉比sqlitebrowser更好用。sqliteman
2013-03-24 02:37:15 8485
原创 设计模式之责任链模式
定义:创建一个对象链,每个对象对请求依次检查,并对其处理,或者将它传给链中的下一个对象。应用;经常用在窗口系统中,处理点击事件等,如果点击事件在某个窗口对象上消耗了,那么此点击事件不再继续往下传送。责任链模式关键在于运用某种关系是对象之间形成链,这个关系可以是继承,也可以是组合。代码下载案例:在公司制度中,部门经理有权处理请假日期小于等于三天的事务,如果请假日期多余三天,那么需
2013-03-23 01:47:33 1210
原创 android短彩信幻灯片异步加载机制
记不清是android 4.0之后还是4.1之后,浏览信息时,彩信幻灯片不再随着信息内容一并显示,而是在信息内容显示后,开启后台线程,异步加载彩信幻灯片,加载完毕之后再显示附件。为什么要这么设计那?主要是为了解决彩信显示缓慢的问题。在原先的设计中,彩信想要显示,首先要做准备工作,准备工作包括从数据库中加载信息的内容,收件人,发送时间,主题,类型,状态报告等基础内容,其中还包括了一项费时的操作,那就
2013-03-21 16:23:20 2750
原创 Apidemos之动画
动画制作的几种片断下面的案例代码不能运行,缺少辅助类,完整例子,请参照http://blog.csdn.net/hailushijie/article/details/86892491、ValueAnimator bounceAnim = ObjectAnimator.ofFloat(sh, "y", startY,endY);第一个参数为对象,第二个参数为要调整的对象中的某一属
2013-03-18 23:58:43 1851
原创 android动画案例,淡入淡出效果
源代码下载1、android动画测试程序,界面如图:颜色随机变化,点击视图,左淡出,右淡入,下淡出,上淡入效果。主要源代码解析:package com.example.objectanimatortest;import java.util.Random;import android.os.Build;import android.os.Bundle;impo
2013-03-18 22:08:36 6448
原创 设计模式之模板方法
模板方法:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法就是一个方法,将方法的实现设计成一组步骤,其中的任何步骤都可以是抽象的,由子类负责实现。这可以保证算法的结构保持不变,同时由子类提供部分实现。案例情景:把老虎关进冰箱,总共分几步?三步,第一步把冰箱门打开,第二部把老虎塞进冰箱,第三部,把冰
2013-03-17 23:34:51 1105
原创 抽象工厂模式学习案例代码
抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指明具体类。抽象工厂模式允许客户使用抽象的接口来创建一组相关的产品,而不需要知道实际产出的具体产品是什么。这样客户就从具体产品中解耦了。案例代码下载总结:抽象工程模式可以看成创建一组对象的工厂方法模式的集合。抽象工厂模式可用于对相同方案的替换。比如数据库整体方案的替换,数据库拥有一系列的操作,比如创建数据库,删除
2013-03-17 20:27:04 1755
原创 设计模式之工厂方法模式
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。案例情景:在简单工厂中的那家买粥的生意非茶好,卖粥的招牌很响,他们想在开两家分店,把招牌租出去,允许分店对粥做改良,更新。两家分店的名字为CongeeStroeA,CongeeStroeB。CongeeStreA家的大米粥含有皮蛋瘦肉,CongeeStreB家的八宝粥里面还有银耳。我们
2013-03-17 18:05:46 1040
原创 设计模式之简单工厂模式学习案例代码
简单工程模式:简单工厂并不是一个设计模式,它是一种变成习惯。案例分析:在去上地软件园的路上,有很多粥店。现在可能少了,也就一两家。他们卖的粥用纸杯装盛,你只需要告诉他们什么粥即可。他们那里有大米粥,小米粥,八宝粥。案例代码下载1、Congee.java//粥基类public class Congee { private String name; public Con
2013-03-17 08:31:03 1734
原创 数据结构学习笔记之表、栈、队列
1、抽象数据类型是带有一组操作的一些对象的集合。它是数学抽象,大体包含了操作和数据两部分。2、表:对于任何非空表,除了第一个元素,其后的每个元素都有一个前驱,除了最后一个元素,其前的每一个元素都有一个后继。对表上的数据,可以有查找、插入、删除、打印,查找某个元素是否在数组中包含等操作。对于表这种结构,采用不同的实现方式,对于上述操作的时间复杂度也就是运行性能会有影响。如果采用数组实现表
2013-03-17 01:42:36 1303
转载 ubuntu修改默认输入法翻页功能
原文链接:http://hi.baidu.com/diyff83/item/f4988818e88b3c1eb98a1a86使用ubuntu有一段时间了,可是在使用输入法时翻页需要自己点击,很是不方便,习惯了搜狗的 “-”和“=”。今天看到一篇帖子,解决了这个问题。进入输入法设置界面:/usr/lib/ibus-sunpinyin/ibus-setup-sunpinyin勾选P
2013-03-17 00:29:28 4282
原创 android源代码短彩信分析之包介绍
很早就像写一些东西用来记录短彩信的一些流程,只不过一直没有动笔,可能没有太多时间,也可能不知道怎么开始,有句话叫“没有开始,就没有远方”,无论怎样,开动自己前进的脚步。同时很高兴和大家交流,如有错误不当之处,欢迎大家指正。如果我们想提高自己的编码能力,那么我们就要学习别人的编码项目,android上层应用的开源,我们可以看到大洋彼岸的优秀程序员们码下的代码。在android短彩信应
2013-03-16 01:56:18 1966
原创 数据结构学习笔记之幂运算
幂运算:就是n个x相乘。例如:求x的三次方、四次方、n次方等。那么我们要计算x的n次幂,那么我们要连续执行n次x的相乘,花费时间为线性时间。现在有一个O(logN)的算法。原理:如果n为偶数,x的n次方== x的n/2次方 * x的n/2次方相乘。如果n为奇数,x的n次方 == x的n/2次方 * x的n/2次方 * x。 案例:package 幂运算;public c
2013-03-16 01:36:45 1994
原创 数据结构学习笔记之欧几里的算法
欧几里的算法:计算最大公因数。两个整数的最大公因数就是同时整除二者的最大整数。算法连续计算余数直至余数为0为止,最后的非零余数最时最大公因数。案例:package 最大公因数;public class MaxCommonNum { public static void main(String args[]){ int num1 = 50; int num2 = 15;
2013-03-16 01:16:18 2613
原创 数据结构学习笔记之折半查找
分治法和折半查找都是时间复杂度为O(log N)。折半查找:给定一个整数X和整数数组A[],元素为a,b,c....n,后者这个数列已经预先排序并在内存中,求下标i使得A[i] =X,如果数组内不存在X,则返回-1.解法:如果按照数组的内容,从左到右顺序扫描一遍,那么将要花费线性时间。并且没有用到数组已经排序的事实。折半查找是解决这类问题的一个好办法,首先检查数组居中的元素是否和X
2013-03-16 01:02:15 1810
原创 逻辑运算符,电话号码4bit压缩
与或非,由于是直接操作二进制,因而在程序中是执行最快的语句。很多与或非可以实现很多非常巧妙的操作,在此整理一下,随时更新。1、与或非实现信息状态的加减package TwoCode;public class Encode { public static void main(String args[]){ Message message = new Message(Messa
2013-03-15 00:31:13 2817
原创 数据结构之最大子序列的求解
随着代码量的增加,意识到写出一个工作程序并不够,如果程序在巨大的数集上运行,那么程序运行时间就变成了一个重要的问题。我们要在尚未编码的情况下比较两个程序的运行时间。以及改进程序的速度以及确定程序执行的瓶颈,然后检查程序,优化存在性能的代码段。这些都是数据结构带给我们的。算法分析:平均运行时间反应了程序运行的典型行为,最坏运行时间则代表对所有可能输入的一种保证。程序效率运行时间计算模型:
2013-03-14 23:00:51 1733
原创 android学习笔记之JNI
在android中,存在很多Native代码调用,这些调用如何实现的,当初很好奇,终于在深入理解android中找到了答案,现在将自己看书的心得罗列出来,为自己复习之需。1、MediaScanner.java,在这个方法中通过System.loadLibrary方法加载jni库。这样就可以调用native方法了。static { System.loadLibrary("
2013-03-12 01:04:33 2211
转载 ubuntu目录是中文名的解决方案
export LANG=en_USxdg-user-dirs-gtk-updateexport LANG=zh_CN
2013-03-10 11:52:07 2105
原创 ubuntu下环境变量的配置
关于jdk的安装以及androd sdk的安装就不介绍了,直接从配置环境变量开始介绍。首先最好定义JAVA_HOME以及ANDROID_SDK_HOME,JRE_HOME,关于名称你可以随意取。这样有什么好处那,就是可以很方便的切换jdk的版本,比如我要编译android系统,可是它要求jdk的版本是1.6,可当时安装的是1.7,所以我在切换时,只需要用第一行代码替换第二行代码,即可。如下所示
2013-03-10 11:30:45 2070
转载 gcc: error trying to exec 'cc1plus': execvp: 没有该文件或目录
转载:http://blog.csdn.net/rupert123456/article/details/6758124 gcc: error trying to exec 'cc1plus': execvp: 没有该文件或目录 出错的时候要注意看信息提示,你的问题是没有 cc1pluc 表明你的系统缺少 g++ 包。 解决方案:sudo apt-get install g++
2013-03-10 07:03:37 3943
原创 /bin/bash: xmllint: 未找到命令
我原先的ubuntu是32位的,如果在编译过程中,如果发现报告了上述问题,那么动手安装xmllint。命令:sudo apt-get install libxml2-utils其他的类似。
2013-03-10 02:35:03 14378 1
原创 Android学习笔记之编译系统(六)framework的编译过程
framework的编译是对framework目录下所有的子目录的编译。framework在编译后会生成几个重要的jar包。他们是framework.jar、core.jar、ext.jar、framework-res.jar。framework.jar包是framework层java源文件编译的。core.jar是dalvik虚拟机运行时所需要的java运行库文件。ext.jar包含了一些可扩展
2013-03-10 00:12:03 15278
原创 Android学习笔记之编译系统(五)apk编译流程
apk项目是如何编译的?总结:我们可以通过mm showcommands命令查看编译过程。今天下载了小米的Notes,便签,没有Android.mk文件,自己加上了Androd.mk,将这个项目放在自己的电脑工程下编译。总结了一下编译过程,不当之处请指正。参考柯元旦android内核剖析。接下来我们就按顺序看看apk编译过程中的流程。1、首先编译项目下的资源文件,生成R.java
2013-03-09 23:08:19 8106 1
转载 ubuntu下安装jdk
原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=183803首先,从http://java.sun.com中下载jdk,我的版本是jdk1.6.0_12,我下载的是bin文件,我将下载的jdk1.6.0_12.bin文件置于/usr/lib/jvm/java中然后,在shell中执行:sudo chmod u+x /usr/lib/j
2013-03-09 17:14:39 1373
原创 Android学习笔记之编译系统(四)在android中如何添加子项目
如何添加子项目到系统中?总结:可添加的子项目可以是apk源代码,可以是c程序,用于编译动态库,或者动态库。c项目,一般放在external下,首先mkdir Helloworld然后新建源文件touch Hello.c在源文件中输入源代码#includeint main(){printf("%s",str);}然后在目录下建立Android.mk文件,在这个
2013-03-09 16:14:37 2954
原创 Android学习笔记之编译系统(三)添加product
上面说了如何让厂商定义的apk编译到system.img中?总结:对于product来说,有三部分东西是要包含的。第一种就是基础子项目,所有的product都要包含。比如adbd,管理adb进程,用于各种adb命令操作,比如adb install ,adb push等。第二种就是可选的子项目,比如一些apk程序。他们的LOCAL_MODULE_TAG定义为optional。第三种就
2013-03-08 00:54:43 11901
转载 Android.mk简介 .
文章参照:http://blog.sina.com.cn/s/blog_67d8d7060100q8un.html Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译。因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变量都是全局的。因此,您应尽量少声明变量,不要认为某些变量在解析过程中不会被定
2013-03-07 22:54:44 2326
原创 ApiDemos之Fragment使用案例
1、FragmentDialogActivity.java/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com
2013-03-07 21:09:35 2423
原创 Android学习笔记之编译系统(二)编译框架二
build/core/main.mk继续往下执行,包含dex_preopt.mk文件,Dalvik虚拟机执行的是dex文件,为了最大化Dalvik的性能,根据cpu的性能对dex做优化。然后检查product的类型的合法性,在然后检查product的PRODUCT_TAGS是否包含dalvik.gc.type-precise,对ADDITIONAL_BUILD_PROPERTIES进行赋值。
2013-03-07 00:43:16 4080 1
原创 Android学习笔记之编译系统(一)编译框架一
最近在读android内核剖析,将一些心得记录下来,方便自己查阅。在android源代码文件夹下存在build文件夹,,他下面的文件构成了编译系统,该目录下的make脚本和shell脚本共同组成了Androd的编译环境。在我们编译系统时,我们一般先执行:. build/envsetup.sh makemake后面可以跟上参数,参数包括:产品名,模块名,sdk。make
2013-03-06 00:20:21 5058
原创 java正则表达式-案例代码
jdk在线api:http://docs.oracle.com/javase/7/docs/api/index.html,选择java.utils.regex,可以查看Pattern类的介绍。.:任意字符[abc]:含有a,b,c的任意一个字符[^abc]:除了a,b,c之外的任意字符[a-zA-Z]:a到z,A到Z的任意字符[abc[hij]]:a,b,c,h,i,j
2013-03-05 00:42:13 1655
原创 设计模式之装饰者模式案例学习
装饰者模式:顾名思义将对象装饰的更加漂亮,只是更漂亮,他还是他,没有改变类型。官方定义:动态的将责任附加到对象上。若要扩展功能,装饰着提供了比继承更有弹性的替代方案。案例情景:煎饼果子(pancake),包含一个鸡蛋、一个脆饼。我们可以选择加辣椒(pepper),可以选择加香肠(Sausage),可以选择多加鸡蛋(Eggs)。(上地软件园路上的煎饼果子,你懂的!)我们要实现对每一个
2013-03-03 00:58:42 1692
设计模式之策略模式
2013-02-25
策略模式学习代码
2013-02-25
基于插件架构的android开发
2014-03-10
Handler空闲线程测试代码
2014-03-10
apk方式实现android应用换肤
2013-07-24
Android应用程序内换肤解决方案(一)之测试Demo
2013-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人