自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Retrofit2源码解析

最近项目将网络框架换成Retrofit2.0.2,文中说的Retrofit都是指的Retrofit2这里要说明一下,毕竟和Retrofit1差别还是蛮大的,结合Okhttp,RxJava还是比较好用的,网上有很多前辈介绍过使用方法,本文是想研究一下Retrofit的源码。关于Retrofit的介绍...

2016-06-20 17:27:37 5733 2

原创 ButterKnife源码剖析

转载请注明:http://blog.csdn.net/chenkai19920410/article/details/51020151      ButterKnife是Jake Wharton大神写开源框架。项目托管地址:   https://github.com/JakeWharton/...

2016-04-02 12:55:40 6964 4

原创 Android事件分发与消费

之前写过一篇Android 事件分发机制详解 ,感觉比较乱,这里再总结一下。网上已经有很多前辈分析过源码,大家可以参考,我这里尽量不做过多的源码分析,仅仅从流程上分析。  0x01 基础部分      事件分发和消费我们主要涉及到以下三个方法:      dispatchTouchEven...

2017-03-31 11:21:56 2035 1

原创 自己动手生成Android Apk

本文仅做学习使用,比较简单,没有实际项目复杂。   掌握Apk生成的过程,对于我们是非常重要的。而该过程平时都是由IDE自动帮我们完成的。IDE可以给我们带来很大的便利,但是也是一把双刃剑,有时候会让我们忽视一些重要的实现步骤。所以我们在使用IDE自动编译打包Apk时,也应该知道Apk是怎么一步...

2017-03-07 10:26:13 18661 10

原创 Android开发中的代理模式

上一篇文章Android开发中单例模式写法与可能遇到的坑讲到了单例模式的一般写法,本篇继续总结一下Android(Java)中比较常用的代理模式。和单例模式一样,代理模式也是经常使用到的,使用过Spring的小伙伴,应该比较清楚,其AOP代理就默认使用JDK自带动态代理来生成代理类的。在Andro...

2017-01-22 15:10:06 2509 2

原创 Android开发中单例模式写法与可能遇到的坑

年底了,手上的活不是很多,就想着将平时记录的笔记总结一下。准备总结一下平时常常使用的设计模式。本篇就是比较常用的单例(Singleton)模式。   不管是Android开发还是Java开发,相信单例模式都是用的比较多的,平时再用的时候有没有想过,到底有多少种写法,或者有么有什么坑没有踩呢?带着...

2017-01-19 09:13:16 7720 16

原创 Android 抢红包

最近有要实现微信抢红包的需求,用的AccessibilityService实现,其实网上已经很多这方面的教程,本文纯粹是为了自己记录一下,也是纯粹的学习目的!   实现自动抢红包的原理,是借助Android的辅助服务AccessibilityService,这个服务是Android为部分使用者更...

2017-01-17 16:39:12 1098 0

原创 Android Frameworks系列(二) 彻底弄懂startActivity

在Android Frameworks系列(一) startService启动 一文中我们介绍了startService启动的过程,和startService一样,startActivity也是以ActivityManagerService为核心工作的。原理也差不多,不过要比startServic...

2017-01-13 14:47:35 9040 4

原创 Gradle for Android系列之五 多渠道打包

我们知道,很多的app需要发布在不同的应用商店中,但是各应用商店对上架的要求有时候又不相同,也就意味着我们需要针对不同的渠道,构建不同的渠道包,如果手动做这些事情,会比较繁琐,那么使用Gradle会方便很多!本篇在前文的基础上介绍一下使用gradle多渠道打包。   今天的内容基本上都是在app...

2017-01-11 09:25:54 612 0

原创 Gradle for Android系列之四 依赖包管理

在Gradle for Android系列之二 build.gradle文件 中已经初步介绍过依赖包。为什么我们这里还要在专门介绍呢,因为我们在项目中往往需要用到各种依赖方式,对我们来说很重要。掌握Gradle依赖包管理,可以让我们事半功倍。   接下来我们就直接开始介绍了      仓库 ...

2017-01-07 17:09:11 1367 0

原创 Gradle for Android系列之三 tasks

在之前第一篇文章中说过,Gradle最重要的概念是project和tasks,而一个Project也可以说只是包含了多个task的容器,所以在gradle中tasks的重要性不言而喻了。为了更好的介绍Android中常用的tasks,先来介绍task的基本知识。  我们可以在app的build.g...

2017-01-07 15:06:55 2554 0

原创 Gradle for Android系列之二 build.gradle文件

上一篇结合Android 项目大致的介绍了一下Gradle在Android中的应用。其中也多次提到了build.gradle。但是没有详细的介绍其的基本结构和其作用。那么本文就将围绕这些展开。在这之前先看看Android中的Gradle脚本也哪些  Android项目中的Gradle脚本   一...

