自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 Android Drawable简单总结

前言最近做项目的时候用到了PrgressBar的进度展示图片,可以使用progressDrawable属性配置它的进度图片,配置XML写了好几遍都没有达到预期效果,Drawable用起来非常简单,实践中还是会遇到不少坑,这里来总结下平时经常使用到的Drawable对象。ShapeDrawableShapeDrawable可以用来定一个基本的几何图形,比如android:shape=...

2018-04-28 18:04:28 209

原创 View的padding和margin负值测试

前言View的padding和margin在开发过程中经常使用到,padding指的是View内部的补白,margin则是View和父控件或者其他兄弟控件之间的间距,通常它们的设置值都是正数,不过如果把它们的值设置成为负数会怎么样呢,这里写一个简单的小Demo来测试一下。Demo编写首先在一个新建的布局里添加两个FrameLayout,并且每个FrameLayout布局里有一个Im...

2018-04-27 19:11:13 2683 1

原创 Android事件派发源码阅读

前言Android事件派发最开始从Activity派发给Window,Window又派发给了内部的DecorView也就是视图树,在视图树内部事件派发主要就是ViewGroup和View内部流转,这些执行流程在前面的示例初探中已经讲过,现在通过ViewGorup和View的实现源码来查看视图树内部的事件派发逻辑。源码分析事件序列最开始从ACTION_DOWN开始,由Activity...

2018-04-27 14:07:49 197

原创 Android事件派发机制示例初探

前言Android的事件派发机制原理是开发者必须了解的基础知识,不过以前的学习都只是通过学习别人的博客总结,总是觉得有些明白又总是说不太明白,这里就来通过简单的示例学习事件派发内部的执行过程。Activity派发源码Android Activity是展示界面的重要部件,不过它本身也是Context上下文对象,Android系统在接收了用户的触摸事件之后会通过Binder进程间通信将...

2018-04-26 18:49:01 276

原创 Groovy语言基础语法

简介Groovy是一种基于JVM的敏捷开发语言,结合了Python、Ruby和Smalltalk的许多强大的特性。Groovy在语法上支持动态类型、闭包等新一代语言特性,它能够无缝集成所有已经存在的Java类库,即支持面向对象也支持面向过程编程。变量变量类型分为基本类型和对象类型,但是groovy中所有的类型都是对象类型,基本类型其实是包装类。变量可以使用强类型定义,也可以使用de...

2018-04-22 21:22:42 3660

原创 Service启动过程源码阅读

前言Service作为四大组件中较常用的组件,通常和各种需要后台执行的业务相关连。Service有两种启动方法startService/bindService,对应的停止操作也分成两种stopService/unbindService,现在来阅读下Android的实现源码深入理解Service的工作原理过程。startService/StopService分析startServic...

2018-04-21 09:26:11 794

原创 Activity启动过程源码阅读

前言Activity是Android应用程序的脸面,几乎所有的UI元素都要放到它上面展示。开发者想要开发出高质量的应用程序,掌握Activity工作原理就非常有必要了。这里通过应用中常用的startActivity方法作起点,查看启动一个新的Activity执行的代码逻辑。代码分析查看最简单的startActivity(intent);方法实现,它实际上调用了startActivi...

2018-04-20 22:54:53 213

原创 Android消息机制源码阅读

前言Android客户端开发和消息机制最常见的就是网络请求数据更新到UI线程,用户在子线程中通过网络请求获取数据,由于Android不支持直接在子线程中修改UI控件,需要把数据转交到UI线程中再更新控件界面。这个过程通常要借助Handler类调用post/sendMessage系列方法将操作提交到消息队列中,主线程不断取消息队列里的消息并执行回调。为了更好地理解整个通信过程,这里查看底层的实现...

2018-04-20 15:29:26 179

原创 Android Camera相机基础使用

前言拍照功能在智能机中已经是标配了,市场上也充斥着形形色色的相机应用,足以说明相机功能目前的火爆程度。作为Android开发者拍照相关的API也是程序员必备的技能,现在就来学习一下Android系统为开发者提供的拍照相关的技术。6.0+权限申请由于相机权限和SDCard外部存储权限到了6.0+版本都属于危险权限,需要用户手动打开权限才能使用相机和保存照片到外部存储。在6.0+系统使...

2018-04-20 11:23:13 366

原创 Annotation生成代码

前言Android客户端框架Butterknife很好的解决了Activity中大量的findViewById等模版代码,用户只要在需要注入的地方写上Annotation,框架会自动帮开发者完成各种注入代码,减轻了开发者负担。Butterknife内部的实现就使用了Annotation处理器,通过用户配置信息在编译器生成注入代码,最后在运行期动态生成注入类完成绑定工作。这里就来简单的实现一个注...

2018-04-19 13:36:27 395

原创 JDK动态代理简析

前言代理模式通过为其他对象提供一种代理以控制对这个对象的访问,可以增加或者减少原始对象提供的功能。代理分为远程代理、虚拟代理、保护代理等。 远程代理,为不同位置对象提供本地代表对象;虚拟代理,当真正需要对象的时候才真正创建需要的对象;保护代理通常会对真实对象的访问增加权限机制,确保对象不会被非法访问;现在来看一下代理的实现方法,通常包含静态代理和动态代理两大类。静态代理...

2018-04-19 11:58:02 188

原创 长文案展开和收缩实现

