自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android自定义控件之仿京东商城下拉刷新

前面写了4篇自定义控件的博客,并且开通了一个专栏,把4篇文章添加到专栏中了,耐心等待博客专栏的徽章出现,奈何等了几周后还是没有出现,后来发现至少需要5篇文章才能出现专栏徽章,于是有了这篇仿我大京东快递小哥的下拉刷新。 直接上图先! 分析这个下拉刷新效果分为两个部分: step1:快递小哥和快递包裹的缩放效果,看上去就像是快递小哥跑过来一手拿过快递的样子 step2:快递小哥拿到包裹后,开启暴

2015-11-23 21:01:08 11582 20

原创 Android自定义控件之仿汽车之家下拉刷新

关于下拉刷新的实现原理我在上篇文章Android自定义控件之仿美团下拉刷新中已经详细介绍过了,这篇文章主要介绍表盘的动画实现原理汽车之家的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个表盘随着下拉的距离动态改变指针的角度 第二个状态为放开刷新状态(release to refresh),在这个状态下是指针角度变化的一个动画第

2015-11-02 09:19:25 9938 13

原创 Android自定义控件之仿美团下拉刷新

美团的下拉刷新分为三个状态: 第一个状态为下拉刷新状态(pull to refresh),在这个状态下是一个绿色的椭圆随着下拉的距离动态改变其大小。 第二个部分为放开刷新状态(release to refresh),在这个状态下是一个帧动画,效果为从躺着变为站起来的动画。 第三个部分为刷新状态(refreshing),在这个状态下也是一个帧动画,是摇头的动画。其中第二和第三个状态很简单,就是两

2015-11-01 14:41:23 13966 15

原创 Android自定义控件之动态柱状图

设计思路:1.画柱状图 2.画竖线 3.画顶部横线 4.画文字1.画柱状图画柱状图的方法很简单,就是使用canvas.drawRect(float left, float top, float right, float bottom, Paint paint),其实这里我遇到了一个问题,一开始我想只画一条柱状图,然后需要几个柱状图就在xml文件中声明几个,后来我发现,这样实现起来的动画非常之卡

2015-10-30 22:06:03 8405 5

原创 Android自定义控件之百分比圆环进度条

首先我们先来看一下效果 分析我们来看这个进度条应该分为3个小部分 1.中间的圆 2.外边的圆环 3.中间的文字分开画这3部分就是需要我们自己画出来的,因此我们需要3根画笔//设置中心园的画笔 mCirclePaint = new Paint(); mCirclePaint.setAntiAlias(true); mCir

2015-10-15 21:52:32 9837 15

原创 Android自己动手打造XML解析框架

我们在工作中,经常会从服务器获取数据并进行解析,服务器返回的数据有两种:json和xml。json我们可以用gson或者fastjson等优秀的开源框架去进行解析,省去不少麻烦,通常我们只需要把bean设计出来,然后调用一句话就可以解析成功了。而解析xml数据,我们得去一个标签一个标签的去比较,修改起来也非常麻烦,比如我们现在不需要某一个标签上的数据了,我们还得去把代码中那一行给删除,如果我们的需

2015-07-20 09:11:39 11559 9

原创 Android自定义ViewGroup打造各种风格的SlidingMenu

刚刚学习了鸿洋大大的QQ5.0侧滑菜单的视频课程,鸿洋大大用的是HorizontalScrollView来实现的侧滑菜单功能,HorizontalScrollView的好处是为我们解决了滑动功能,处理了滑动冲突问题,让我们使用起来非常方便,但是滑动和冲突处理都是android中的难点,是我们应该掌握的知识点,掌握了这些,我们可以不依赖于系统的API,随心所欲打造我们想要的效果,因此这篇文章我将直接

2016-02-22 09:56:58 9682 34

原创 Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能

首先推荐一下鸿洋大大的打造个性的图片预览与多点触控视频教程,这套教程教我们一步一步实现了多点触控实现对图片的平移和缩放的功能,这篇文章我将在鸿洋大大的基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释public

2016-02-17 10:36:48 9548 29

原创 Android一步一步带你实现RecyclerView的拖拽和侧滑删除功能

先上效果图: 本篇文章我们来学习一个开源项目Android-ItemTouchHelper-Demo 这个项目使用了RecyclerView的ItemTouchHelper类实现了Item的拖动和删除功能,ItemTouchHelper是v7包下的一个类,我们看一下他的介绍 This is a utility class to add swipe to dismiss and drag &

2016-01-13 14:53:15 27118 34

原创 Android设计模式之一个例子让你彻底明白工厂模式(Factory Pattern)