2017-01-07 12:48:50 643 0

原创 Gradle for Android系列之一 Gradle基础

project 和task   project和task是Gradle中最重要的两个概念。每一次构建,都至少包括一个project,每一个项目又包括至少一个task。相信大家都对Android Studio生成的项目结构已经很熟悉了。一般情况下,在项目的root的目录下会有一个build.gra...

2017-01-06 16:04:05 741 0

原创 手把手教你在JCenter发布开源库

当你自己造好了轮子,想让其他人也能方便的使用到,就好像其他开源库一样,在AndroidStudio中一句话引用:   dependencies { compile 'chuck.WheelItemView:library:1.0.1' }  这其实不是很难,只需要将...

2017-01-05 11:49:58 578 0

原创 Android省市区三级联动控件

最近有需求需要实现省市区三级联动,但是发现之前的实现不够灵活,自己做了一些优化。为了方便以后使用,抽离出来放在了github上WheelView。同时把其核心库放在了JCenter中了,可以直接引用。也可以参考项目中的Demo进行引用   下面介绍一下如何使用   如果用的是AndroidSt...

2017-01-05 07:50:21 1744 0

原创 Android Frameworks系列(一) startService启动

之前写过一篇从AIDL看Android跨进程通信 从Java层次去分析AIDL运行的原理,当时主要是为了学习Binder机制而写的,但是Binder机制比较复杂,打算过段时间单独的写一篇来分析。本篇文章分析startService的启动过程,也会涉及到使用Binder机制来进行跨进程通信,但是不会...

2016-12-13 19:44:14 2345 1

原创 Macbook Pro下载并编译Android源码并导入Android Studio

最近尝试下载并编译Android的源码,过程比较曲折,所以特别的记录一下。   环境   mac系统:OS X EI Captian 10.11.6   Android源码:Android 7.0   JDK: jdk 1.8.0_77      下载源码   step1:因为我的m...

2016-11-22 09:52:35 2558 0

原创 RxJava(RxAndroid)线程切换机制

自从项目中使用RxJava以来,可以很方便的切换线程。至于是怎么实现的,一直没有深入的研究过!本篇文章就是分析RxJava的线程模型。   RxJava基本使用   先上一个平时使用RxJava切换线程的例子:   Observable observable = Observable.cre...

2016-09-14 16:07:26 6164 0

原创 从AIDL看Android跨进程通信

AIDL是Android实现IPC的一种重要的方式,理解它的原理对理解Android进程间通信有很大的帮助。AIDL的定义,已经有很多介绍的文章了,这里就不做详解了。我们直接从实例入手来分析AIDL实现原理。   AIDL的使用   首先需要定义AIDL接口IMyService.aidl: ...

2016-07-23 17:31:26 1342 0

原创 RxJava操作符之Transforming Observables

在RxJava操作符之Creating Observables 我们学会了怎么创建Observable,但是我们项目中往往会遇到很多复杂的情况,需要我们对数据进行过滤和转化,以得到我们想要的结果。这篇文章我们主要是学习怎么转化数据:   Buffer   FlatMap   GroupB...

2016-07-09 12:12:43 529 0

原创 RxJava操作符之Creating Observables

RxJava 是一个在Java虚拟机上实现的响应式扩展库:提供了基于observable序列实现的异步调用及基于事件编程。 它扩展了观察者模式,支持数据、事件序列并允许你合并序列,无需关心底层的线程处理、同步、线程安全、并发数据结构和非阻塞I/O处理。   官网定义:RxJava is a Ja...

2016-06-23 13:37:04 566 0

原创 RecyclerView 报Scrapped or attached views may not be recycled. as Scrap:false isAttached:true异常

最近在做项目中使用RecyclerView时会偶现以下异常:java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true ...

2016-06-18 09:53:42 10651 7

转载 Android内存优化杂谈

原文出处:WeMobileDev(微信公众号)   Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作:   1.优化RAM,即降低运行时内存。这里的目的是防止程序发生OOM异常,以及降低程序由于内存过大被LMK机制杀死的概率。另一方面,不合理的内存使用会使...

2015-12-17 14:20:27 1034 0

原创 Android绘图之绘制太极图

Android是通过graphics类来显示2D图形的。其中graphics中包括了Canvas、Paint、Color、Bitmap等类。graphics具有绘制点、线、颜色、2D几何图形、图像处理等功能。其中Color和Bitmap是很常用的类,我要讲的是Canvas和Paint。顾名思义就是...

2015-12-16 19:32:22 790 0

原创 实现不同字体颜色的TextView

遇到的需求,mark一下:package com.chuck.recyclerviewdemo;import android.content.Context; import android.graphics.Canvas; import android.text.SpannableStringBu...

2015-12-10 20:21:07 488 0