前言Android应用中通常有一些很长的文案,比如有些用户评论或者文章内容特别的长,如果整体都展示出来可能会占据很大的空间,其他的控件都无法完全展现在用户面前。通常程序会对长文案做收缩操作,只展示开头的部分,用户如果真的对内容感兴趣可以点击展开按钮或文字,这种功能在应用中很常见。现在就来简单实现两种常见的展开缩放功能。实现效果自定义控件实现自定义控件实现要求展开/缩放按钮和...

2018-04-19 11:54:38 1065

原创 Android进程通信的几种方式

前言做应用开发的时候关于Android中的多进程问题其实并不多见,不过面试当中还是会经常问到,这里就对常用的通信方式做一些基本的总结。BundleAndroid四大组件可以通过Intent进行通信,Intent里的Bundle对象就是用来保存各种通信的数据,不过如果传递的是自定义类型的数据就需要支持序列化,可以是Serializable或者Parcelable两种类型。//...

2018-04-16 14:28:46 734

原创 Android硬件加速小结

前言Android从3.0版本开始加入了硬件加速,这样就能够充分利用手机硬件GPU来提升界面的渲染效果。但是这种技术还有一些限制,比如有些开启了硬件加速的界面上无法使用Canvas的clipPath接口,一点调用就会抛出不支持的异常。现在来对硬件加速的小知识点做一些总结。开启/关闭硬件加速在硬件加速的开启/关闭可以分成四种层次上做。最高的层次就是在整个应用里开启或关闭硬件加速,只需...

2018-04-15 23:07:16 5033

原创 SVG动画简析

前言SVG在前端中使用的一种语法规范,Vector在Android中使用而且只支持一种Path标签,主要是为了提高SVG的解析效率,减少SVG加载时候效率问题。相对于普通的静态jpg、png等图片来说,SVG能够实现缩放不失真,而且减小了drawable体积;但是SVG相对于静态图片需要更多的处理时间。通常SVG都是由设计提供,如果想自己编辑SVG图片可以使用在线SVG编辑器 http://e...

2018-04-15 22:27:07 808

原创 Android过渡动画源码阅读

前言Android新引入的过渡动画主要使用TransitionManager来实现,主要的实现接口就是go和beginDelayedTransition两个方法。为了能够更好的理解过渡动画的实现机制,现在来分析一下它的实现代码,现在先从go方法开始查看内部的实现。代码分析找到TransitionManager.go的实现代码,它又调用了changeScene方法,并且传递进了sDe...

2018-04-11 21:16:49 447

原创 Kotlin常用高阶函数

高阶函数高阶函数可以把函数作为参数传递或者返回值返回的函数。既然函数对象作为数值进行传递那么就会有如何引用函数的问题。函数引用的三种方式: 直接双冒号的方式,引用的是包级别的函数;// 这种引用适用于lambda表达式只有一个函数调用并且// 这个函数的参数也是这个lambda表达式的参数args.forEach(::println) 类名双冒号函数名的方法引用的...

2018-04-11 18:56:07 8979

原创 Android过渡动画基础使用

前言Android从API19引入了Transition过渡动画框架,它通过场景Scene概念来表述动画的关键帧,只要提供了开始和结束场景的内容就会自动做动画。过渡动画其实是对属性动画的一种封装,它能够一次对多个对象做动画而不需要特别复杂的配置。除此之外Activity之间的切换效果也可以使用过渡动画来实现。基础使用首先需要定义Scene也就是场景对象,场景其实就是某个事件点所有的...

2018-04-10 20:04:26 2116

原创 属性动画源码阅读

前言属性动画是Android3.0之后开发的主流动画框架,开发者除了能够熟练使用它做动画效果之外,还需要近一步了解属性动画的实现原理,这里就来简单的分析一下属性动画的代码实现。代码分析补间动画的偏移缩放等操作都可以通过属性动画ObjectAnimator来实现,通常实现的代码如下所示:public static ObjectAnimator ofFloat(Object t...

2018-04-10 19:44:20 190

原创 Android 属性动画基础使用

前言Android3.0之前系统只提供了补间动画,但是它只能针对View做动画而且只能在改变展示状态无法整整的改变View的属性值。比如补间动画的偏移效果虽然View的位置在外观上改变了,但实际的点击效果还需要在之前的位置点击才会回调。3.0之后提供的属性动画不但能够对View做动画还能够对数值做动画效果,所谓属性动画其实就是对具有get和set方法的属性值做动画效果,这样不但是View的外观...

2018-04-10 12:24:51 244

原创 单例模式实现总结

前言设计模式是大牛们总结的一套解决特定问题编程模式,它主要分为创建型、结构型和行为型三大类,创建型中的单例模式是开发中最常见的。它主要用在有些对象资源的创建和销毁非常消耗资源,最好整个系统只有一个对象。现在来总结一下代码中常用的几种实现方式。饿汉式在Java当中通过设置构造函数为private访问权限确保用户无法创建单例对象。为了让用户能够访问到单例对象还需要提供一个静态函数接口用...

2018-04-09 22:28:05 252

原创 补间动画实现抛物线和3D旋转

前言Android自带的补间动画只有alpha、rotate、translate和scale这四种效果,在真正开发过程中根本无法满足一些特殊需求。这里来使用补间动画实现一下简单的抛物线效果和3D旋转动画。实现效果抛物线实现抛物线的原理很简单,x轴表示横向移动的偏移量,y轴表示竖向的偏移量,如果dy=dx*dx也就是y轴方向的移动偏移量是x轴方向偏移量的平方值,这个时候对象在...

2018-04-09 19:31:13 934

空空如也

空空如也

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

TA关注的人

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