自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android单元测试之Local unit tests(下)

Android单元测试之Local unit tests(下)前言Robolectric添加依赖测试例子-Robolectric基本使用无处不在的 shadowXXX 是什么?测试例子-Robolectric使用进阶@Config(qualifiers =”“) 配置测试例子-Activity的生命周期自定义Shdow类附加模块JUnit 4 & Mocki...

2018-04-10 16:57:40 711

原创 Android单元测试之Local unit tests(上)

Android单元测试之Local unit tests(上)简介本地单元测试JUnit 4添加依赖测试例子结论Mockito添加依赖测试例子-mock基本使用测试例子-mock与spy区别测试例子-异步任务回调测试例子-mock注解测试例子-mock Android dependencies结论未完待续参考链接Android...

2018-04-10 16:53:38 643

原创 Android组件间通信之LocalBroadcastManager

Android组件间通信之LocalBroadcastManagerLocalBroadcastManager介绍LocalBroadcastManager源码分析总结Android组件间通信之LocalBroadcastManagerAndroid开发中,大家都使用过全局广播(global broadcast)。 优点是操作简单,还可以进行跨进程通信。 缺点是

2018-02-07 17:34:25 728

原创 Android权限适配全攻略

Android权限适配全攻略概述在Android6.0(API 23)之前Android的权限机制太过于简单粗暴:App安装时会提示用户APP所需权限,用户同意安装后就会永久授权应用所需全部权限。其中大部分用户并不知道为什么APP需要这些权限,也不知道这些权限意味着什么。这样很容易被“别有用心”的APP利用,对用户的隐私及账户安全形成了很大的挑战。Google也开始意识到问题的严重性并且开始收紧权限

2017-10-09 14:49:43 3491

原创 Android Tint的使用及源码分析

背景使用Tint实现背景着色使用selector进行着色着色原理如何兼容低版本背景在菜单栏改版开发中,发现需要引入大量图片,其中像设置开关部分差异仅在颜色,但是需要两张图片。这样包体随着图片的添加也会变大。有没有更好的办法呢? 使用Tint实现Android在5.0的时候推出Tint可以很方便的将一张图片”着色”为任何颜色。这样我们只需要放一张图片即可

2017-04-11 16:36:52 1034

原创 LayoutInflater Factory使用基础与进阶

问题背景在开发新版本中,遇到一个问题是需要把所有的TextView与继承TextView的View替换为自定义TextView,这个改动对我们项目来说工作量是巨大的。那么有没有好办法呢?想想在使用android support library时,view有些属性本来是不支持的,突然就支持了而且能向下兼容。那是怎么实现的呢?其实就是使用LayoutInflater Factory,将XXXView替换

2016-12-27 20:36:57 4911 1

原创 设置页弹框背景不透明问题分析及解决

一、问题背景在开发新版本时,有个需求是用户通过点击跳转到系统设置界面时,弹出一个对话框。对话框用来描述为什么需要用户进行设置,引导用户完成开启设置。在自己的activity中弹出对话框大家都知道怎么做,但是在系统设置界面弹出对话框肯定没那么方便了。一开始有两个方向:在打开设置页同时打开一个dialog样式的activity,这样给人的感觉就像是真正的对话框。使用悬浮窗,将d

2016-12-07 13:17:52 2176

原创 App冷启动白屏/黑屏问题分析及解决方案