原创 仿Android6.0联系人列表

最近因为项目需要,研究了Android联系人相关内容,包括联系人数据库,获取联系人数据,使用ListView展示联系人。我将按照以下几点记录:      Android存储联系人数据库表结构   获取联系人数据   联系人列表效果  一Android存储联系人数据库表结构   要想搞清楚...

2015-12-03 22:34:03 5450 1

原创 解决ScrollView嵌套ListView显示不全问题

在看本文之前请写了解一下UNSPECIFIED、EXACTLY、AT_MOST三种模式。   在项目中经常会用到ScrollView嵌套ListView的情况。如果使用原生的ListView会出现只显示一行的情况:   出现这个的原因是在scrollView中ListView在OnMeas...

2015-11-26 23:06:48 6555 1

原创 Android 事件分发机制详解

在View 中的dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent方法 这篇文章中介绍了一下dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent三个方法。今天想分析一下触摸事件分发和处...

2015-11-20 19:58:52 534 0

原创 浅谈自定义View

Android提供了比较丰富的组件库来创建UI,但是并不能完全满足我们的需求,考虑到这一点Google给我们提供非常方便的拓展方法,我们可以在原有控件的基础上来自定义满足我们需求的View。掌握自定义View,是Android开发的一项重要内容。那么如何实现自定义view呢,方法有很多。我要说的是...

2015-11-19 20:49:43 705 2

原创 Android Design Support Library之CoordinatorLayout,AppBarLayout

在上一篇文章(点我)中我们提到了CoordinatorLayout。CoordinatorLayout是这次新添加的一个增强型的FrameLayout。在CoordinatorLayout中,我们可以在FrameLayout的基础上完成很多新的操作。可以说,CoordinatorLayout是su...

2015-11-16 21:20:59 1318 0

原创 Android Design Support Library之FAB(Floating Action Button)

FAB是Android Design Support Library库中带有阴影的圆形button,他的使用非常简单。一般使用FAB时需要确定其位置,所以可以在外部套用Framelayout。如:<FrameLayout android:id="@+id/rootL...

2015-11-16 19:19:23 1529 0

原创 Unbuntu下Android studio报Unable to recreate missing debug keystore错误

最近在用ubuntu下使用android studio调试程序时,报出以下错误: Execution failed for task ':app:validateDebugSigning'. > Unable to recreate mi...

2015-11-12 22:44:39 4614 0

原创 View 中的dispatchTouchEvent,OnInterceptTouchEvent ,OnTouchEvent方法

在view 的点击事件分发的过程中有三个非常重要的方法: dispatchTouchEvent() onInterceptTouchEvent() onTouchEvent() 先来认识一下这三个方法: dispatchTouchEvent() 该方法是用来处理事件的分发。如果事件...

2015-11-11 22:30:36 611 0

原创 Android启动模式之lunchMode

大家看这个帖子之前先了解一下task,taskAffinity属性。   在开发一个项目时,会遇到多个页面跳转的问题,在Android中通常会使用启动模式来处理页面跳转。Activity的启动模式有四种:   standard   singleTop   singleTask   sin...

2015-10-27 21:56:12 1862 1

原创 动态为TextView设置drawableRight

在写TextView的这个属性的drawableRight时,一般都是在xml里面写好的,但是我们有时候的需求是想在代码中动态的添加的效果,那么接下来说说具体的方法。       <TextView android:id="@+id/Title" ...

2015-10-26 23:18:04 617 0

原创 在Android6.0中使用AlertDialog.Builder出现的问题

最近在项目中使用AlertDialog.Builder创建dialog在Android5.0以前可以正常显示效果,但是在Android6.0显示的很丑,整个style都变了,如下图:代码如下:import android.app.AlertDialog; private void showPict...

2015-10-22 22:14:30 5543 4

转载 Android ListView工作原理完全解析,带你从源码的角度彻底理解

原文链接:http://blog.csdn.net/guolin_blog/article/details/44996879在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况。ListView可以使用列表...

2015-10-21 21:51:33 658 0

原创 Android 获取手机中所有图片

我们在做类似相册的功能时,需要获取手机中图片,这又是一个非常耗时的操作,不能在主线程中执行,所以需要另开一线程进行,直接上代码: new Thread(new Runnable() { @Override public void run() {...

2015-10-21 20:53:41 1716 0

原创 Android UTF-8转码

在项目中可能会遇到url中有中文的情况,这个时候我们可能需要对url进行编码 mport java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; ...

2015-09-10 22:01:33 9375 0

原创 Android获取状态栏高度

实际项目中有时会碰到技术状态栏高度的情况。有两种方法可以做到: 第一种: 通过获取到 status_bar_height的资源id,在计算其高度。public int getStatusBarHeight(){ int height=0; i...

2015-09-07 20:34:38 685 0

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