自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (12)
  • 收藏
  • 关注

原创 Android开发之回调模式的应用

Android里面 很多地方都用到了回调模式,比如控件的点击事件,activity的生命周期等等。 回调模式的本质:比如类A实现了接口I,这个时候 I就隐式的持有了A的对象的引用,就可以在需要的时候调用A类的里面的方法。 这里我举两个比较常用的例子: 1.很多APP都会有这样的应用场景,有的页面是要登录才能查看,而有的页面则是不需要登录即可查看,而且如果在登录过后需要继续做之前那件事情,比如点

2016-11-17 13:42:41 324

Android开发之回调模式的应用

Android里面 很多地方都用到了回调模式,比如控件的点击事件,activity的生命周期等等。回调模式的本质:比如类A实现了接口I,这个时候 I就隐式的持有了A的对象的引用,就可以在需要的时候调用A类的里面的方法。这里我举两个比较常用的例子:1.很多APP都会有这样的应用场景,有的页面是要登录才能查看,而有的页面则是不需要登录即可查看,而且如果在登录过后需要继续做之前那件事情,比如

2016-11-17 11:42:20 183

原创 Android开发之pageAdapter的改写实现View的复用

我们都知道ViewPager只会保存左中右三个页面,如果有多个页面,那么滑到第四个页面的时候,第一个就会被销毁,这样,如果像我们常用的一些Banner,比如广告栏,有几十个图片切换的话,那就要new 几十个Imgeview控件,其实这里是没必要的,我们也可以改写pageAdapter,实现类似listview的复用。先上代码:public class MyBasePageAdapter<T> ext

2016-09-28 12:14:22 856 1

原创 Android开发之BaseAdapter的改写,超简洁

