`
文章列表

适配器模式

1、类的适配器模式:有一个待适配的类Source,目标接口Targetable,通过Adapter将Source的功能扩展到Targetable。实现:Adapter继承Source拥有Source的方法,去适配Targetable。2、对象适配器模式:Adapter不继承Source,只是持有Source的实例,用 ...
什么是工厂模式?      工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。因为工厂模式就相当于创建实 ...
  转自 http://blog.csdn.net/liubin8095/article/details/12705479   总结:AsyncTask 本质是用handler更新界面;在3.0版本以后,它在AsyncTask中是以常量的形式被使用的,因此在整个应用程序中的所有AsyncTask实 例都会共用同一个SerialExecutor;默认情况下SerialExecutor模仿的是单一线程池的效果,如果我们快速地启动了很多任务,同一 时刻只会有一个线程正在执行,其余的均处于等待状态;如果想同时启动多个任务可以通过                Executor exec = n ...
当我们的ListView中的Item包含图片,而且这些图片是同一资源,我们用多线程去加载图片,这时候可能就发生了这种情况。 比如线程是人,第一个人去做加载图片到缓存的工作,还没做好时第二个人要这同一张张图,结果缓存还没有这张图,于是第二个人也去加载图片到缓存。。以此类推,同时可能有N个人在加载同一张图,N取决于图片没加载到缓存前,可见的Item数量。于是针对这种情况进行细化同步,避免发生。   //首先需要一个ConcurrentHashMap<String, Boolean>,String表示资源地址如图片地址,Boolean表示是否有线程正在加载。 //之所以用Co ...
有的时候我们想将对象保存到数据库中,就需要将对象序列化为二进制数组,然后保存到数据库。 从数据库提取出二进制数组,还需要将其还原为对象。   本例中ArrayList已经implements Serializable,其他对象需要实现此接口才能序列化   1、从ArrayList序列化为二进制数组 /** * 将ArrayList转化为二进制数组 * * @param list * ArrayList对象 * @return 二进制数组 */ private byte[] getImageSpanInfoBytesF ...
因为项目需要,需要实时监听光标的位置变化,网上提出的用TextWatcher和onTouchListener中调用contentText.getSelectionStart()都是获取的上一次位置。   只要重写onSelectionChanged就可以获取最新的光标位置了。   public class NoteContentEditText extends EditText { public NoteContentEditText(Context context, AttributeSet attrs) { super(context, attrs); // ...
 我们使用ListView将位置拖到顶部和底部默认是没有回弹效果的,为了增加这个效果,方法如下: 1、开启overScrollMode为always 在布局中 android:overScrollMode="always" 或在代码中 setOverScrollMode(View.OVER_SCROLL_ALWAYS); 2、继承listview 覆盖overScrollBy方法,并且利用反射机制修改阴影效果为透明 public class BounceListView extends ListView { private static final int M ...
Global site tag (gtag.js) - Google Analytics