- 博客(64)
- 资源 (20)
- 收藏
- 关注
原创 使用apkplug实现Android客户端插件化
使用apkplug实现Android客户端插件化,apkplug代码虽然不是开源的,但是说明文档比较全,可以很快到实现客户端插件化开发。
2014-04-04 11:20:56 2992 1
原创 oschina-app源码解析-webview处理超链接
前面已经介绍,oschina-app源码解析-webview重组html,在这个过程中还有些细节性的问题,分别介绍下,首先介绍下webview来处理超链接。
2014-04-03 10:12:19 1227
原创 FragmentTabHost+Fragment+ViewPager实现内外层嵌套Tab
今天介绍现在比较流行的一种app布局方式:内外层嵌套Tab,子Tab可以实现滑动切换。 实现原理:FragmentTabHost+Fragment实现第一层Tab。 在Fragment里利用ViewPaper,实现第二层Tab,也就是子Tab。 从原理可以看出,这两层Tab是完全解耦的,没有任何事件和数据联系,那么先介绍第一层怎么实现,
2014-04-02 17:32:01 10365 28
转载 android 导出Jar包混淆
前面文章《Proguard进行源代码混淆》讲解过怎么使用Proguard工具对Android的源代码进行混淆的方法(感兴趣的朋友可以访问:http://blog.csdn.net/p106786860/article/details/11974863),但是在实际工作中发现,通过上述方法对导出的Jar并没有进行混淆。 下面我们就介绍,如果对导出的Jar包进行代码混
2014-04-01 11:14:14 1686
原创 ThinkAndroid框架 网络状态监听原理
现在用到网络监听的地方越来越广泛,这里提供下ThinkAndroid里的实现方法,还是根据功能原理倒着给出代码: 1、网络状态会发出广播,监听网络状态肯定通过广播接收者实现,广播接受者:/** * @Title NetworkStateReceiver * @Package com.ta.util.netstate * @Description 是一个检测网络状态改变
2014-03-27 17:30:47 2073
转载 数据结构基础之树、二叉树
博客:http://blog.csdn.net/zhangerqing(转载请说明出处) 本文基础知识,准备面试的可以楼一眼。 我们接着上一篇数据结构继续讲解。本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我!一、树
2014-03-25 17:29:02 940
转载 java23种设计模式--策略模式(strategy)
先来张图,看看这11种行为型模式的关系:第一类:通过父类与子类的关系进行实现。第二类:两个类之间。第三类:类的状态。第四类:通过中间类13、策略模式(strategy) 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(
2014-03-25 16:44:20 759
转载 据结构基础、线性表、栈和队列、数组和字符串
工作3年了,这些基础知识现在拖出来,还真不一定会,没事搂一眼吧,谁让这是基础呢。至少面试有好处。博客:http://blog.csdn.net/zhangerqing(转载请说明出处)这部分内容作为计算机专业最基础的知识,几乎被所有企业选中用来作考题,因此,本章我们从本章开始,我们将从基础方面对数据结构进行讲解,内容主要是线性表,包括栈、队列、数组、字符串等,主要讲解基础知识,如概
2014-03-24 18:03:54 1181
原创 android 取消网络加载过程
数据加载过程与人机交互息息相关,如果控制不好,很可能多个线程去刷新一个界面数据,引起异常,所以要根据需求控制好每个异步加载任务。
2014-03-24 16:51:53 1458
原创 PinterestLikeAdapterView 瀑布流实现原理
PinterestLikeAdapterView是github上开源的项目,实现了流畅的瀑布流功能,上个图看看:
2014-03-18 14:49:05 6508 5
原创 《Pro Git》git系统原理记录
最近想研究下传说中强大的Git,看了几篇别人的博客,感觉的有必要仔细学一下,招来牛人的一本书《pro git》,这本书讲的很简洁和清晰,不过为了加深记忆,在这里记录和总结下git系统原理重点,至于操作细节建议看《progit》。
2014-03-13 17:42:26 1089
原创 oschina-app源码分析-提醒标签BadgeView使用逻辑流程
分析了oschina-app显示消息标签的,逻辑流程,强调了流程中容易忽略的地方。
2014-03-12 15:03:20 1494
转载 java23种设计模式--享元模式(flyweight)
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新对象,FlyWeight是超类。一提到共享池,我们很容易联想到Java里面的JDBC连接池,
2014-03-11 11:37:03 774
转载 java23种设计模式--组合模式(composite)
组合模式有时又叫部分-整体模式,在处理类似树形结构的问题时比较方便,看看关系图:直接来看代码: public class TreeNode { private String name; private TreeNode parent; private Vector children = new Vector(); public TreeN
2014-03-11 11:28:09 687 1
转载 java23种设计模式--桥接模式(bridge)
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。我们来看看关系图:实现代码
2014-03-11 11:05:17 635
转载 java23种设计模式--外观模式(facade)
外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例)我们先看下实现类:public class CPU { public void startup(){ System.out
2014-03-11 10:23:47 616
转载 java23种设计模式--代理模式(proxy)
其实每个模式名称就表明了该模式的作用,代理模式就是多一个代理类出来,替原对象进行一些操作,比如我们在租房子的时候回去找中介,为什么呢?因为你对该地区房屋的信息掌握的不够全面,希望找一个更熟悉的人去帮你做,此处的代理就是这个意思。再如我们有的时候打官司,我们需要请律师,因为律师在法律方面有专长,可以替我们进行操作,表达我们的想法。先来看看关系图:根据上文的阐述,代理模式就比较容易的理解了,我
2014-03-11 09:55:47 676
转载 java23种设计模式--装饰模式(decorator)
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:Sourceable { public void method();}public class Source
2014-03-11 09:25:02 636
转载 java23种设计模式--适配器模式(Adapter)
我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图:6、适配器模式(Adapter) 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器
2014-03-11 09:19:40 569
转载 JAVA深复制(深克隆)与浅复制(浅克隆)
原型模式提到了克隆,这里看了几篇文章,对克隆稍加分析:什么时候使用Clone? 当需要修改对象属性,又不想影响原来的属性值,这时候就应该使用clone了。 克隆是另一个作用,比如,你要传递给另一个对象的某个方法method的参数中包含A对象,但是,你不知道这个方法是不是对你的A进行了修改,而你又不想他修改,或者说他修改了也不会对你有任何影响,你就可以使用克隆来完成这个任
2014-03-10 11:32:49 684
转载 java23种设计模式--原型模式(prototype)
原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。本小结会通过对象的复制,进行讲解。在Java中,复制对象是通过clone()实现的,先创建一个原型类:public class Prototype implements Cloneable { public Object clon
2014-03-10 10:50:17 628
转载 java 23种设计模式--建造者模式(builder)
工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性,其实建造者模式就是前面抽象工厂模式和最后的Test结合起来得到的。我们看一下代码: 还和前面一样,一个Sender接口,两个实现类MailSender和SmsSender。最后,建造者类如下:public class Builder {
2014-03-10 10:36:50 679
原创 android 获取正确IP
项目中用到获取IP,从网上找了个方法,刚开始用手机移动网的时候,可以获取正确的IP,后来用wifi来调试获取了一连串数字,并且数字太长导致后台入库错误。 后来,发现wifi状态下获取的IP是要经过转换的,在这里提供一个转换后的方法:// Get IP address public static String getLocalIpAddress(Context contex
2014-03-07 15:09:04 1026
转载 Git学习系列(三)版本回退和管理文件的修改及删除操作
版本回退前面我们成功的提交了一次mygit.txt,下面咱对它进行修改,内容如下:[plain] view plaincopyprint?Hello Git Git is so easy. Hello GitGit is so easy.然后用git status来跟踪该文件的状态:可以看到hellogit.txt已经被修改过
2014-03-07 14:24:12 772
转载 Git学习系列(二)创建本地仓库及文件操作
仓库(repository ),我们也成它为版本库。这个库里面的所有文件(包括对文件的添加、删除、修改等操作)都被Git管理起来,而且我们随时可以跟踪版本以便更好的对库里的每个文件进行更新和还原。咱还是像昨天一样,先进官方网站瞧瞧:点击init,你将看到这样一句话:git init—创建一个空的Git存储库或初始化现有的一个版本库。不难发现,咱们要初始化一个本地版本库,用
2014-03-07 14:19:26 776
转载 Git学习系列(一)初识Git
Git作为一个版本控制工具,在工作中我们常常会用到它,尤其是在移动开发中,Git可谓是版本管理神器。下面让我们来认识一下Git:Git是一个分布式版本控制软件,它是由Linux的作者Linus用C写的一个分布式版本控制系统。如果大家对Git的历史比较感兴趣,可以点击链接进入官网了解:A Short History of GitGit主要特点有如下:1、速度:Git在本地上保存着所有
2014-03-07 14:18:01 726
原创 android sqlite数据库封装 实现crud
android常用的数据保存方式有文件、sharepreferences、数据库、网络、contentprovider集中方式。 文件存储方式,经常使用在缓存整个页面数据,比如电子书内容、html数据等。 sharepreferrences存储方式,实质也就是xml文件存储的封装,常用于存储配置参数数据。当然也可以用文件存储+Properties来存储参数数据。
2014-03-06 17:10:37 4523 3
原创 google-gson使用解析
今天看到一个项目中用到了,gson来处理json数据,所以注意了下怎么使用,个人觉得有个是比较简单或者虽然复杂但是有规律的json数据可以使用gson来处理,如果是较复杂的json数据还是自己解析的好。这里介绍下gson的简单使用,即实体类和json数据之间的转换。1、首先是实体类到json数据的转换Person实体 public class Person { pri
2014-03-05 16:43:02 999
原创 开源项目Android-Universal-Image-Loader 解析
一、简单说明 Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。这个开源的东西,比我想象的要强的的多,不但实现合理的图片缓存、异步加载,还可以实现线程池的大小,HTTP选项,内存和光盘高速缓存,显示图像等设置。 其默认的缓存目录是mnt/sdcard/Android
2014-03-05 15:45:47 1246
转载 java23种设计模式--单例模式(singleton)
3、单例模式(Singleton)单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。3、有些类如交易所的核心交易引擎,控制着交易流程,如果该
2014-03-04 17:37:00 685
转载 java 23种设计模式--工厂模式(factory)
工作以来项目中用到不少设计模式,不过没有系统的总结过,下面系统分别说下各个设计模式: 1、工厂方法模式(Factory Method)工厂方法模式分为三种:11、普通工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:举例如下:(我们举一个发送邮件和短信的例子)首先,创建二者的共同接口:[java]
2014-03-04 16:01:30 633
转载 java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object
2014-03-04 12:48:33 642
原创 开源项目SlideMenu使用详解
以前搞过一个滑动菜单,是自己重写发view,实现了基本功能可以滑动显示,后来看了下SlideMenu的使用,真是非常强大,不但可是简单的设置实现两侧滑动菜单,还可以设置菜单的阴影、渐变色、划动模式等,所以还是老实点直接用现成的吧,当然有时间的话还要看先SlideMenu的源码。这里先详细分析下SlideMenu的使用:准备工作:1. SlidingMenu 下载地址: https://
2014-03-03 17:26:57 10987 2
原创 oschina-app源码解析-webview重组html
有时候想用webview直接加载现成的我web页面,但是web页面直接放大手机上整体比较小,很难操作,说白了就是不合适,所以需要对html页面进行重组,直接上完整代码String body = UIHelper.WEB_STYLE + newsDetail.getBody(); // 读取用户设置:是否加载文章图片--默认有wifi下始终加载图片 boolean isL
2014-02-27 17:46:53 1311
原创 oschina-app 源码分析-数据缓存(离线功能)
以前做过数据缓存的项目,也就是实现离线操作。当时刚开始做项目,我们都没什么经验,但是缓存数据无非是数据库或者文件,但是我们选择用xml文件来存储数据,现在看来是有点走远路了,oschina-app通过实现对object的实体流读写来完成数据缓存,来看下显现流程。1,首先在ui线程中另起线程,获取数据: /** * 线程加载帖子数据 * * @param catalog
2014-02-27 17:22:58 1500 1
原创 oschina-app 的源码分析-主页面滑动切换
以前的项目中也经常用到页面活动切换,但都是用现成项目库viewpaper来实现的,使用起来比较简单,绑定数据,重写下适配器,有必要保存下数据状态避免数据频繁刷新,如果对内存使用要求不高可以设置多个缓存页面:setOffscreenPageLimit(2),oschina里面是通过一个工具类ScrollLayout来实现,跟viewpaper一样都是重写viewgroup来实现,下面我们通过分析Sc
2014-02-27 16:51:56 1530
原创 oschina-app源码解析-系统参数保存
最近研究了下oschina-app 的源码,有几个功能实现的挺不错,比如主页面的页面切换效果、开源UIGrendroid的使用、数据的缓存、以及html5的加载、页面动画使用等,在这里跟大家分享一下。
2014-02-27 14:51:31 946
原创 手机访问网页地址前面加wap
有个项目通过android直接访问wap网页,他们做了一个接口来实现用户自动登录,不用用户再在wap页面登录了,他们给我一个自动登录地址http://dm.10086.cn/auth/login?由于我们没有做中转服务器,我是用手机直接访问的,调了半天也没调通,后来发先要在地址前面加wap。http://wap.dm.10086.cn/auth/login?这样自动登录就能成功了,应该是他们那
2014-02-26 16:12:31 2677
oschina-app 最新源码
2014-03-11
android sqlite数据库封装 实现crud
2014-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人