自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

转载 RecyclerView(三)——ItemAnimator

RecyclerView为我们提供了相较于ListView算得上华丽的动画特效。RecyclerView的特效,非常符合Material Design的风格,但有时候,我们也希望能够自定义ItemAnimator。我们自定义一个类,并承继SimpleItemAnimator。可以得到共9个需要实现的方法。 @Override public boolean...

2016-07-17 22:09:00 221

转载 RecyclerView(二)—— ItemDecoration

Recycler没有直接提供设置item间距的功能,而是提供了一个更强大的基类ItemDecoration。类如其名,这个类是Item的装饰。它既可以作为Item的间距,也可以在item之间绘制分隔线,甚至可以对每个item的边缘都进行不同的绘制。ItemDecoration本身是一个虚类,我们在使用时,只能继承它。  先看一个简单版本,这个版本的ItemDecoration只提...

2016-06-25 22:10:00 135

转载 RecyclerView(一)

  Android系统在5.0版本推出了新控件——RecyclerView。RecyclerView几乎要将我们过去使用的ListView取代掉。因为我们不再需要自己管理一个带有static关键字的ViewHolder,不再需要控制Item的回收,同时,它也为我们提供了Item的添加和减除的动画接口。最后,最重要的是,它为ListView这样的,多项重复布局,提供了更好的解耦。将List...

2016-06-25 16:40:00 110

转载 Volley——阅读梳理

用一个月的下班之后玩耍时间的空余,阅读了Volley的源码,前面也记录了阅读过程,这篇旨在梳理一下Volley的工作流程。通常,我们使用Volley,流程是很简单的。创建一个Request,再新建一个RequestQueue,最后把Request加入到RequestQueue中,接着我们就可以等待请求的Response了,如果是StringRequest这样的请求,我们可以直接得到S...

2016-06-01 23:41:00 107

转载 Volley——(五)ExecutorDelivery

  在的StringRequest中,我们这样一个方法,还没有追踪过。 @Override protected void deliverResponse(String response) { mListener.onResponse(response); }  这个方法,会在我们请求结束后调用,但它是如何工作的,我们还没有...

2016-05-30 22:40:00 103

