自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

EasyLiu

成功的路上并没有捷径可走,唯有一步一个脚印

  • 博客(208)
  • 收藏
  • 关注

原创 Gradle基础之Groovy语法

Gradle基础之Groovy语法在使用Android Studio开发app的过程中,都会接触到Gradle配置,而Gradle的配置是基于Grovvy语法的。因此,要想熟练的使用Gradle进行配置,就必须熟悉Groovy语法,下面开始讲解下Groovy的基本语法。Groovy可以看作是java的加强版,扩展了java的语法,拥有自己的一些特性。Groovy语法官方文档1. 注

2018-01-07 22:55:33 5431

原创 一个简单的侧滑菜单SimpleSlidingMenu

一个简单的Android侧滑菜单,支持left, right,left_right三种菜单模式,支持edge,all两种滑动模式,支持设置菜单的宽度,支持滑动动画效果,解决了滑动冲突问题。

2017-05-14 11:36:34 922

原创 仿微信:Activity跟随手指滑动效果SlideFinishActivity

概述让Activity跟随者手指的滑动而滑动,当向右滑动到一定距离或者往右滑动到达一定速度就finish,类似于微信滑动finish的效果。1、支持边界滑动和全屏滑动两种模式2、解决了滑动冲突问题,例如上图中Activity当中就包含了ViewPager,解决了和ViewPager的滑动冲突问题

2017-05-14 11:23:25 2423 1

原创 Android应用层View触摸事件分发机制

概述前两篇博客从源码的角度对View绘制流程进行了分析,那么当用户需要跟View进行交互的时候,比如点击按钮的时候,按钮是如何得到点击事件的呢?当用户在屏幕上进行点击或触摸的时候,事件是如何传递到各个View的呢?这个就是本篇博客研究的点:View事件分发机制。只有同时掌握View事件分发机和View绘制流程,并辅以一定的练习,才能真正掌握自定义View。下面开始进入正题!注:源码基于API25。触

2017-04-25 23:22:00 1658

原创 Android应用层View绘制流程之measure,layout,draw三步曲

概述上一篇博文对DecorView和ViewRootImpl的关系进行了剖析,这篇文章主要是来剖析View绘制的三个基本流程:measure,layout,draw,只有把这三个基本流程搞清楚了,平时在自定义View的时候才会有清晰的思路!开始进入正题。View的measure过程三个流程均是从ViewRootImpl的performTraversals方法开始的,如下所示:private void

2017-04-23 20:53:40 2023

原创 Android应用层View绘制流程之DecorView与ViewRootImpl

概述一直对Android中View的整个绘制流程不是很了解,View是怎么添加到Activity当中去的?当View中的内容发生改变的时候是怎样执行界面的刷新的?因此,今天准备从源码的角度来对View的整个绘制流程来进行分析,源码基于API25。由于篇幅限制,这篇文章只分析顶层视图DecorView的显示逻辑,具体的View树绘制三部曲:measure,layout,draw将在下篇博文进行深入剖析

2017-04-23 20:47:11 957

原创 自定义View之简单自定义圆形进度条

达到的效果如下: 从上面的效果可以看出,主要有以下几个自定义属性: 1、背景颜色 2、进度扇形颜色 3、半径 4、起始角度 因此,在attrs.xml中定义如下属性:<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="SimpleRoundProgressBar"> <attr

2017-03-06 00:42:53 1033

原创 Material Design当中的动画(二)

继续之前的Material Design当中的动画讲解。1、曲线运动PathInterpolator类是一个基于贝塞尔曲线(Bézier curve)或路径(Path)对象上的新的插值器。 系统提供了三种曲线: @interpolator/fast_out_linear_in.xml @interpolator/fast_out_slow_in.xml @interpolator/linea

2017-03-05 11:58:36 984

原创 Material Design当中的动画(一)

在material主题当中为按钮和activity transition提供了很多默认的动画,并且在API21及以上允许我们自定义这些动画,包括以下几个部分:1、触摸反馈动画2、循环揭露动画3、Activity transitions动画4、曲线运动5、视图状态改变

2017-03-04 20:30:59 741

原创 Android属性动画(PropertyAnimation)(下)

