自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (33)
  • 收藏
  • 关注

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

在Android开发过程中,很多时候往往因为代码的不规范、api使用不恰当、控件的使用场景考虑不全面和用户不恰当的操作等都能引发一系列性能问题的,下面就是我目前整理的一些Android开发过程中需要注意的细节,正所谓一颗老鼠屎可以坏了一锅粥,细节决定成败下面就是一些性能优化的方案:1、Android中别使用enum,使用static final 代替枚举enum,因为使用enum比使用static需

2015-08-20 19:38:02 2668

原创 Android内存优化(使用SparseArray和ArrayMap代替HashMap)

在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。介绍它

2015-08-20 16:06:15 104914 47

原创 Volley网络框架完全解析(实战篇)

好了,今天就通过一个瀑布流demo,来使用Volley框架请求网络图片。前言: 我们使用NetworkImageView显示图片: 1、因为该控件可以自动的管理好请求的生命周期,当与父控件detach或者它移出屏幕时可以自动取消网络请求 2、该控件会根据我们所设置的NetworkImageView宽高来进行图片的压缩 3、该控件可以设置默认状态下显示的图片,可以设置在请求失败时

2015-08-15 15:57:00 2498 1

原创 Volley网络框架完全解析(缓存篇)

在上一篇中讲完了Volley框架怎么使用,那么这篇就来讲讲Volley框架的缓存机制我们看Volley内部源码发现: Volley框架内部自己处理了DiskBasedCache硬盘缓存,但是没有处理LruCache内存缓存,因为一般在处理图片的问题上才更多的用到LruCache缓存,但是它提供了一个ImageCache接口供我们自己实现,该接口默认需要实现两个方法:getBitmap(Strin

2015-08-14 17:50:55 7344 1

原创 使用Material Design Tint和视图详解

视图首先来讲Material Design 视图的概念,在新的api中,新添加了z轴的概念,z轴垂直于屏幕,用来表现元素的层叠关系,z值(海拔高度)越高,元素离界面底层(水平面)越远,投影越重,这里有一个前提,所有的元素的厚度都是1dp。 Material Design中UI主打扁平化,但是这种扁平化是扁而不平,是对现实的拟物扁平化,所以引入z轴空间的概念,即所有元素都有默认的海拔高度,对它进行

2015-08-10 15:49:41 12960 3

原创 使用Material Design 应用主题

自从去年Google推出Material Design这款设计语言后,新的设计规范越来越受开发者们的喜爱,这篇文章包括后续文章就是慢慢的介绍在App中使用Material Design界面主题、动画、及各种UI设计规范,至于今年推出的Design包所有design控件的介绍在以前几篇就一一介绍了。Material Design设计语言它的设计思想为:把物理世界的体验带进屏幕,去掉现实中的杂质和随机性

2015-08-07 19:49:58 8811 4

原创 Android Data Binding代码实践(告别findViewById)(四)

Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点: 1、使用MVVM模式,让整个项目结构清晰明了 2、通过ViewModel连接View和Model,使得View与Model层解耦,分层后各司其职,维护方便 3、易于项目的测试

2015-08-06 16:54:29 3672 3

原创 Android Data Binding高级用法-Observable、动态生成Binding Class(三)

设置View的id虽然说Data Binding这种分层模式使得我们对数据的传递简单明了,一般情况下我们可以不设置View的id,不使用findViewById即可对View进行数据上一系列的操作,不过有时候根据情况我们需要对某些View设置id,但是还是可以不findViewById即可得到该控件的对象,因为设置id后ViewDataBinding类会自动生成对应的控件对象,如:<layout x

2015-08-06 16:14:06 18568 3

原创 Android Data Binding语法解析(二)

上篇我们知道了Data Binding的最简单的用法,那么Data Binding其中最为重要也是最复杂的其实就是在xml布局文件中给对应的控件进行数据绑定了,接下来就一一说明Data Binding的使用各个场景的语法。我们以User类这个Model为例:public class User { private String userName; private String use

2015-08-05 22:05:51 7371 4

原创 Android Data Binding实战(一)

在今年Google I/O大会上,Google推出Design Library库的同时也推出了Android Data Binding,那么什么是Data Binding?其名曰数据绑定,使用它我们可以轻松实现MVVM(模型-视图-视图模型)模式,来实现应用之间数据与视图的分离、视图与业务逻辑的分离、数据与业务逻辑的分离,从而达到低耦合、可重用性、易测试性等好处,那么我们首先先来看看什么是MVVM模

2015-08-05 16:07:50 3808

原创 使用Android Studio手把手教你将应用打包+代码混淆

最近几天用Google的Design库写了个App,使用Android Studio将app打包时遇到的几个瓶颈,所以把详细步骤写入下来。AS中怎么获取应用签名这和eclipse不同,eclipse中可以直接在软件内部查找到,而AS则需要通过命令行形式拿到,具体先进入.android目录下,如图: AS将应用打包AS版本1.3,步骤都以截图为示例:AS中Build->选择Generate sig

2015-08-04 17:00:43 3997

原创 仿微信雷达寻好友动画

先看看要实现的效果:这种效果正是类似微信上雷达寻找好友的动画,于是解压微信看看里面,发现微信是用一张图片做的旋转动画,于是乎看看这种特效,可以用画笔直接画出来,首先是四个圆,然后中间那部分扫描区便是颜色由透明渐变到淡白。比较简单。public class RaderView extends View { private Paint mPaintCircleLine;//绘制

2015-07-30 09:52:45 3029 2

原创 插件化开发—动态加载技术加载已安装和未安装的apk

首先引入一个概念,动态加载技术是什么?为什么要引入动态加载?它有什么好处呢?首先要明白这几个问题,我们先从应用程序入手,大家都知道在Android App中,一个应用程序dex文件的方法数最大不能超过65536个,否则,你的app将出异常了,那么如果越大的项目那肯定超过了,像美团、支付宝等都是使用动态加载技术,支付宝在去年的一个技术分享类会议上就推崇让应用程序插件化,而美团也公布了他们

2015-07-29 14:20:16 17161 17

原创 DiskLruCache硬盘缓存技术详解

上次讲了使用内存缓存LruCache去加载很多图片而不造成OOM,而这种缓存的特点是在应用程序运行时管理内存中的资源(图片)的存储和释放,如果LruCache中有一张图片被释放了,再次加载该图片时需要重新从网络上下载下来,这就显得废流量不说,而且费时,网络不好的状况下用户需要等待,而且在没有网络的情况下不会显示任何数据。那么怎样才能解决这种情况呢?答案就是加入硬盘缓存DiskLruCache。

2015-07-23 16:28:04 3017 3

原创 Android中处理大图片时图片压缩

1、BitmapFactory.Options中的属性在进行图片压缩时,是通过设置BitmapFactory.Options的一些值来改变图片的属性的,下面我们来看看BitmapFactory.Options中常用的属性意思:options.inPreferredConfig - 设置Bitmap的偏好配置,值有Bitmap.Config.ARGB_8888,Bitmap.Conf

2015-07-22 11:27:13 3047 1

原创 让App中加入LruCache缓存,轻松解决图片过多造成的OOM

上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,现在好好理一下吧。Android中一般情况下采取的缓存策略是使用二级缓存,即内存缓存+硬盘缓存—>LruCache+DiskLruCache,二级缓存可以满足大部分的需求了,另外还有个三级缓存(内存缓存+硬盘缓存+网络缓存),其中DiskLruCache就是硬盘缓存,下篇再讲吧!1、那么LruCache到底是什么呢?

2015-07-21 17:18:31 1914

原创 Material Design之FloatingActionButton的使用

FloatingActionButton是继承至ImageView,所以FloatingActionButton拥有ImageView的所有属性。CoordinatorLayout可以用来配合FloatingActionButton浮动按钮,设置app:layout_anchor和app:layout_anchorGravity构建出特定的位置与效果的FloatingActionButton。

2015-07-19 14:36:55 27273

原创 关于Service中bindService注意的几个问题

最近有用到Activity需要不断的从Service中获取数据,第一个想法肯定就是通过bind回调机制了,有几点概念模糊特此记录下:单独使用bindService(),unbindService()会经历:->onCreate()->onBind()->Service running->onUnbind() -> onDestroy() 。单独使用startService(),stop

2015-07-17 21:48:39 8455

原创 ViewPager切换动画PageTransformer的使用

Android从3.0开始添加了属性动画后,诸多难以实现的动画都可以轻松解决了,v4包下的ViewPager控件当然也不例外,相对于非常平庸的默认切换动画,Google官方给我们展示了两个动画例子:DepthPageTransformer和ZoomOutPageTransformer,比较炫。实际上我们也可以通过实现ViewPager.PageTransformer接口来做出完全不同的切换

2015-07-16 15:12:09 3264

原创 Material Design之CollapsingToolbarLayout使用

CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。使

2015-07-16 09:19:55 56555 19

原创 优雅的App完全退出方案(没有任何内存泄漏隐患)

在Android开发过程中,特别是界面比较多的情况下,用平常的退出方式往往是不能完全退出这个应用,网络上也好多各种退出方案。其中一种应该是被广大开发者采纳使用,也非常的清晰方便,就是在Application中维护一个单例的List管理容器,每次打开新的Activity就把当前Activity加入到容器中,然后在需要完全退出的时,就循环遍历该容器分别finish()每个Activity,即达到完全退

2015-07-14 15:49:15 4146 10

原创 Material Design之TextInputLayout、Snackbar的使用

这两个控件也是Google在2015 I/O大会上发布的Design Library包下的控件,使用比较简单,就放在一起讲了,但有的地方也是需要特别注意一下。TextInputLayoutTextInputLayout功能非常简单,就是用于用户在EditText中输入时hint的提示和错误的提示。先来看看效果图吧:从上图很明显的看出:1、当EditText获得焦

2015-07-14 13:30:16 3786

原创 Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar

ok,今天继续更新Material Design系列!!!废话不说,先看看效果图吧:好了,现在来讲讲上图是怎么实现的吧!讲之前先讲讲几个控件:CoordinatorLayout 该控件也是Design包下的一个控件,然而这个控件可以被称为Design包中最复杂、功能最强大的控件:CoordinatorLayout。为什么这样说呢?原因是:它是组织它众多子

2015-07-12 19:28:35 31311 18

原创 com.android.dex.DexException: Multiple dex files define(jar包重复引用) 错误解决

前段时间开始转入Android studio,不料果真使用时候遇到些错误,在此记下!出现这个错误往往是在libs目录下有个jar包,然后在gradle文件中又引用了,即:共同引用了。解决方法:1、既然在gradle文件中引用了,即2,那么把libs中的删了。2、更改1中的配置,即把compile改为provided,更改方法可以手动更改,也可以在structure中

2015-07-11 19:13:38 6090

原创 Material Design之NavigationView和DrawerLayout实现侧滑菜单栏

本文将介绍使用Google最新推出规范式设计中的NavigationView和DrawerLayout结合实现侧滑菜单栏效果,NavigationView是android-support-design包下的一个控件,该包下还有AppBarLayout、CoordinatorLayout、FloatingActionButton、SnackBar、TabLayout控件,也是Google在Andro

2015-07-11 18:20:53 6931 3

原创 Material Design之CardView的使用

本文介绍CardView这个控件的使用,CardView继承至FrameLayout类,是support-v7包下的一个类,使用时必须引入cardview依赖包,可在下载的sdk文件夹中找到。。。使用CardView可以实现卡片式布局效果,非常好看,卡片还可以包含圆角、阴影、背景。CardView是一个ViewGroup,布局时包含其它的View从而实现优雅界面效果。首先来看看个界面效果:

2015-07-10 14:11:16 17958 3

原创 RecyclerView实现瀑布流效果(二)

在上篇中我们知道RecyclerView中默认给我们提供了三种布局管理器,分别是LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager。其中StaggeredGridLayoutManager可实现交错式网格布局,正好可以用来实现瀑布流。下面先看看效果图吧,再贴代码:其中大部分内容实现其实是和上篇文章

2015-07-04 18:23:04 10383 3

原创 Material Design之RecyclerView的使用(一)

Android 5.0开始就推荐使用Material Design这个设计语言,本文开始就逐一讲解Material Design中控件的使用。本章主要讲解RecyclerView,期中会带有ToolBar的代码,也是一个Android5.x推荐使用ToolBar替代ActionBar的控件,RecyclerView 是 android-support-v7包中的一个控件,使用该控件时需要添加c

2015-07-04 14:00:07 4211 4

原创 分治策略实现快速排序法

说到算法,暑假就要去实习了,这时才感觉到数据结构和算法的重要性,虽然大二时候已经学过,但是基本用不到,导致现在基本忘了,现在重新拾起,重新把以前学过的和没有学过的算法都理一遍实现一遍!!!给自己一个任务——每天一个算法!!!快速排序算法:是对冒泡排序的一种改进,若初始记录序列按关键字pivotNum有序或基本有序,则将会蜕化为冒泡排序,此时时间复杂度为O(n²)。否则其平均时间复杂度为O(

2015-05-27 11:08:29 3795

原创 Android官方推荐使用DialogFragment替换AlertDialog

DialogFragment是在Android3.0(API level 11)中引入的,它代替了已经不建议使用的AlertDialog。DialogFragment高效地封装和管理对话框的生命周期,并让Fragment和它包含的对话框的状态保持一致。那么,已经有了AlertDialog为什么要引入DialogFragment呢?DialogFragment对话框出现的意义

2015-05-25 18:06:31 15156 4

原创 Android支持多国语言化Values命名

android多国语言文件夹文件汇总如下:维吾尔文(中国):values-ug-rCN中文(中国):values-zh-rCN中文(台湾):values-zh-rTW中文(香港):values-zh-rHK英语(美国):values-en-rUS英语(英国):values-en-rGB英文(澳大利亚):values-en-rAU英文(

2015-05-18 12:25:30 2949

原创 Android ListPopupWindow的使用

其实像ListPopupWindow、PopupMenu的用法大致和PopupWindow的一样!就不讲了,相信用过PopupWindow的看一下就能明白。先上个效果图:ListPopupWindow可以用在下拉列表、查询结果显示、历史记录、提示输入等,当然PopupMenu也可以的。直接贴代码吧:public class MainActivity extends

2015-05-17 16:01:10 11703 1

原创 Android布局性能优化—从源码角度看ViewStub延迟加载技术

在项目中,难免会遇到这种需求,在程序运行时需要动态根据条件来决定显示哪个View或某个布局,最通常的想法就是把需要动态显示的View都先写在布局中,然后把它们的可见性设为View.GONE,最后在代码中通过控制View.VISIABLE动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源,虽然把View的初始可见View.GONE但是在Inflate布局

2015-05-16 14:02:41 5169 3

原创 Android实战之ListView复选框

项目中有用到复选框的例子,啊啊......在网上查找有关资料,大多都是过于繁琐,所以自己决定写个这个方面的demo。。。先给个效果图:在ListView中添加复选框主要注意以下几个问题:1、ListView item与item中的控件抢焦点的问题(必须设置CheckBox不可点击和不能获取焦点,让ListView得到焦点)2、ListView的setChoicMode(in

2015-05-15 10:06:13 2451

原创 在Android Studio 上安装Genymotion插件

首先去官网http://www.genymotion.net/下载Genymotion并安装好。其次打开AS的设置界面,找到Plugins插件目录然后在搜索里搜Genymotion,然后点击Browse.....,就会在右边出现提示你安装Genymotion插件,点击安装即可。安装完毕后会提示你重启AS,点击重启。第二次打开AS后会在工具栏中出现Genymotion的小图标

2015-05-13 15:36:57 5941

原创 Android Studio设置代理更新下载SDK

代理主机和端口号按上图设置即可,便可以轻松的下载更新SDK啦~~~

2015-05-13 14:53:19 4353

原创 Android studio之更改快捷键及自动导包

刚刚转入Android Studio,对AS中的一些操作还不太熟悉,所以记录一下。。。更改AS中的代码提示快捷键,AS做的也挺智能的,在Keymap中可以选择使用eclipse的快捷键设置,但是虽然设置了,对有些快捷键还是不能使用,那么就需要我们手动去修改了。在代码提示AS默认的快捷键是Ctrl+Alt+Space,反正我是用不惯,还是改为eclipse中的Alt+/吧,修改时必须

2015-05-13 13:44:19 7666

原创 Android中常用开发工具类—持续更新...

一、自定义ActionBarpublic class ActionBarTool { public static void setActionBarLayout(Activity act,Context context,int layoutId){//前两个参数一般情况下都可以填this,第三个参数为自定义View的Id ActionBar actionBar = act.getA

2015-05-12 14:52:33 1009

原创 Android性能优化之Listview(ViewHolder重用机制)

相信大家在很多时候都会用到ListView这个控件,因为确实是用的很多很多,但是有木有遇到过当数据很多很多的时候,往下滑ListView时有时候会卡顿,这就需要我们来优化它了。ListView优化主要有下面几个方面:1、convertView重用2、ViewHolder的子View复用3、缓存数据复用一、convertView重用首先讲下ListView的原

2015-05-10 14:11:34 8881 2

原创 Android之EditText imeOptions属性解析

在我们的手机中,虽然通常输入法软键盘右下角会是回车按键,但我们经常会看到点击不同的编辑框,输入法软键盘右下角会有不同的图标。例如: 点击浏览器网址栏的时候,输入法软键盘右下角会变成“GO”或“前往; 而我们点击Google搜索框,输入法软键盘右下角会变成 放大镜 或者“搜索”。 而决定这个图标的变换的参数就是EditText中的 android:imeOptions属性。android

2015-05-10 12:55:08 2350

GreenDAO的CRUD操作

GreenDAO的CRUD操作

2015-09-14

在线热更新Dexposed框架

在线热更新Dexposed框架

2015-09-09

SVG矢量动画

SVG矢量动画

2015-09-06

ThemeChangeDemo

android 主题切换

2015-08-29

materialdesign动画示例

materialdesign动画示例

2015-08-28

RecyclerViewHeaderAndFooter

RecyclerViewHeaderAndFooter添加头部和尾部

2015-08-26

RecylerView侧滑删除和拖拽

RecylerView侧滑删除和拖拽

2015-08-24

Android事件分发机制

Android事件分发机制测试Demo

2015-08-18

Volley请求网络图片

使用Volley请求网络图片防止OOM

2015-08-15

Volley.jar

Volley.jar

2015-08-12

Material CheckBox

Material Design 风格的checkbox,Material Design 风格的checkbox

2015-08-07

Android Data Binding

Android Data Binding结合RecyclerView的使用

2015-08-06

插件化开发-动态加载

插件化开发-动态加载已安装apk和未安装的apk

2015-07-29

DiskLruCacheDemo

DiskLruCacheDemo

2015-07-23

DiskLruCache

Google又提供了一套硬盘缓存的解决方案:DiskLruCache(非Google官方编写,但获得官方认证),怎么使用呢?下载好了之后,在项目中新建一个名为libcore.io包,然后将DiskLruCache.java代码文件复制到这个包中即可开始使用。

2015-07-23

LruCache使用

LruCache使用

2015-07-21

Material Design icon图标

Material Design icon图标

2015-07-19

FloatingActionButton的使用

Google提供的Design Library中FloatingActionButton的使用。 和配合Snackbar的使用

2015-07-19

ViewPager的使用

ViewPager的动画效果实现,利用Google提供的两种动画来说明自定义动画。

2015-07-19

CollapsingToolbarLayout使用 源码下载

CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。

2015-07-16

日期选择控件(可防止屏幕旋转抛出的异常)

日期选择控件(可防止屏幕旋转抛出的异常)

2015-07-13

AppBarLayout实现上滑隐藏ToolBar

AppBarLayout实现上滑隐藏ToolBar,下滑出现

2015-07-12

NavigationView实现侧滑菜单栏

将介绍使用Google最新推出规范式设计中的NavigationView和DrawerLayout结合实现侧滑菜单栏效果

2015-07-11

CardView的使用

CardView是support-v7包下的一个控件,google新推出的一款符合材料设计的Layout。。。

2015-07-11

RecyclerView实现瀑布流

RecyclerView实现瀑布流效果。

2015-07-04

RecyclerView的使用

提供一种插件式编程,开发者对RecyclerView的设计更加自由

2015-07-04

使用DialogFragment替代AlertDialog

Google官方推荐使用DialogFragment代替AlertDialog,很好的解决屏幕旋转产生的问题。。。

2015-05-25

ListView添加CheckBox复选框

在ListView中添加CheckBox,实现多选条目

2015-05-15

ViewFlipper详解demo

该demo主要是说明了ViewFlipper这个控件怎么使用,并加入动画效果和点击暂停过一段时间又自动切换,可谓是实现了ViewFlipper功能外又完善了它的自动切换效果

2015-02-26

android 指南针 源码

android 指南针 源码

2014-08-21

java实现的多媒体播放器

ava实现的简单多媒体播放器

2014-08-20

空空如也

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

TA关注的人

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