转载 Volley——网络请求(四)Request

  前面分析了Volley初始化的基本流程,下面我们来看一看Volley发送请求的过程。   StringRequest translateRequset = new StringRequest(Dict_Url + word.toLowerCase(), mResponListener, mErrorListener); mQueue.add(t...

2016-05-22 14:00:00 81

转载 OpenGL学习(一)

  OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。在游戏和特效领域,使用非常广泛。在移动平台上Android支持了OpenGL ES。今天,我开始学习OpenGL ES 并在此记录学习的过程。  Android提供了GLSurfaceView,是一个支持OpenGL ES的控件,封装了OpenGL的复...

2016-05-19 00:25:00 80

转载 Volley——网络请求(三)

上一节,介绍了HurlStack的实现,根据我们外层的代码:/** * Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it. * * @param context A {@link Context} to use f...

2016-05-16 00:42:00 82

转载 Volley——网络请求httpstack(二)

  在之前的一篇博文中,我简略记录了,Volley的请求队列和线程管理的实现。这一次来记录一下HttpStack的工作过程   /** * Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it. * * @p...

2016-05-10 00:30:00 301

转载 Volley——网络请求

  Volley作为当年Google在2013年的Google I/O上的重点,是一个相当给力的框架。它从设计模式上来说,非常具有扩展性,也比较轻巧。关于Volley的使用,网上介绍的很多了,不再赘述。现在,我将记录我阅读Volley源码的过程,来学习Volley的设计思想和其中的一些小技巧。  值的一提的是,新版的gradle已经支持:  compile 'com.andr...

2016-05-02 20:59:00 87

转载 来自Google的响应式——Agera

  响应式编程越来越符合现在的数据为核心的开发思路。所以,在去年,响应式也越来越火,从RxJava到React(支持了响应式)。如今,为了满足更多开发者的需求,Google也推出了自己的响应式框架——Agera。  我之前从来没有进行过相关的开发,Agera算是第一次接触响应式开发,虽说它是一种新的开发思路。但我更习惯于,从它解决了什么问题,开始说起。  其实在Android开发...

2016-04-26 23:25:00 85

转载 EventBus源码阅读(三)—— 订阅

  经过订阅之后的类,才会接受到EventBus,post出来的消息。所以今天我们来看一下订阅的流程。EventBus.getDefault().register(this); /** * Registers the given subscriber to receive events. Subscribers must call {@link #u...

2016-04-21 01:32:00 71

转载 EventBus源码阅读(二)——Poster

  上一节在阅读了EventBus的消息发送后,停在了postToSubscription方法上: private void postToSubscription(Subscription subscription, Object event, boolean isMainThread) { switch (subscription.subscriberM...

2016-04-19 23:12:00 86

转载 EventBus源码阅读(一)

  EventBus虽然有诸多缺点,但是作为一个经典的事件总线框架,其代码还是有一些学习价值,从他的代码中可以获得一些启发,运用于开发。  EventBus有两个入口,一个是订阅,一个是发送事件。今天从发送事件开始阅读。 EventBus.getDefault().post("11");  进入post方法 /** Posts the...

2016-04-17 15:22:00 80

转载 EventBus使用说明

EventBus使用说明EventBus因为其使用方便简单,受到了很多Android开发的喜爱。我将从这篇博客开始,学习EventBus。在学习EventBus的原理之前,我先记录一下EventBus的使用方法。EventBus类似Android中的广播,是标准的观察者模式。因此,我们在使用EventBus时,只需要关注三件事。制作一个消息,注册一个监听者,发送一个消息。1....

2016-04-16 00:35:00 95

转载 简易的拖动——ViewDragHelper

  在Android中,要开发一个控件拖动的模块,代码是比较繁琐的。好在Android在support.v4中为我们提供了一个强大的拖动类——ViewDragHelper。  我们只需要为它提供一个ViewGroup,这个ViewGroup中的所有childView就可以随意拖动了。同时,它为我们提供了大量的监听方法,可以方便我们进行各种拖动中,拖动后的处理。  通常,我们会自定...

2016-04-10 23:15:00 67

转载 进程间的对话——aidl(三)

  之前记录了一个客户端如何跨进程地与一个服务端通信。如果只有一个客户端需要它,那么跨进程的意义也显得不那么大了。所以,我在此再建立了一个客端共同使用这个服务端。  客户端的代码与之前的代码几乎一模一样。在此不贴代码了。唯一不同的是,文件结构不同。由于服务端写在之前的工程中,我们需要一套共同的aidl接口,和Book.java。不仅代码相同,包名也要完全相同。所以,建议直接从服务端的...

2016-03-29 23:57:00 56

转载 进程间的对话——aidl(二)

  上一节http://www.cnblogs.com/fishbone-lsy/p/5327500.html 主要记录了一个跨进程的图片管理后台,设计了getBookList和addBook两个方法。但不管哪个方法,其实都是客户端对服务端发消息,然后服务端返回消息。没有服务端主动向客户端发消息的情况。所以,在这一节补充一下这种情况。增加一个新书通知的功能。所谓服务端给客户...

2016-03-28 23:36:00 60

转载 进程间的对话——aidl(一)

  众所周知,在Android系统中,系统允许单个app使用的内存是有限的,这个限制因手机而异。但有时候,我们需要一个计算量较大的后台任务,不希望它占用前台太多的内存。此时,我们可以用Service。通常的Service是在本app的内存中的,接下来我们就记录一种方法,为Service新开一个进程。由于是新开的进程,所以系统会为它分配专门的内存空间,缓解了app前台使用内存的压力。...

2016-03-28 00:08:00 59

转载 View 多点触控

  电容屏战胜电阻屏的一大胜点就是多点触控。随便智能手机的发展,多点触控在各种模块和控件中运用很多。如地图app,或是大图浏览时,两个指头可以控制图片的大小。这方面,相关的第三方控件很多,今天简略记录一下它们的实现原理。  单点触控的方法,相信都已经很熟悉了。  view.setOnTouchListener(touchListener); View.OnTouch...

2016-03-22 20:03:00 57

转载 Handler的内存泄露分析

  Handler作为Android中一个消息传递的工具,使用非常频繁。不论是应用层开发,还是系统库件如AsyncTask的封装,都或多或少地使用了它。然而,Handler的危险性也是非常大的,使用起来稍有不慎就会引起内存泄露。  泄露来源分析:  常见错误用法: public class SampleActivity extends Activity { ...

2016-03-21 19:56:00 66

转载 Camera的使用(二)

  上一节中,记录了如何使用SurfaceView对摄像头进行预览(http://www.cnblogs.com/fishbone-lsy/p/5240504.html)。这一节,简单记录一下拍照的实现。  为了简单,我将单击预览画面作为拍照的触发动作,拍照之后,将照片存在手机本地的相册中。  拍照的方法如下: /** * 拍照 */...

2016-03-06 15:03:00 116

转载 初识滤镜

  说起滤镜,是图像处理中常用的工具,它将原图赋予各种效果,像是在原图是蒙上了一层有效果的镜子。虽然最终的效果是这样,但是在移动的设备上,其原理不可能是放两张图。而是对原图的每一个点的ARGB进行变换。所以在写代码之前,我们需要了解,图像的ARGB是如何进行变换的。Android中可以通过颜色矩阵(ColorMatrix类)进行颜色变换。    通过...

2016-03-06 00:45:00 104

转载 Camera的使用(一)

  本节主要记录在Android中不使用默认的拍照应用,而是自启摄像头,并不断刷新屏幕实现预览的功能。  AndroidManifest.xml:   <activity android:name=".CameraActivity" android:screenOrientation="portrait"/>  CameraActivity.java:...

2016-03-03 23:16:00 122

转载 fragment使用(二)

   上一篇讲到用fragment代替activity,做主要的界面呈现,其主要难点就是要对fragment的生命周期非常熟悉。相对于activity,fragment的最大好处,就是其非常灵活的生命周期。我们可以将界面的任务分成两部分,一部分作UI的展示,另一部分则是和UI无关的后台任务。因为这两部分生命周期是不同的。UI会随着屏幕尺寸,屏幕水平/竖直的方向变化时,生命周期需要重新进行...

2016-02-28 21:57:00 54

转载 fragment的使用(一)

  从google在Android3.0推出fragment之后,fragment的使用场景越来越多。fragment可以将UI界面一块儿一块儿的封装,有更加强大、灵活的生命周期,更快的启动速度。现在越来越多的app,会较少的使用activity,而是用fragment完成大部分页面的展示。  在这里,我将记录关于fragment的使用方法。  首先,我们要建立一个大致的结构模型...

2016-02-28 17:03:00 73

转载 关于PopupWindow的一些备忘

1.有无背景对PopupWindow的影响。设置了PopupWindow的background,点击Back键或者点击弹窗的外部区域,弹窗就会dismiss。相反,如果不设置PopupWindow的background,那么点击back键和点击弹窗的外部区域,弹窗是不会消失的。原因是如果有背景,则会在contentView外面包一层PopupViewContainer之后作为mP...

2016-01-29 16:55:00 39

转载 SnackBar使用方法

  我们在google keep中删除记事块儿时,下面会弹出一个小条儿,问你是否撤消,一段时间后自动隐去,同时右划也可以使它隐去。最初我以为这个小条儿是做的一个自定义控件,后来无意中发现不用这么麻烦。Google在Android中做好了一个控件SnackBar可以简单地完成这个功能。要想支持Swipe手势的话,这个view需要是一个CoordinatorLayout(在Android S...

2016-01-25 20:41:00 153

转载 ClassLoader使用经验(一)

  在Android开发中,有时,会需要在应用中额外下载一些其他的插件,进行额外的功能。比如QQ的皮肤,掌阅的语音包,需要在使用过程中下载额外的apk,但是额外的apk无需安装我们即可使用里面的资源和方法。这样的功能就是用ClassLoader实现的。在此记录一些ClassLoader的使用方法与经验用以备忘。  这里要实现的例子很简单。我在一个额外的工程B中实现一个Toast的方法...

2016-01-24 14:10:00 76

转载 正则表达式(常用表达式)

x字符x\\反斜线字符\0n带有八进制值0的字符n(0<=n<=7)\0nn带有八进制值0的字符nn(0<=n<=7)\0mnn带有八进制值0的字符mnn(0<=m<=3、0<=n<=7)\xh...

2016-01-09 00:18:00 129

转载 AsyncTask源码阅读

  AsyncTask是Android系统封装的多线程工具类。它管理着线程池,控制着合理的执行中的线程的个数。同时,它还提供了,执行前,执行中,执行后的接口,方便线程的管理与使用。  下面,我们来阅读一下AsyncTask的源码,才疏学浅,不能多么深刻的理解,但相信在阅读过程中,能有一些意想不到的收获。  public abstract class AsyncTask&l...

2015-12-27 19:59:00 84

转载 LruCache源码解析

  Android开发中,为了减少用户的流量使用和使APP体验更流畅,我们通常会使用缓存技术。通常来说,缓存分两级。第一级,是内存缓存,它的好处是,读写非常快,缺点则是,过量地使用会使APP整体变得十分卡顿,因为运行的内存不足了,甚至引起OOM。第二级则是文件缓存(File,SQLite等),文件缓存的读写效率要低于内存缓存。但是空间更加的充足。  一级缓存由于空间很有限,我们通常会...

2015-12-19 19:42:00 61

转载 Android阅读器的思路(一)

  最近工作业务中遇到了,Android阅读器的需求。面临的第一个问题就是,如何根据屏幕的大小,将一本小说分成每一页需要显示的内容。简单来说,就是把一整本小说的String变成每一页恰好可以显示的String组成一个String[]。  首先,我们要取得显示区域的宽高——width,height。  然后,计算出,在当前字体大小下,一屏可以显示的行数rowCount。  接下...

2015-12-06 20:57:00 374

转载 Socket通信基础(二)

  接第一章介绍UDP通信。相较于TCP,UDP是非常轻量级的通信方式。主要运用于游戏、影视、娱乐等场合。这些场合的共同特征就是,对速度要求比较高,但是对正准备性要求,并不是很高。比如视频时,丢掉一个错误帧,并不会观影质量产生太大影响。  这篇主要介绍Android端的UDP通信。  假设接收的IP是192.168.0.50,监听端口是4444(如果是手机的IP可以在设置中的关于...

2015-12-04 16:34:00 73

转载 Socket通信基础(一)

  Android的Socket通信分为两块,它们分别是TCP和UDP。  TCP与UDP两者相较而言,TCP是重量级长连接,可靠的,有序的,无边界的,速度较慢;而UDP是轻量级无连接,不可靠,无序,有边界,速度较快。目前的应用场景来说,TCP用于不能出错的场合,如金融、文件传输(其中,金融的FIX协议是基于TCP协议的)。而UDP则是主要运用在语音通话、直播等速度要求很高的地方,中...

2015-11-29 21:29:00 64

转载 形形色色的通知(三)——番外

  前面关于Notification的介绍已经能完成大部分的功能,这篇主要记录一下,看到但是暂时还没用的上知识点和功能。  一、对于一个app,notification的区别是由id或者id与tag组成的一个对,作为唯一的notification标识。 * Each of the notify methods takes an int id parameter and opt...

2015-11-22 23:37:00 100

转载 毛玻璃效果简单实现

  项目中需要运用到毛玻璃的效果。经过搜索查阅,踩了一些坑,找到了一条暂时可行的办法。  其中,核心的控件是使用RenderScript这个类,这个类属于jni类,在较低版本的Android系统中,是不具备它的相关方法的。所以我们只能使用support.v8里面的类。然而,support.v8并没有默认地放在新建工程中,因此我们需要自己去添加。  第一步:将D:\AndroidS...

2015-11-22 20:35:00 232

转载 读ActiveAndroid番外——Field

  在学习ActiveAndroid的过程中接触到的第一个比较生疏的概念就是Field。这个类表示一个类的成员。光这样说比较绕,我们可以看个小例子。首先定义一个类LType:public class LType{ public String uid; public String name="lsy"; public void print(...

2015-10-27 23:36:00 46

转载 读ActiveAndroid源码(五)

前面几篇,断断续续地囫囵吞枣地读了ActiveAndroid的部分源码,大致了解了ActiveAndroid的注解反射原理。其中很多细节还不算很清楚,加之内容非常多,为了更好地阅读接下来的内容,在此对前面阅读的部分作一个总结。在之前的几篇中,重点阅读了ActiveAndroid中的三个类:Conguration , ModelInfo , TableInfo。下面将对这三个类的...

2015-10-25 16:57:00 51

转载 读ActiveAndroid源码(四)

上一章在读DatabaseHelper的初始化时,发现读不动了,因为ModelInfo应该放在前面读。因此,现在开始读ModelInfo。final class ModelInfo { ////////////////////////////////////////////////////////////////////////////////////// /...

2015-10-24 13:29:00 63

空空如也

空空如也

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

TA关注的人

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