提出疑问这几天研究工厂模式的时候,看到网上的一些文章中举的例子我就很疑惑,我相信这也是许多人的疑惑:工厂模式的功能就是创建实例,我们创建实例直接new不就完了吗,干嘛还得再封装一层工厂类,然后用工厂类再去new出这个实例?这不多此一举吗?比如我看到这样的例子,我们的用户分为金牌用户和银牌用户,我们要创建一个金牌用户或者银牌用户。定义一个用户接口public interface ICustomer {

2015-12-29 13:36:59 12726 44

原创 Android设计模式之一个例子让你彻底明白装饰者模式(Decorator Pattern)

导读这篇文章中我不会使用概念性文字来说明装饰者模式,因为通常概念性的问题都很抽象,很难懂,使得读者很难明白到底为什么要使用这种设计模式,我们设计模式的诞生,肯定是前辈们在设计程序的时候遇到了某种困难,为了避免这种苦难的发生,从而设计出来的这种设计模式,所以这篇文章中我会带领大家遇见这种困难,从而使用设计模式解决这种困难,最后大家就会明白什么是设计者模式,什么时候应该使用设计者模式以及如何使用设计者模

2015-12-27 19:40:43 6802 13

原创 Android自定义控件之仿知乎详情页

效果图包含的技术点这个知乎的详情页面所包含的几个技术点:1. support.v7包下的ToolBar的使用2. ScrollView实现滑动顶部停靠3. 监听手势滑动方向来显示和隐藏底部视图ToolBar的使用知乎的Material Design版本顶部的导航是一个ToolBar控件,ToolBar是support.v7包下的一个控件,ToolBar的使用非常简单,首先我们现在layo

2015-12-26 19:13:43 8625 23

原创 Android设计模式之建造者模式(builder pattern)

builder设计模式我们很常见,比如我们使用AlertDialog的时候就使用的builder设计模式,著名的Universal-Image-Loader的初始化配置也是使用的builder设计模式,那么他们为什么使用builder设计模式,什么情况下我们应该考虑使用builder设计模式,这是我们很多人的疑惑,即便是学会了也不知道什么时候应该使用,这篇文章我将告诉大家在什么情况下应该考虑使用b

2015-12-25 10:08:45 5807 11

原创 Android并发编程之如何使用ReentrantReadWriteLock替代synchronized来提高程序的效率

Java的synchronized关键字可以帮助我们解决多线程并发的问题,比如我们有一个公共资源,多个线程都来操作这个公共的资源,就会出现并发的问题,比如不同的线程对同一个数据同时进行读和写,肯定会使得每个线程最后拿到的都不是自己所希望拿到的值,为了解决这个问题,我们可以使用synchronized关键字加锁。以前synchronized由于性能消耗太大,在Java SE 1.6对它进行了优化,使得

2015-12-16 14:46:03 2757 1

原创 Android并发编程之全方位解析AsyncTask

AsyncTask内部是一个线程池去执行任务的,同一个AsyncTask只能execute()一次,这是为什么呢?我们可以通过一个例子来说明。首先我们先不用AsyncTask,而是开启一个线程池来执行一个任务,我们将这个任务执行3次,线程池会把这个任务分配给3个线程来并发执行此任务,这3个线程操作的是一个共享变量,我们看看会出现什么问题。public class MainActivity

2015-12-01 20:17:15 2835 3

原创 Android并发编程之Handler,MessageQueue,Looper详解

Handler和Looper,MessageQueue之间是什么关系?Looper和MessageQueue是线程中的概念,但是线程默认是没有Looper和MessageQueue的,我们需要手动去设置他们,当一个线程有了Looper和MessageQueue后,就可以关联一个Handler,我们再通过这个Handler,就可以从别的线程中发送消息给这个线程来执行。我们给一个线程配置了Lo

2015-11-30 08:37:55 2673 5

原创 Android并发编程之白话文详解Future,FutureTask和Callable

说到并发编程,就一定是多个线程并发执行任务。那么并发编程的基础是什么呢?没错那就是Thread了。一个Thread可以执行一个Runnable类型的对象。那么Runnable是什么呢?其实Runnable是一个接口,他只定义了一个方法run(),这个run()方法里就是我们要执行的任务,并且是要被Thread调用的。因此,一个Runnable就可以理解为一个要被执行的任务,而Thread就是一个执

2015-11-23 08:19:17 14200 6

原创 Android并发编程之图文解析volatile关键字

相信很多人对于volatile关键字既熟悉又陌生,熟悉是对这个名字很熟悉,陌生是对他的原理和用法很陌生,最近几天通过查阅大量资料和书,终于对volatile有了一定的理解,写此博客一来做了记录,二来使大家减少学习成本volatile为什么不能保证原子性?现在我们的手机都是多核的,也就是说同时有好几颗CPU在工作,每颗CPU都有自己的Cache高速缓存,因为CPU的速度特别快,而内存的读取操作相对于C

2015-11-20 11:28:04 9862 13

原创 Android完美解析setContentView 你真的理解setContentView吗?

导读:本篇文章的前半部分为源码分析,后半部分为一个例子,在例子中我们会遇到一些问题,从而回答前半部分留下的问题!

2015-11-06 09:26:00 41862 15

原创 Android使用Messenger实现进程间通信

Messenger是一种轻量级的IPC方案,在进程间传送Message对象,Message中可以传送Bundle对象,Bundle中可以传送我们实现了Parcelable接口的对象。使用Messenger不会出现并发读写问题,因为Messenger是以串行方式工作的,所以如果有大量的请求,不适合使用Messenger。Messenger有两个构造方法: //关联一个Handler public M

2015-11-03 14:08:53 2269

原创 Android实现复制粘贴功能

Android复制粘贴功能

2015-09-30 15:16:57 3906

原创 Android使用枚举单例实现Toast快速刷新

通常我们使用Toast的时候可能会直接这样写:Toast.makeText(context, text, duration).show();这样写通常会有这样一个问题:新Toast要等上一次Toast结束后才能显示出来 这样的用户体验是不好的,当用户点的过快时,根本不知道提示出来的Toast是新的还是旧的,为了解决这个问题,我们应该全局保持一个单例的Toast,这样就可以进行快速刷新。1.在M

2015-09-30 14:26:13 4234 3

原创 是时候弄清楚getExternalStorageDirectory()和getExternalFilesDir()的区别了

之前看到一位网友的吐槽:当我把手机连接到电脑上时,在SD卡根目录看到了成百上千个各种应用程序创建的文件夹,拜托了各位开发者,你真的认为我的手机上只安装你一个app吗?你认为你的app是世界上最重要的app吗?你应该将你的应用数据写到这个路径下!

2015-09-01 14:29:45 124714 21

原创 Android性能优化之使用SoftReference缓存图片

什么是SoftReference? SoftReference是一个Java类,它代表一个引用,可以被垃圾回收器(GC)回收掉。每一个Java对象都会持有一个其他对象的引用,只要有一个对象持有另一个对象的引用,那么GC就不会回收掉它,只有当我们的程序内存溢出时并且没有其他资源可以释放的时候,GC才会回收掉持有SoftReference的引用,因此,SoftReference非常适合用来打造Cache

2015-08-04 18:04:18 2565 2

原创 Android性能优化之提高ListView性能的技巧

ListView优化一直是一个老生常谈的问题,不管是面试还是平常的开发中,ListView永远不会被忽略掉,那么这篇文章我们来看看如何最大化的优化ListView的性能。

2015-07-29 15:13:27 18320 16

翻译 Android原生下拉刷新SwipeRefreshLayout实践

本篇文章翻译自Ravi Tamada的Android Swipe Down to Refresh ListView Tutorial首先来看一下效果图你应该发现许多的android app例如Twitter,Google+都提供了一个下拉刷新数据的功能,只要用户从上往下滑动,新的内容就会加载出来,这篇文章我们将学习如何开发出同样的功能。

2015-07-27 22:25:37 6983 1

原创 不需要任何权限获得Android设备的唯一ID

这个问题来自于Is there a unique Android device ID? 我对这个问题的答案做了整理,包括将另一篇文章加入进来作为补充,可以完美解决此问题。作者提出的问题: Android设备有没有唯一的id?如果有的话,我怎么通过java代码获得这个id?答案: 我读了stack OverStack上每一个答案,谷歌的开发者博客和Android文档,我认为’Pseudo ID’

2015-07-22 14:42:46 27383 10

原创 彻底明白如何设置minSdkVersion和targetSdkVersion

minSdkVersion和targetSdkVersion相信很多人都不太理解,我在网上也看了许多关于这两者区别的文章,感觉说的都很模糊,直到我在stackOverFlow看到Android Min SDK Version vs. Target SDK Version这篇文章后,我才终于弄清楚如何去设置minSdkVersion和targetSdkVersion,现在我将分享给大家。简言之,这篇文

2015-07-21 16:23:20 9325 2

原创 获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度

1.获取屏幕尺寸2.获取控件尺寸3.获取状态栏/通知栏高度4.获取导航栏高度5.去除导航栏6.去除状态栏

2015-07-21 11:04:38 16659 2

翻译 绝对让你理解Android中的Context

这个问题是StackOverFlow上面一个热门的问题What is Context in Android? 整理这篇文章的目的是Context确实是一个很抽象的东西,我们在项目中随手都会用到它,可是很多人根本不理解它到底是干什么的,这篇文章还会添加Context in Andorid – INSIGHT的翻译,绝对让读者理解Context的意义。

2015-07-20 18:45:45 4488

翻译 Android启动Activity之后阻止EditText自动获得焦点

这个问题是StackOverFlow上面一个热门的问题Stop EditText from gaining focus at Activity startup。现在我将这个问题翻译并且将各路答案进行整理,保证可以解决这个问题作者遇到的问题如下:我有一个Activity,里面有一个EditText和一个ListView,每当我启动Activity的时候,EditText都会自动获取焦点(光标在那里一闪

2015-07-20 17:32:30 6459 2

转载 Android 通过反射随手可得的Application对象

在Android的开发当中,Application和Context对象应该是我们接触最多的对象了,特别是Context对象。当我们在某个Activity或者Service当中时,由于它们本身就是Context的子类,因此“this”可以等价于Context对象使用。然而,在很多时候这个Context并不是那么随手可得,试想一下以下情况:需要用到Context的SDK,开发者为了

2015-07-17 15:48:17 3879 1

原创 Android 通过反射让SQlite建表如此简单

我们通常使用SQlite的时候,如果我们有10张表,我们要写10个建表语句,而建表语句中只有一些字段的名字需要改而已,这样既费时又费力,还容易出错,我们知道写sql语句的时候经常会写错,如果写错程序就会崩掉,而且检查10个建表语句还可以,如果有100条我么就要疯了。这篇文章告诉大家如何通过反射来快速建表。

2015-07-17 13:46:29 8921 7

原创 Android通过反射打造可以存储任何对象的万能SharedPreferences

我们通常使用SharedPreferences存储一些需要保存在本地,但又不至于存储在数据库里的一些数据,一般我们用它来存储一些用户名,密码等数据是非常方便的,那么如果我们想要存储的信息有10几条,我们就得写10几行重复的代码把他们存进去,取出来的时候还得写10几行代码将他们一条一条取出来,那么有没有什么办法可以只需要一行代码就可以将他们存进去,一行代码就将他们取出来?答案是有

2015-07-16 16:08:22 8773 1

翻译 Android网络框架-Volley实践 使用Volley打造自定义ListView

这篇文章翻译自Ravi Tamada博客中的Android Custom ListView with Image and Text using Volley最终效果这个ListView呈现了一些影视信息,每一行是一个影片的信息,每一行中有一张电影的图片,电影的名字、评分、类型、年份等信息。1.json数据我们通过解析json然后拿到数据,这个json数据包括json数组,每个j

2015-07-16 12:57:19 2847 4

原创 Android网络框架-Volley(五) 使用Volley发送自定义Request

自定义一个RequestVolley已经帮我们实现好了StringRequest、JsonObjectRequest、JsonArrayRequest以及ImageRequest。如果我们想要发送一个xml请求,我们可以自定义一个Request。自定义一个Request我们需要: 1. 继承Request,其中泛型T就是我们想要解析的格式, 2. 重写parseNetworkResponse

2015-07-15 22:54:22 3043

原创 Android网络框架-Volley(四) 使用get和post方法发送json请求

这一篇文章我们介绍如何使用Volley发起请求,前提是我们得建立一个RequestQueue。在Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue中我们介绍了如何创建一个单例的RequestQueue,如果不会的朋友可以看一下。1.发出JSON请求Volley提供了解析JSON数据的

2015-07-14 13:05:01 9795

原创 Android网络框架-Volley(三) CacheDispatcher和NetworkDispatcher源码分析

在Android网络框架-Volley(一) 工作原理分析中的流程图中我们知道Volley工作是有三个线程的:主线程、缓存线程和网络线程。这些线程的工作是建立在RequestQueue上的,上一篇文章 Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue中我们分析了RequestQueue的源码以及最佳使用方式,这篇文章我们来分析

2015-07-13 14:02:37 1940 1

原创 Android网络框架-Volley(二) RequestQueue源码分析以及建立一个RequestQueue

从上一篇文章我们可以知道,Volley的整个工作都是建立在一个RequestQueue上的,所以理解RequestQueue对于我们使用Volley是很有必要的,上一篇文章的例子中,我们使用Volley.newRequestQueue()创建了一个RequestQueue实例,那么我们就先来看一看Volley是怎么把RequestQueue创建出来的吧。

2015-07-10 15:18:15 2251 2

原创 Android网络框架-Volley(一) 工作原理分析

使用Volley可以让我们轻松访问网络,不用每次都要写大量重复的代码,而且它是异步的,不用我们再去写异步任务,这样代码非常简洁。还有很重要的一点,他还可以异步加载图片并且有缓存机制,防止OOM发生,Volley把该干的全都干了,我们只需要专注于我们自己的业务逻辑就可以了。Volley适合于小数据量,多次数的网络访问情况,比如常见的一个listview,每行都是从网络上获取的一个图片和几行文本,使用

2015-07-10 13:25:45 6002 4

万能SharedPreferencesDemo

Android通过反射打造可以存储任何对象的万能SharedPreferences SharedPreferences的高级应用

2015-07-16

空空如也

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

TA关注的人

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