自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android性能优化之Splash页应该这样设计

目前SplashActivity的设计目前市场上的应用在启动时基本上都会先启动一个SplashActivity,作为一个欢迎界面,为什么这样设计呢? 个人总结有三个优点:1、可以给用户更好的体验比如:可以由后台动态的改变欢迎的图片,或者显欢迎xxx回来,新浪微博的就是这种交互。2、可以缩减App...

2016-01-17 00:18:28 12735 20

原创 Android性能优化之加快应用启动速度

应用的启动启动方式通常来说,在安卓中应用的启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会...

2016-01-14 22:51:55 14611 9

原创 Android性能优化之被忽视的优化点

对于性能优化这个知识点来说,实在是太广了,博主本人也一直非常关注这方面的学习,而对于性能优化来说它包括了非常非常非常多方面,比如:I/O的优化、网络操作的优化、内存的优化、数据结构的优化、代码层次的优化、UI渲染优化、CPU资源使用率的优化、异常处理的优化等等等等。。。本篇文章就博主本人的理解来讲...

2015-11-25 15:44:46 17608 18

原创 Android性能优化之常见的内存泄漏

前言对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary、MAT等工具来检测应用程序是否存在内存泄漏,MAT是一款强大的内存分析工具,功能繁多而复杂,而LeakCanary则...

2015-11-23 22:37:53 27212 34

原创 Android性能优化之使用线程池处理异步任务

说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式: 1、继承Thread类 2、实现Runnable接口 虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可...

2015-11-17 16:06:14 46265 37

原创 我的第二个独立开发的邮箱类App—“简邮”(支持QQ、雅虎、阿里云、Outlook)

360手机市场地址:360市场其它市场还在审核,囧。。。为什么做这个App? 主要有两个原因 1、10月份正逢校招季,……当时和面试官介绍了这个APP 2、在苹果手机上看到一款内置的邮箱app支持多账户,收发邮件非常方便,于是想在Android上弄一个 怎样使用简邮首先,这是移动端...

2015-11-09 11:26:50 8038 16

原创 Android最佳实践之SystemBar状态栏全版本适配方案

前言自从MD设计规范出来后,关于系统状态栏的适配越受到关注,因为MD在5.0以后把系统状态栏的颜色改为可由开发者配置的,而在5.0之前则无法指定状态栏的颜色,所以这篇就说说使用Toolbar对系统状态栏的适配策略主流App的适配效果手Q在这方面适配非常好,将标题栏和状态栏合为一起了,和iOS效果一...

2016-02-18 11:28:30 7443 5

原创 关于生产者/消费者/订阅者模式的那些事

生产者/消费者模式简介用来干嘛的?生产者/消费者模式的产生主要目的就是为了解决非同步的生产与消费之间的问题。什么是非同步呢? 比如我刚刚生产了某个产品,而此时你正在打游戏,没空来取,要打完游戏来取,这就导致了我生产产品和你取产品是两个非同步的动作,你不知道我什么时候生产完产品,而我也不知...

2016-01-27 14:17:45 3775 3

原创 并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲

前言对于ThreadLocal、Volatile、synchronized、Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点、区别、应用场景、内部实现等,却可能模糊不清,说不出个所以然来,所以,本文就对这几个关键字做一些作用、特点...

2016-01-21 10:25:28 13321 12

原创 Fresco图片框架内部实现原理探索

流行的网络框架目前流行的网络图片框架: Picasso、Universal Image Loader、Volley的(ImageLoader、NetworkImageView)、Glide和Fresco简明的介绍下(具体细节和功能可看源码和wiki): 其中Picasso和Universal ...

2016-01-04 18:38:21 14181 13

原创 Android之SharedPreferences内部原理浅析

SharedPreferences内部工作原理: 1、调用getSharedPreferences();创建一个SharedPreferences对象,其中会先判断是否存在对应xml文件,如果发现存在则会有一个预加载操作,这个操作是把xml文件的内容通过I/O操作和XmlUitl解析后存入一个m...