大家都知道listview的adapter有个复用机制,但是每次直接继承baseAdapter要重写很多方法,是不是很麻烦,这里我分享一下自己的写法。 先上代码: MyBaseAdptaer.javapublic class MyBaseAdptaer<T> extends BaseAdapter{ protected Context context; protected Lis

2016-09-27 15:52:57 447 1

原创 Android开发之关于静态handler的使用

关于handler的具体概念,我在前面的线程间的通信已经讲过了,这里就不多说,这里主要是讲一下静态handler的使用,因为,如果我们在每个activity或是其他类里面都new 一个handler其实是比较低效率的做法,完全可以只用一个全局的静态handler来进行线程和主线程的通信。先看测试代码:package com.mnsn.lldr.utils;import java.util.Array

2016-07-04 10:24:29 4006

原创 Android开发之自定义控件

Android开发中经常会用到自定义控件,自定义控件有三种,继承控件,组合控件,以及自绘控件。 继承控件,比如我之前写的下拉刷新的例子,组合控件则是为了把相同功能的布局模块抽取出来,而自绘控件则是根据需要改写ondraw方法实现一些有特殊需求的控件。继承控件和组合控件都比较简单,我这里就不多说了,主要讲下自绘控件。 这里以通讯录右侧的侧边栏为例: 代码很简单:package com.examp

2016-06-24 14:47:31 256

原创 Android开发之多进程详解

相信很多做Android开发的同学对进程在Android中这个概念,都不怎么说的清楚,网路上有的说是一个应用程序,这其实是不对的,w为了研究Android中进程的概念,我这里写了一个很简单的代码, <application android:name="com.example.nine.MyApplication" android:allowBackup="true"

2016-06-14 17:34:53 4547 2

原创 Android事件传递机制详解

当我们触摸某个view,这个时候就会向这个view传递一个事件,比如手指按下去这个动作,就是一个MotionEvent.ACTION_DOWN事件,手指在屏幕上移动,就是MotionEvent.ACTION_MOVE事件,手指抬起来,就是MotionEvent.ACTION_UP; 那么,如果在一个父布局中,有一个子view,两者同时设置了事件监听,当我们触摸子view时同时也触摸了父布局,那么该

2016-06-12 16:53:14 415

原创 Android开发之线程池详解(2)自定义线程池

这里我模仿newFixedThreadPool写了一个定长线程池。 废话少说,先上代码:package com.example.nine;import java.util.Collections;import java.util.LinkedList;import java.util.List;public class MyThreadPool { private List<Runna

2016-06-07 13:32:45 570

原创 Android开发之线程池详解(1)Android自带的四种线程池

在Android开发中,如果我们要执行某个耗时任务,一般都会考虑开启一个线程去处理。 因为我们都知道一个线程run方法执行完毕后,才算真正结束,但是,这只是结束,并没有被回收,会一直闲置在那里,等待GC去回收,所以如果每执行一个任务,我们都new一个线程,那么在某些极端的场景下,是比较消耗内存的。 之前的内存优化的文章中,我讲过关于Android中的池的概念,也就是复用的机制,那么对于线程也有个

2016-06-07 13:25:17 2364

原创 Android开发之内存优化探讨(4)Android里的复用机制

提高Android开发里的复用,最常见的可能就是listview的复用了,这种情况适合的场景是什么呢? 就是我们需要显示一些重复度较高,数量庞大或者无限的模块时,为了避免不断地new对象,消耗内存,可以采用有限的几个模块进行复用即可。先看看关于listview的adapter的一个最简单的例子:package com.mnsn.lldr.adapter;import java.util.Lis

2016-06-02 16:10:18 516

原创 Android开发之内存优化探讨(3)软引用与弱引用的使用

在Android开发中,软引用和弱引用可能用的比较少,但是如果能够在适当的场景下正确的使用,可以对我们的app提供很好的优化体验。1.强引用:也就是我们最常使用的引用,比如普通声明一个变量String str = null; 这个str就是强引用。关于强引用,也就是说,当系统内存不足时,系统宁愿抛出oom异常终止程序,也不会去回收它。2.软引用:SoftReference

2016-06-01 16:35:30 773

原创 Android开发之内存优化探讨(2)空间复杂度与时间复杂度以及实际场景的选择

关于空间复杂度与时间复杂度,这个一般指的是算法。 在Android开发里面,我指的是一个app占用内存的多少与用户体验度的关系。我们都知道空间复杂度与时间复杂度是相互矛盾的,我们所要寻求的是一个平衡而已。举个Android开发中最为常见的例子。 当我们在一个activity里面嵌套4个fragment的时候,点击下方的四个按钮,那么4个fragment会切换这个种效果。 那么,我们一般有两个方

2016-05-31 16:41:53 633

原创 Android开发之内存优化探讨(1)app内存分配原则。

我们一般是怎么去评价一个app的性能呢? 在保证功能完善的情况下(这一点,一般做过一年以上的开发都能实现),另外就是流畅度了,通俗点说,就是这个app浏览切换起来卡不卡。 虽然现在的Android手机不断更新换代,系统运行内存也越来越大,所以可能一般的优化很难看到效果,只有在比较低端的手机上可以提现出来,但是本着我们对自己的严格要求,还是要在内存优化这方面深入了解下的。首先,我们要明白一点,关于

2016-05-31 16:18:50 1864

原创 Android开发之消息机制详解(2)线程间的通信AsyncTask

我们如果要执行一个耗时的操作,一般都会开个线程,那么在Android里就有两种方法,一种就是我上篇文章中讲到的用handler+thread,而另外一种就是今天要讲到的AsyncTask。 代码比较简单:package com.example.test;import android.annotation.SuppressLint;import android.app.Activity;impo

2016-05-30 15:30:34 380

原创 Android开发之消息机制详解(1)线程间的通信handler

做Android开发的同学,可能都知道这么一点,UI更新只能在主线程中执行。 这是为什么呢?1.这其实是因为UI更新并非是线程安全的,我们使用handler其实是将这个消息Message添加到消息队列MessageQueue中,而主线程中的循环管理器Looper会不断去循环遍历MessageQueue,从MessageQueue中取出消息,然后执行对应的操作。2.这里,Looper从Message

2016-05-27 15:30:36 473 1

原创 Android开发之Activity以及View的生命周期详解

关于activity和View的生命周期,网路上已经有很多详细的解释了。并且有一副很经典的示意图,简单地就能百度到,我这里就不放上去了。这里我针对网路上的有些没有讲到的,或者有些误区,然后结合两者说下。onCreate(Bundle savedInstanceState)和onFinishInflate()从字面上都可以看出,onCreate是activity的创建回调,一般我们会把setCon

2016-05-23 13:25:29 3247

原创 Android开发之fragment的可替代性的探讨

做Android的同学肯定都用过fragment,最常见的就是主界面+下面四个按钮,点击按钮四个fragment相互切换这种模式。 那么,fragment到底是什么东西呢?网上很多人都说fragment是activity的碎片,因为它与activity拥有类似的生命周期,非常方便管理,而且可以使代码分块,结构更加清晰。 这一点确实没错。 那么,除了在代码结构以及运用方便上带来的好处之外,fra

2016-05-17 14:32:40 1327 1

原创 Android开发之图片详解(5)

这是关于图片的最后一篇。 主要说下bitmap的应用场景,以及该如何缩放。 这里我举了一个拍照显示的场景,这个场景其实用的也是比较多的。 先上示例代码:package com.example.imagetext;import java.io.File;import java.io.IOException;import android.annotation.SuppressLint;impo

2016-05-13 13:35:43 564 1

原创 Android开发之图片详解(4)

接上一篇。 主要研究下bitmap和drawable的使用,以及两者的区别。 先看测试代码:package com.example.imagetext;import java.util.ArrayList;import java.util.List;import com.example.imagetext.R.drawable;import android.annotation.Suppres

2016-05-11 10:36:10 2821

原创 Android开发之图片详解(3)

在Android中,Bitmap普遍是造成OOM的罪魁祸首,而且普遍都认为bitmap所占用的内存远大于Drawable,而且网上也提供了很多内存回收的方法以及建议,比如在activity销毁后主动去调用bitmap.recyle()方法等,那么到底是不是真的呢?我专门针对bitmap和drawble做了以下测试: 为了方便测出OOM,我专门将一张比较大的图片1270*1920放在了mdpi的文件

2016-05-10 14:00:57 930

原创 Android开发之图片详解(2)

这一篇 主要分析下不同drawable文件夹下的图片在Android手机上的加载效果。 首先在drawble-mdpi和drawble-xhdpi文件夹下分别放入同一张图片,注意是同一张图片,要起不同的名字,如图: 测试代码如下:package com.example.imagetext;import java.util.ArrayList;import java.util.List;impo

2016-05-05 15:24:47 517

原创 Android 开之图片详解(1)

在Android应用里面,用到最多的可能就是图片的显示了,而很多OOM的产生也是因为图片占用过多内存导致的,之前一直对这些概念很模糊,自己也在开发中不断的学习以及实验,在网上也查过很多资料,答案也是五花八门,现在本着记录的想法,做了一个整理。首先:说下像素(PX),Android开发相对单位(dp),频幕密度(dpi,在打印机上也叫ppi,其实是一样的概念),以及物理宽高(英寸)的关系。比如一个对角

2016-05-04 15:11:23 422 4

原创 ViewPager加fragment如何保存fragment里面的状态

其实思路 很简单 就是在fragment的oncreateview方法里判断 这个view是不是NULL,如果是null,则是第一次加载,那么初始化数据,否则复用这个view,只刷新需要刷新的数据,有一点注意的是,在复用这个view之前,这个view已经有了一个父布局,所以必须把它去掉,然后再添加。代码比较简单,就不用demo了,直接上源代码:public class F2 extends Frag

2016-04-25 11:06:37 1053

原创 日历 可左右滑动流畅 选中效果

之前有用viewpager加gridview实现过日历的翻页和选中效果,但是尤其是滑动效果不太流畅,现在改成线性布局,比较完美的实现了这个效果,并且对viewpager的无限循环也做了复用处理。viewpager在内存中会保存左中右三个页面的view,我们只需要将这三个view放在一个list里,循环的时候 复用刷新数据即可,原理类似listview的view池的概念。效果图主要代码:package

2016-04-22 16:58:56 2128 2

原创 Android流式布局的简单实现

之前有看过网上好多都是写的自定义控件,感觉那样子太麻烦,自己就用线性布局加textview实现了一个,思路就是先计算一行就是一个水平的线性布局,最外层是个垂直的线性布局,然后根据子控件的长度动态添加即可。 这里我还做了一件事,就是当不能完全显示的时候,我计算了水平间距,这样看起来舒服点。 效果图: 然后是主要的代码:MyLayout.javapackage com.example.button

2016-04-11 11:05:54 323

原创 listview下拉刷新+上拉自动加载+侧滑删除

这篇文章算个总结吧,前面几篇都是分别单独实现的,但是当把它们整合到一起的时候,可能会出现各种手势冲突,所以这篇文章给大家介绍一个自我感觉还比较完美的demo吧。 这里我把margin实现的下拉刷新也放进去了,只是为了便于大家比较两种效果。 建议还是用scroller实现的。 反正可以切换的。现在主要说下与单独实现相比需要改写的一些地方,主要是为了避免冲突: MyFreshLayoutScro

2016-04-08 14:33:45 1589

原创 listview 侧滑删除(-)单独的侧滑删除

以前我也在网上用过别人写的侧滑删除,但是总是不那么顺畅,而且各种冲突,比如跟onitemclick点击事件,listview本身的滑动事件,还有下拉刷新的事件等等……所以现在自己写了个侧滑删除,用的是scroller,算是没有什么冲突吧,但是要和下拉刷新完美兼容,还得在下拉刷新里做些处理,这次我先给大家介绍单独地demo,下一篇再将侧滑删除和下拉刷新以及上拉自动加载全部整合起来。效果图: 主要代码

2016-04-08 14:22:28 443

原创 listview实现上拉自动加载

上一篇文章为大家介绍了用scroller实现listview的下拉刷新,这篇介绍上拉自动加载,意思就是判断listview滑动到底部过后自动去加载,不用主动再上拉,这个其实没什么特别的,先上效果图: 这里我把上一篇用到的scroller实现的下拉刷新写到一起了,便于大家下载。最后,是下载地址: http://download.csdn.net/detail/feiyang877647044/94

2016-04-08 13:31:46 248

原创 超简洁的下拉刷新(二)用srcoller实现

上一篇里面已经给大家介绍了用margin实现的下拉刷新,这篇介绍用scroller实现的,这也是目前我自己正在用的,体验要比magin流畅一点,为了写这个东西,特地去了解了一下scroller的用法,这里我就不过多介绍了,先上效果图: 接下来是主要代码: MyFreshLayoutScroller.javapackage com.example.freshscroller; import an

2016-04-08 13:10:09 414

原创 超简洁的下拉刷新(-)marin

下拉刷新这个控件,之前一直用过很多网上的demo,但是都不尽人意,而且写得比较复杂吧,最近自己也学着写了下,最开始想到是用margin来实现,代码其实相当简单,就200行左右,不过写出来过后,发现在普通的listview上面还好,但是在比较复杂的listview上面不太顺畅,虽然后来又改用sroller来实现了,但是为了本着记录自己学习的思想,还是把marin实现的Demo发出来,供大家交流学习。

2016-04-08 11:32:28 360

原创 android日历(实现左右滑动,上下收起展开,根据标题栏定位)

先上效果图主要思想是用gridview+viewpager做的。这里就上一个主要的DateView类吧:package com.example.datedemo;import java.util.ArrayList;import java.util.Calendar;import java.util.HashMap;

2015-07-24 13:56:56 1360 3

listview下拉刷新+侧滑+上拉加载(改进版)

listview下拉刷新+侧滑+上拉加载(改进版)

2016-12-14

Android侧边栏

Android 仿微信侧边栏

2016-07-05

Android通讯录侧边栏

Android通讯录侧边栏

2016-07-05

Android仿微信通讯录侧边栏

Android仿微信通讯录侧边栏

2016-07-05

日历可左右滑动选中

日历 左右滑动 选中

2016-04-22

Android流式布局的简单实现

用线性布局实现流式布局

2016-04-11

下拉刷新+侧滑删除+上拉自动加载

listview的下拉刷新+侧滑删除+上拉自动加载整合无冲突

2016-04-08

listview侧滑删除

listview侧滑删除,用的scroll实现,与listview本身无冲突

2016-04-08

listview上拉自动加载

listview上拉自动加载

2016-04-08

下拉刷新+上拉自动加载

下拉刷新+上拉自动加载

2016-04-08

scroller实现下拉刷新

支持listview和scrollerview 超简洁顺畅的下拉刷新

2016-04-08

margin实现下拉刷新

margin 实现下拉刷新 支持listview和srcollview

2016-04-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除