继续之前的属性动画讲解。上一篇http://blog.csdn.net/liuyi1207164339/article/details/53590451对属性动画进行了较为详细的讲解,包括ValueAnimator、ObjectAnimator、AnimateSet以及自定义TypeEvaluator等等,接下来继续讲解属性动画其他的一些知识点。1、布局动画LayoutAnimations属性动画系

2017-02-28 00:17:20 605

原创 Android属性动画(Property Animation)(上)

从Android3.0 (API11)开始引入了属性动画,跟早期的View动画相比,属性动画具有以下优点:1、属性动画允许对任意对象的属性执行动画操作,而早期的视图动画仅仅只能对View执行动画操作。2、View动画只能改变视图的几个方面,比如对视图进行缩放以及旋转等,但是像背景颜色这种就无法改变。3、View动画只是改变View在屏幕上的位置,但是却不能真正改变View本身。比如对于一个按钮,通过动画让其在屏

2016-12-12 22:51:31 2287 1

原创 Material Design当中Drawable新特性

参考:https://developer.android.com/training/material/drawables.html1、简介在Material Design主题当中给drawable增加了一些新的功能:1、图片着色:可以直接为BitmapDrawable和NinePatchDrawable进行着色,并且有多种着色模式可以选择。2、使用Palette从B

2016-08-28 15:34:13 1413

原创 Material Design中的Elevation和shadows

参考:https://developer.android.com/training/material/shadows-clipping.html#Shadowshttps://material.google.com/material-design/elevation-shadows.html#1、简介在Material Design主题当中给UI元素引入了高度的概念,呈

2016-08-27 18:57:24 5160

原创 CardView的使用

参考:https://developer.android.com/training/material/lists-cards.html#CardView1、简介Android5.0当中介绍了一个全新的控件:CardView。CardView继承自FrameLayout,并且拥有圆角和阴影效果,经常作为Item在RecyclerView和ListView当中使用。如下所示:2、使

2016-08-10 17:10:55 1354

原创 Android Design Support之CoordinatorLayout实战

参考:https://android-developers.blogspot.com/2015/05/android-design-support-library.htmlhttp://blog.csdn.net/xyz_lmn/article/details/480559191、简介今天来讲一下Android Design Support里面一个非常重要的组件:Coordin

2016-08-09 22:21:04 4680

原创 RecyclerView的使用

参考:https://developer.android.com/training/material/lists-cards.html1、简介RecyclerView已经出现了很长一段时间了,伴随着Material Design也就是Android L的出现而出现,它的灵活性比ListView更好。和ListView一样:它也是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常

2016-08-09 18:23:51 808

原创 Android Design Support之TabLayout实战

参考:https://android-developers.blogspot.com/2015/05/android-design-support-library.html1、简介这次来讲一下Android Design Support中的一个控件:TabLayout。TabLayout呈现的是一个导航栏,和开源框架PagerSlidingTabStrip实现的效果是一样的,都

2016-08-08 17:08:32 821

原创 Android Design Support之Snackbar实战

参考:https://developer.android.com/training/snackbar/index.htmlhttps://android-developers.blogspot.com/2015/05/android-design-support-library.html1、简介这次我们来讲一下Android Design Support当中的一个组

2016-08-07 11:27:10 583

原创 Android Design Support之FloatingActionButton实战

参考:https://android-developers.blogspot.com/2015/05/android-design-support-library.html1、概述这次我们来讲一个Android Design Support里面的一个组件:FloatingActionButton。中文名是:悬浮按钮。FloatingActionButton给我们呈现的是一个悬浮

2016-08-06 23:23:16 701

原创 Android Design Support之Floating labels for editing text实战

参考:https://android-developers.blogspot.com/2015/05/android-design-support-library.html1、概述这次我们来讲一个Design Support里面的一个组件:TextInputEditText。我们都用过EditText,其有一个hint属性,就是能够提供提示信息。当我们输入字符的时候,这个hin

2016-08-06 22:44:23 803

原创 Android Design Support之NavigationView实战

1、简介Android在2015/05推出了Android Design Support Library,专门针对Material Design提供了很多Material Design组件,并且向后兼容至Android 2.1,关于Android Desgin Support Library,请参考如下网址:https://android-developers.blogspot.com/2