2015-12-04 17:23:50 6012 3

原创 Material Design Library 23.1.0的新变化与代码实战

Design Library出来已经快有一个月了,当时大概看了一下介绍这个新版本变化的译文,内容不多,给我印象最深的就是Percent lib、AppBarLayout 和NavigationView的变化,当然还有Design Lib的一些控件内部实现的变化没有介绍,从而使得在使用新版本的控件时...

2015-11-13 15:42:41 4359 3

原创 LocalBroadcastManager—创建更高效、更安全的广播

前言在写Android应用时候,有时候或多或少的需要运用广播来解决某些需求,我们知道广播有一个特性,就是使用sendBroadcast(intent);发送广播时,手机内所有注册了BroadcastReceiver的应用都可以在接收到这个广播的,并在BroadcastReceiver的onRece...

2015-11-10 17:45:59 7138 6

原创 版本控制—使用Gradle自动管理应用程序版本

我们在开发App时,通常在项目的Release阶段我们需要设置应用的版本号和版本名称,也就是设置下面两个属性 versionCode versionName 版本号其中versionCode的值是int类型,主要作用就是作为应用内部的版本编号,为版本升级提供唯一的标识,通常设为是自增的...

2015-11-07 13:10:35 3350 0

原创 Volley网络框架完全解析(使用篇)

在Android中,网络请求无非就这两种:HttpURLConnection和HttpClient( Apache),我们在使用时一般都会对它们进行一系列的封装,但是这过程不免有些繁琐,所以,Google官方也考虑到了这点,在2013年Google I/O大会上就推出了一个新的网络请求框架——Vo...

2015-10-13 11:23:58 4875 4

原创 设计模式之观察者模式

差不多一个月没更博了,主要是自己在写东西,今天写写Android开发中比较重要的观察者设计模式 所谓观察者模式,就是一个是被观察的对象,一个是观察者对象,通过建立联系,即被观察的对象被观察者观察了,而当被观察的对象内部数据发生了改变时候,就会及时通知观察者,进而更新数据的显示。举个栗子: 假如...

2015-10-13 09:29:02 1171 0

原创 Android开发你不知道的TIPS

1、Space space是Android 4.0中新增的一个控件,它实际上可以用来分隔不同的控件,其中形成一个空白的区域.这是一个轻量级的视图组件,它可以跳过Draw,对于需要占位符的任何场景来说都是很棒的2、ValueAnimator.reverse() 这个方法可以很顺利地取消正在运行的动画...

2015-10-04 15:44:40 1438 0

原创 ORM对象关系映射之使用GreenDAO进行CRUD操作

在Android中,我们都知道使用的数据库是SQLite,而使用这种原生的数据库非常繁琐,它对表的管理和进行CRUD操作都需要我们写sql语句,在进行多表关联的操作上,更是需要写一堆sql,而且维护起来也极其不便。所以ORM程序设计技术应用而生,它主要是用于实现面向对象编程语言里不同类型系统的数据...

2015-09-21 16:46:23 4038 4

原创 Android事件分发机制

【注】:这篇文章中的内容都以这张图来讲解分发机制,其中A、B、C都是ViewGroup,它们的层次关系为:A为根布局,B为二级子布局,C为三级子布局,其中C布局中包含一个Button按钮,即A包含B,B包含C,C包含Button。 好了,废话少说。先来讲下今天的三位主角吧。 1、dispat...

2015-09-17 08:58:33 1796 0

原创 ORM对象关系映射之GreenDAO自定义属性转换器PropertyConverter

在使用GreenDAO定义实体的属性时候,通常来说定义的实体属性名就是对应的表的字段名、实体中属性的类型(如Long、String等)就是表的字段名类型,但是我们难免会有不一样的需求,比如实体中我定义了一个Color类型的属性或者其它自定义类型的属性,而表的字段类型只有一些原始类型肯定是没有这些类...

2015-09-16 18:08:51 3404 2

原创 ORM对象关系映射之GreenDAO建立多表关联

