换了个地写博客 最近换了个地写博客,我的简书,为什么会迁移到简书,这个梗得好好说一下,因为我觉得不仅仅是技术可以交流,比如对产品的看法,人生的感悟,碰到的坑等等这些都可以很好的跟一群喜欢阅读和喜欢写作的人交流。当然为了保证技术博客的质量,一般在简书上经过考验的技术类文章会收录到我的个人博客 ,欢迎大家关注我的简书和个人博客。在一个交流故事沟通想法的平台,大家可以轻松的写作,不论技术的高低,只 要你有想法,都可以把
Android注解框架Dagger ,Butterknife 和AndroidAnnotations以及RoboGuice的比较 http://stackoverflow.com/questions/24351817/dagger-and-butter-knife-vs-android-annotations 这片文章的答案,简单的介绍了三种注解框架(Dagger,Butterknife以及AA)的异同以及简单的比较。RoboGuice是Google官方的注解框架,不过每个类都需要继承RoboActivity。下面进行客观的
原型模式详解 UML图原型模式URL图如下: 解决问题原型模式是一种对象创建模式,采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建实例,可以具有与原型一样的初始化数据。工作原理通过将一个原型对象传递给要发送创建的对象,这个要发动创建的对象通过请求原型对象复制它们来实施创建。实际应用如果一个对象想具有被复制的能力,必须声明自己实现了Cloneable接口,如果没有声明,就会在对象被复制时,抛
工厂方法模式详解 UML图工厂方法模式URL图如下: 解决问题在简单工厂模式进一步抽象而来,解决了如何实例化一个对象,也克服了简单工厂模式中违背的“开-闭原则”的缺点。核心思想工厂方法模式中,核心的工厂类不再提供所有产品的创建工作,而是将具体的产品交给具体的工厂类去实现。核心工厂类值负责制定具体工厂需要实现的接口即可,至于具体的工作交给子类去实现。实际运用假设我们有一个手机加工厂,具体的子工厂来生产Android手
简单工厂模式详解 UML图简单工厂模式的UML图如下: 解决问题简单工厂模式解决了如何去实例化一个合适的对象。核心思想简单工厂模式的核心思想就是有一个专门的类(工厂类)负责创建实例的过程。 把产品看成是一系列类的集合,这些类是由某个抽象类或者接口派生出来的一个对象树。而工厂类负责来生产一个合适的对象来满足用户的需求。实现原则如果简单工厂模式中所涉及到的具体产品之间没有共同的逻辑,那么就用接口来扮演抽象产品的角色;
自定义网络加载视图NetworkImageView NetworkImageView简介:在布局中使用自定义视图:<com.mrljdx.loadimage.NetWorkImageView android:id="@+id/myNetImgView" android:layout_width="200dp" android:layout_height="200dp" android:l
自定义View View基类呈现一个100x100像素的空白正方形,要改变控件的大小并呈现一个不同的界面则需要分别对onMesure和onDraw方法进行重写。 onMesure方法中,新的视图将会计算一系列给定的边界条件下占据的高度和宽度。 onDraw方法用于在画布上进行绘图。 下面代码中定义了一个MyView继承自View:public class MyView extends View {
Android中常用的设计模式 Android中其实到处都是设计模式或者设计模式的联合运用的地方,以下设计模式是Android设计中常见的:Observer模式Abstract Factory模式Adapter模式Template Method模式Composite模式Strategy模式State模式Proxy模式Bridge 模式Iterator模式Mediator模式Facade模式Android框
Android应用性能优化笔记 性能优化概要:不要在主线程中做耗时操作,比如网络请求,文件读写等。使用ViewStub来推迟初始化,在运行时展开资源。使用RelativeLayout代替嵌套LinearLayout,尽可能扁平化布局。减少创建对象的数量,也会让事件的处理速度更快。(了解View事件的传递机制)主线程中尽可能少做事,把耗时操作交给子线程。Sqlite数据库,通过事务来操作。(当数据库在持久存储中使用事务耗时
AndroidManifest.xml简介 在Android开发接触的最多的可能就是AndroidManifest.xml这个配置文件了,这里配置文件中包括了应用程序中的大部分信息,系统在运行代码时,需要知道这些基本信息。比如开发中的Activity、Service、Broadcast都需要在这里定义。如果用到了一些系统自带的服务比如拨号、应用安装、GPS定位等服务也需要在这里声明。 下面看一段注释过的AndroidManifest.xml
Java中enum的本质 在平时的开发中,经常需要用到枚举,其实枚举enum 定义了一个特殊的类,这个类继承自java.lang.Enum,不过这是由编译程序处理的,直接写一个类继承Enum类会被编译程序拒绝。 来看一段代码:public enum Action{ UP,RIGHT,DOWN,LEFT}在编译之后,会生成一个Action.class文件,反编译后,观察程序代码,就可以了解enum的本质内容:pub
Java对象封装 在看了设计模式-迪米特法则之后,应该就可以理解Java中对象的封装。什么是封装?在Java中定义了类,其实有点类似于面向过程设计中定义一个结构体一样,但是有个概念必须清楚,那就是定义类不等于做好了封装。封装是遵循迪米特法则的,就是让调用时不用去了解内的内部构造,只需要调用相应的对外方法即可。 具体说来可以归结为两点:封装对象操作流程封装对象内部数据 在Java中定义了public 、prot
Receiving intents 原文地址: https://github.com/excilys/androidannotations/wiki/Receiving-intents接收意图@Receiver注释通知你的代码的意图,而不必手工申报和注册一个BroadcastReceiver。例如:@EActivitypublic class MyActivity extends Activity { @Receiver(
@EReceiver加强广播接收器 原文地址: https://github.com/excilys/androidannotations/wiki/Enhance-broadcastreceivers你可以使用@EReceiver注释增强一个Android BroadcastReceiver :@EReceiverpublic class MyReceiver extends BroadcastReceiver {}然后,
@EProvider加强contentprovider 原文地址: https://github.com/excilys/androidannotations/wiki/Enhance-contentproviders你可以使用@EProvider注释加强一个Android内容提供商与:@EProviderpublic class MyContentProvider extends ContentProvider {}然后,您可以开始使用大多数
Extra 原文地址: https://github.com/excilys/androidannotations/wiki/Extras#executing-code-after-extras-injection@Extra@Extra注释一个从Activity中启动意图中获取正确值的字段,例如:@EActivitypublic class MyActivity extends Activity {
@EFragment增强碎片(Fragment) 原文地址: https://github.com/excilys/androidannotations/wiki/Enhance-Fragments支持FragmentActivity在AndroidAnnotations 2.6之前,没有支持片段注入。然而,我们确保至少继承FragmentActivity的活动不会打破AndroidAnnotations的规则:@EActivity(R.i
Injecting Views 原文地址: https://github.com/excilys/androidannotations/wiki/Injecting-Views@ViewById在Activity中@ViewById标注的字段,必须的在activity所在的布局layout中可以找到相应的ID,类似于调用findViewById()方法。 注释的视图id可以设置参数,即@ViewById(R.id.myT
@AfterXXX 调用顺序 用@AfterXXX标注的方法调用次序同一个类中的同一个注释的方法调用顺序不能保证,你不应该依赖于它。如果你想多种方法按照可靠的顺序被被调用,你应该只创建创建一个注解的方法,并用它来调用它们所需顺序的其他方法。@AfterInjectprotected void callInOrder() { methodA(); methodB(); methodC();}privat
@EBean增强自定义类 原文地址: https://github.com/excilys/androidannotations/wiki/Enhance-custom-classes加强自定义类您可以在一个不是一个标准的Android组件(如Activity,Service)的类使用注解@EBean。 你只需要使用@EBean注释这个类即可:@EBeanpublic class MyClass {} 一个@