2016-07-24 10:35:53 4352 1

原创 Material Design以及ToolBar实战

最近发现越来越多的App使用Material Design主题,最明显的一个特征是状态栏可以变色或者设置成透明,以及根据App的风格定制Color Palette,扁平化的风格,在视觉上给人一种全新的感觉,非常激动,于是决定写这篇博客。关于Material Design详细介绍,请参考:https://material.google.com/https://developer.andr

2016-07-14 13:20:16 1047

原创 APP启动引导界面的编写

1、我们都知道当第一次打开一个APP的时候首先是在欢迎界面停留一段时间,然后进入引导界面。引导界面里面的页面可以左右滑动,当滑动到最后一个页面的时候一般在页面当中有一个按钮,点击按钮就可以进入主界面了。2、然后以后每次打开APP,不会进入引导界面,只会在欢迎界面停留一定时间然后进入主界面。今天就来讲一下整个实现过程。欢迎界面WelcomeActivity既然我们需要根据是不

2016-06-25 23:01:47 4818 2

翻译 Intent匹配和解析

来自:https://developer.android.com/guide/components/intents-filters.html当系统收到隐式Intent以启动 Activity 时,它根据以下三个方面将该 Intent 与 Intent 过滤器进行比较,搜索该Intent的最佳Activity:Intent 操作Intent 数据(URI 和数据类型)In

2016-06-23 12:00:37 1755

翻译 Intent 和 Intentfilter

来自:https://developer.android.com/guide/components/intents-filters.htmlIntent 是一个消息传递对象,您可以使用它从其他应用组件请求操作。尽管 Intent 可以通过多种方式促进组件之间的通信,但其基本用例主要包括以下三个:启动 Activity:Activity表示应用中的一个屏幕。通过将Inte

2016-06-23 10:49:30 3550

原创 关于AIDL一些需要注意的地方

1、从远程客户端进程来的调用是由不同的线程发起的,运行在不同的进程。所以,服务端必须处理好在同一时刻有多个从不同线程过来的请求的情况。也就是说,一个AIDL的实现必须是完成线程安全的,必须手动处理多线程的情况。2、AIDL接口当中的oneway关键字代表远程调用的行为。当使用的时候,远程调用不会阻塞,会立即返回。AIDL中支持的类型:1、所有的Java基本数据类型,比如int,

2016-06-19 13:53:25 7944

原创 启动远程service的两种方式:显示和隐式

1、显式启动Service端:需要声明android:exported="true",这样别的APP才能访问。            android:exported= "true">客户端:需要知道Sercvice的名字以及其Application所在的包名。public static final String NAME_GESTURE_DETEC

2016-06-19 10:48:53 11090

原创 使用AIDL实现IPC通信之——实现服务端主动发送数据给客户端

前一篇文章讲了怎么在客户端使用AIDL实现IPC通信,调用远程服务端的方法。但是,远程服务端并不能主动给客户端返回信息。在很多情况下是需要远程服务端主动给客户端返回数据,客户端只需要进行监听即可,这是典型的观察者模式。这篇文章主要来解决一下这个问题。代码主要来自ApiDemos/App/Service/Remote Service Binding,下面对代码进行说明。1、首先是AI

2016-06-19 01:34:23 7875 5

原创 使用AIDL实现IPC通信之——简单调用远程服务的方法

为什么使用AIDLAIDL和Messenger都可以实现跨进程通信,Messenger底层也是基于AIDL的。使用AIDL而不使用Messenger的情况是:允许从不同应用的客户端访问你的Service且你的Service需要处理多线程的情况,因为Messenger中的消息默认是串行执行的。还有一点就是:使用Messenger主要是为了传递消息,很多时候需要跨进程调用服务端的方法,这种情况Me

2016-06-19 00:00:29 2928

翻译 Bound Service简介

来自:https://developer.android.com/guide/components/bound-services.html绑定服务是客户端-服务器接口中的服务器。绑定服务可让组件(例如 Activity)绑定到服务、发送请求、接收响应,甚至执行进程间通信 (IPC)。 绑定服务通常只在为其他应用组件服务时处于活动状态,不会无限期在后台运行。基础知识绑

2016-06-16 20:44:08 1552