利用GreenDAO可以非常方便的建立多张表之间的关联一对一关联通常我们在操作数据库的时候,我们往往不是单独的对一张表进行操作,而是对这张表的操作会联动的影响另外一张表或者多张表,比如:现在有两张表,一张是用户User表(有name、age、sex三个字段),一张是头像Picture表(有pict...

2015-09-16 16:36:49 12201 4

原创 ORM对象关系映射之GreenDAO高级用法

CRUD增加:dao.insert(Student entity);//添加一个 dao.insertInTx(Student... entity);//批量添加删除:dao.deleteByKey(Long key);//根据主键删除 dao.deleteByKeyInTx(Long... ke...

2015-09-15 19:48:43 5201 1

原创 ORM对象关系映射之GreenDAO源码解析

上一篇我们学习了GreenDAO的CRUD基本操作,可以说是非常的方便的,而且GreenDAO的效率和性能远远高于其它两款流行的ORM框架,下面是我从官网找的一副它们三个ORM框架之间的性能测试的直观图: 那么这篇我们就从源码的角度来学习GreenDAO更深层次的工作原理。GreenDAO的...

2015-09-15 16:21:33 5146 1

原创 Android中让多个线程顺序执行探究

前言: 不知道从什么时候开始,越来越喜欢把平时学到的一些东西做个总结,做个梳理,于是坚持写博客。在我看来写博客是对自己的一种提升,也可以帮助在这个问题上有疑惑的猿。之前看到这样一个问题,就是有人因自己的技术还不扎实,想写博客,又怕写出来的博客怕别人说不正确。对于这种问题,我更多的是把写博客看...

2015-09-14 10:27:15 6373 4

原创 Android免Root无侵入AOP框架Dexposed

Dexposed框架是阿里巴巴无线事业部近期开源的一款在Android平台下的免Root无侵入运行期AOP框架,该框架基于AOP思想,支持经典的AOP使用场景,可应用于日志记录,性能统计,安全控制,事务处理,异常处理等方面。 针对Android平台,Dexposed只支持函数级别的在线热更新,如对...

2015-09-09 14:48:35 3590 1

原创 Kotlin For Android 示例代码实战

下面就为大家介绍怎么使用Kotlin来开发Android 上面这篇中我们在下载Kotlin插件的时候也下了一个功能扩张插件,其实这个插件大有用处,它可以使得我们在不使用注解和第三方库的情况下不使用findViewById来实例化控件,我们只需要导入对应的布局然后直接使用id来使用这个View就可...

2015-09-08 11:56:38 3923 1

原创 Android Studio中创建Kotlin For Android项目

Kotlin俗称Android中的Swift,它是Jetbrains公司开发的基于JVM的一门语言,JetBrains公司可能大家并不熟悉,不过相信IntelliJ IDE大家一定知道,Android Studio正是基于它开发的,Kotlin本身也是面向对象语言。为什么要使用Kotlin?它具有...

2015-09-08 11:01:45 4487 0

原创 Android性能优化之界面UI篇

1、使用style、color、string、dimen样式来分离xml布局文件,减少代码的重复使用,增加代码复用率,防止hardcode,下面是一个例子: 在定义layout时候,因为每个View或ViewGroup都必须要有layout_width和layout_height,所以我们可以专...

2015-09-07 13:37:42 2150 1

原创 Otto事件总线框架的使用

Otto是一个在Android中的事件总线框架,它是square的一个开源框架,具体介绍点击这里,项目下载点击这里为什么要使用Otto事件总线: 通常来说在Android中: 1、Activity与Activity间的传值是通过Intent,值回调是通过startActivityForR...

2015-09-06 16:03:24 3924 0

原创 Material Design之视图状态改变

视图状态改变是通过StateListAnimator动画集来改变View的状态的,它可以使View在不同状态下发生不同的变化,如下是在drawable目录下定义一个StateListAnimator:<?xml version="1.0" encoding="u...

2015-09-06 09:51:00 3014 3

原创 Android使用SVG矢量动画(二)

上篇我们学习了怎么显示SVG矢量图像,当然还有一个更强大的功能,就是让SVG图像动起来,先上一张效果图吧: 要实现上述动画效果,就得用AnimatedVectorDrawable这个类了,它就是负责VectorDrawable矢量图形的动画的,不过我们不能像属性动画那样去通过代码进行设置动画,而...

2015-09-02 15:25:17 5837 5

原创 Android中使用SVG矢量图(一)

SVG矢量图介绍首先要解释下什么是矢量图像,什么是位图图像? 1、矢量图像:SVG (Scalable Vector Graphics, 可伸缩矢量图形) 是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的、专门为网络而设计的图像格式,SVG是一种采用XML来描述二维图形的语...

2015-09-02 13:46:37 7343 0

原创 Android百分比布局支持库(android-percent-support)

Android中提供了五种布局,其中用的最多的就是:LinearLayout, RelativeLayout 和 FrameLayout这三种布局,在对某一界面进行布局时最先想到也是通过这三种来布局的,不过当某一界面过于复杂时,往往会有多层嵌套,可能嵌套层数过深超过5层,比如,当我们有一个需求是这...

2015-09-02 09:30:05 3648 0

原创 Android主题切换—夜间/白天模式探究

现在市面上众多阅读类App都提供了两种主题:白天or夜间。 上述两幅图片,正是两款App的夜间模式效果,所以,依据这个功能,来看看切换主题到底是怎么实现的(当然现在github有好多PluginTheme开源插件,很多时候可以使用这些插件,不过我并不想讲怎么用那些插件,正所谓会用轮子还不如会造轮...

2015-08-29 16:50:58 6959 8

原创 Material Design5.x动画实现解析篇一

Material Design设计语言动画篇共推出六种类型的动画效果: 1、Touch feedback(触摸反馈) 2、Reveal effect(揭露效果) 3、Activity transitions(Activity转换效果) 4、Curved motion(曲线运动...

2015-08-28 11:17:56 5974 7

原创 RecyclerView添加Header和Footer

使用过RecyclerView的同学就知道它并没有添加header和footer的方法,而ListView和GirdView都有,但是开发过程中难免有需求需要添加一个自定义的header或者footer,或者不同布局的Item。好了,我们知道如果在ListView中要添加不同的布局的item,都是...

2015-08-26 16:34:36 10950 3

原创 Android下拉上滑显示与隐藏Toolbar另一种实现

关于介绍就不说了,不使用嵌套滑动情况下,另一种实现,当然还可以用design包下的CoordinatorLayout.Behavior。比较简单直接添代码:继承RecyclerView.OnScrollListener重写onScrolled方法,同时定义两个抽象方法供我们处理隐藏和显示事件pub...

2015-08-26 15:25:47 11627 4

原创 Android性能优化典例(二)

1、使用 Maven 依赖方案代替使用导入jar包方案如果项目中需要用到第三方jar包,常用的做法是去网上下载后然后放入libs文件夹,再添加到项目依赖,不过,在Android Studio已经不推荐使用这套做法了,因为如果jar有更新,那么每次都要去下载最新版本然后删除历史依赖再添加新版本的依赖...

2015-08-24 17:02:42 2104 0

原创 Android实现RecyclerView侧滑删除和长按拖拽-ItemTouchHelper

RecyclerView这个被誉为ListView和GirdView的替代品,它的用法在之前的一篇博文中就已经讲过了,今天我们就来实现RecyclerView的侧滑删除和长按拖拽功能,实现这两个功能我们只需要一个类——ItemTouchHelperItemTouchHelperGoogle官方文档...

2015-08-24 14:03:42 15885 7

原创 Android Studio使用Lint进行代码检查

Android Studio目前已经更新到1.4版本,它作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中存在的问题,让我们更有规范性的开发App。它可以检查出:xml文件中是否存在hardcode硬编码、unused resources没有使...

2015-08-21 15:50:46 16936 3

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