一、问题背景最近在做产品首次启动页优化功能时,发现在点击启动launch图标与切换到子进程页面时会白屏或黑屏一段时间,时间长短根据不同机型性能不一。原来看过相关文章,借此机会总结一下app启动的闪屏页面是怎么产生的,该如何优化?二、问题分析既然我们想要优化app启动速度,那我们肯定要了解app启动的几种模式:冷启动(Cold start),热启动(Warm start),温启动(Lukewarm s

2016-11-23 21:27:21 1068

原创 Android 5.1 WebView内存泄漏问题及解决

问题背景在排查项目内存泄漏过程中发现了一些由WebView引起的内存泄漏,经过测试发现该部分泄漏只会出现在android 5.1及以上的机型。虽然输入法项目使用WebView的场景并不多,但秉承着一个泄漏都不放过的精神,我们肯定要把它给解决了。遇到的问题项目中使用WebView的页面主要在FAQ页面,问题也出现在多次进入退出时,发现内存占用大,GC频繁。使用LeakCanary观察发现有两个内存泄漏

2016-11-21 14:22:49 10155 2

原创 Bitmap使用过程中需注意的点及优化

一、问题背景 输入法产品跑monkey时在部分机型上会出现oom,最终堆栈信息都是指向BitmapFactory.decodeStream也就是decode图片到内存时出现的。借着这个机会总结一下Bitmap使用过程中需注意的点及优化。 二、总结的问题 decode图片时内存占用是怎么计算的? BitmapFactory.decodeXXX api会对图片做哪些操作? 该如何优化? 三

2016-10-26 18:30:51 564

原创 Android PorterDuffXfermode使用中的一些坑

概述在android canvas绘图中经常会使用到Paint.setXfermode()来给画笔设置一个Xfermode;Xfermode是一种将所绘制的图形的像素按照一定模式进行混合从而形成新的像素值。Xfermode有三个子类:AvoidXfermode、PixelXorXfermode、PorterDuffXfermode;前两个已经废弃了,我们使用的最多的就是PorterDuffXferm

2016-08-02 18:08:02 7495 8

原创 浅析多线程同步

问题背景在android开发中,我们会启一个子线程去服务器获取下发数据,这个操作一般都是比较耗时的。所以对于时效性不强的数据,为了避免每次请求服务我们一般会做缓存处理。常见的缓存策略是在本地和内存中各缓存一份,获取数据时优先从内存中获取,内存中没有则从本地获取,都没有才会去访问服务器重新获取。这种方式保证了高效的性能,操作内存缓存时也导致了可能的错误:线程干扰 与 内存一致性 的问题。什么

2016-07-20 16:15:26 371

原创 移动web异步上传图片

ajax-upload-image.mobile简介进行移动web开发时,图片上传功能基本都会使用到。

2016-04-03 15:17:14 2011

原创 Web滑动日期选择器(仿iOS)

datepicker.mobile移动web端统一使用体验,在ios上通过select标签滑轮的效果很赞,但是android不同版本表现各异,为了统一UI与使用体验,使用开源库mobiscroll封装了一个自己的时间选择控件(mobiscroll库的使用文档不多,自己使用时也遇到很多坑),实现js比较简单,大家可以看看,然后定制出自己的时间选择器。

2016-04-03 15:05:00 17227

转载 国内jQuery CDN

国内jQuery CDN

2016-04-03 14:46:43 1592

原创 Android自定义view学习笔记

Android自定义view学习笔记

2016-04-03 14:43:56 365

原创 PullToRefreshRecyclerView源码学习

PullToRefreshRecyclerView源码学习控件简介,PullToRefreshRecyclerView是实现了下拉刷新与上滑加载更多功能的RecyclerView,并且可自定义加载的view。

2016-04-03 14:40:28 3816

转载 完整版android视频播放器

可播放sdcard文件,3gp等手机支持格式。例如播放sdcard根目录下movie视频。final String strVideoPath = "/sdcard/movie.3gp";播放器,播放、暂停、快进退、声音音量控制、视频播放时间等常用控制都有,并且可双击全屏。完整版Demo地址:

2014-02-17 22:41:51 884 2

完整版android视频播放器

播放器,播放、暂停、快进退、声音音量控制、视频播放时间等常用控制都有,并且可双击全屏。

2014-02-17

android仿UC底部Tab并且带标题栏

android底部Tab并且带标题栏 Tab在底部实现并且实现标题栏

2013-12-08

android左右滑动切换Tab

android左右滑动切换Tab 除了通过点击并且实现用手左右滑动切换Tab

2013-12-08

android 多个Tab的切换

android 多个Tab的切换 提供多个Tab切换

2013-12-08

android自定义listview使用方法

android自定义listview使用方法 提供一般listview 带图片的listview 带按钮的listview listview学习的好Demo

2013-12-08

android实现电子书翻书效果

android实现电子书翻书效果 实现大部分阅读器提供的实体书翻页效果

2013-12-08

android抽屉效果实现

目的: * 功能一、屏幕分上下二部分;通过打开按钮实现,抽屉的下面部分打开和关闭,同时上面部分自动伸展。 * 功能二、点击黑色部分能够实现拖拉,

2013-12-08

android点击按钮实现多个Activity滑动切换

android点击按钮实现多个Activity滑动切换 切换方式从右边进入,左边退出

2013-12-08

android Tabhost使用Demo

android Tabhost使用Demo

2013-12-08

空空如也

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

TA关注的人

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