转载 Android代码规范

基本的命名法Java编程比较常见的有下面三种命名方式驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写下划线命名法:单词与单词间用下划线做间隔一般建议拿来做命名的单词要比较精悍短小,这样即使两三个单词一起拼装成一个命名,也不至于显得很冗长。当然有些单词我们也可以直接写成一些约

2016-06-16 15:29:00 517

原创 使用Messenger实现IPC通信

参考:https://developer.android.com/guide/components/bound-services.htmlMessenger简介如需让接口跨不同的进程工作,则可使用 Messenger 为服务创建接口。服务可以这种方式定义对应于不同类型 Message 对象的 Handler。此 Handler 是 Messenger 的基础,后者随后可与客户端分享一个 I

2016-06-16 13:15:00 1684

原创 构建一个能够接收别的App数据的APP

我们都知道每个Android手机上都有图库,图库中的图片可以发送给别的APP进行显示,比如发送给微信好友、发送到朋友圈以及发送给电脑等(这个经常使用)。那这是怎么实现的呢,我们能不能自己构建一个APP,当在图库中点击发送的时候能够从可选项中找到我们的APP,然后在APP当中显示图片。这是可以的,而且非常简单。在两个应用之间发送和接收数据最普遍的方式就是使用intent。Inetnt允许

2016-06-16 00:55:20 3832 1

原创 在Activity和Service之间使用Binder和回调接口进行通信

Activity和Service之间的通信方式有多种:通过broadcast、扩展Binder类、使用Messenger、使用AIDL等。扩展Binder类使用场景如果你的服务仅供本地应用使用,不需要跨进程工作,则可以实现扩展Binder 类,让你的客户端通过该类直接访问服务中的公共方法。此方法只有在客户端和服务位于同一应用和进程内这一最常见的情况下方才有效。例如,对于需要将

2016-06-15 19:36:54 8802 1

翻译 Android Service详解

来自:https://developer.android.com/guide/components/services.htmlService是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放

2016-06-14 13:03:42 3301

原创 在APP当中调用Android系统摄像头进行视频录制

1、获得摄像头Feature和写文件的权限<uses-feature android:name="android.hardware.camera2" android:required="true" /> 2、创建一个文件用来保存得到的视频 /** * 创建保存录制得到的视频文件 * * @return

2016-06-12 22:16:48 19292 1

原创 调用Android系统摄像头进行拍照以及从图库选择图片

很多时候我们需要调用系统摄像头进行拍照,然后得到拍照之后的图片,然后对图片进行一些处理。比如微信设置头像,就可以选择调用设备存在摄像头APP进行拍照,然后对图像进行裁剪,最终设置为头像,把头像传给服务器保存。调用系统摄像头拍照主要分为以下几个部分:1、获得摄像头Feature和写文件的权限由于不需要直接操作摄像头,而只是调用存在的APP,所以不需要Camera权限,自需要获得C

2016-06-11 14:10:06 9007 2

翻译 管理Android音频播放

如果你的APP播放音频,你必须能够控制音频的播放。为了保证用户体验,你的APP必须要能够获取音频焦点,这样就能保证多个APP不会在同一时刻播放音频。1、确认使用的音频流Android为playing music, alarms, notifications, the incoming call ringer, system sounds, in-call volume, and D

2016-06-09 20:00:13 2522

原创 Java并发编程之——CyclicBarrier的使用

首先看一下官方关于CyclicBarrier的简介:/** * A synchronization aid that allows a set of threads to all wait for * each other to reach a common barrier point. CyclicBarriers are * useful in programs involving

2016-06-09 16:33:38 3442

原创 Java并发编程之——CountDownLatch的使用

最近在开发Android项目的时候有一个需求:在Service中开启多个线程并发的执行任务,当这三个线程执行完毕之后,主线程才能继续往下执行。刚开始使用的是AsyncTask+AtomicInteger的方式,然后在onpostexecute回调中对AtomicInteger进行自增且判断其值是否达到了要求的值,如果达到了要求的值就继续执行相应的操作,否则跳过。但是发现这种方式并不能很好的实现想要

2016-06-06 18:54:53 6264 1

空空如也

空空如也

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

TA关注的人

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