凡事预则立,不预则废。无论在面试安卓还是Java的时候,面试官总会提及单例模式。对于有些工作经验的应聘者来说或许能写出懒汉式,但应对面试官接下来诸如多线程情况或者从性能优化角度的刁难或许无从下手。今天就单例模式做一个全面而又透彻的总结,以应对面试中的刁难
面试初体验
单例模式又称单件模式:确保一个类只有一个实例,并提供一个全局访问点。
My life is so much more interesting inside my head.
凡事预则立,不预则废。无论在面试安卓还是Java的时候,面试官总会提及单例模式。对于有些工作经验的应聘者来说或许能写出懒汉式,但应对面试官接下来诸如多线程情况或者从性能优化角度的刁难或许无从下手。今天就单例模式做一个全面而又透彻的总结,以应对面试中的刁难
单例模式又称单件模式:确保一个类只有一个实例,并提供一个全局访问点。
近来比较闲,想利用这闲暇的时光恶补下op漫画。打开鼠绘漫画网,找到onepiece的目录,点击需要补习的篇章。本来准备吹着空调,吃着西瓜愉快的享受op的世界了。没想到的事发生了,在鼠标点击的瞬间出现了跳转
上篇博文中完全总结了安卓的动画框架,以及它的使用和应用场景。随着安卓源码的不断迭代,尤其到安卓5.0以后引入了Material设计模式。使得Android动画效果更加完善,在5.0之前号称为过度版的KitKat中引入了Transition
框架,从字面上看它是过渡、转场的意思。上篇博文中也介绍了View动画的应用场景,不同的是本篇将介绍安卓Transition
转场框架的应用。
Android动画分为三种:View动画、帧动画、属性动画。View动画主要通过对场景的对象进行不断的做平移、缩放、旋转和透明度变化从而产生动画的效果。帧动画通过顺序播放一组图片集达到动画效果,如果图片尺寸过大或者加载数量很大容易导致OOM。属性动画是API11引进的新特性,可以说它是最万能的动画框架,在低版本上可以使用兼容库NineOldAndroids。
对于一个要执行的操作来说,Intent
算作是一个抽象描述。比如通过startActivity(Intent)
启动一个Activity
、sendBroadcast(Intent)
发送一个广播或者通过startService
bindService
和后台服务进行交互。
处理View滑动事件并且执行酷炫效果是安卓上层开发的一个难点。与纯自定义View控件相比,实现View滑动效果又可以从动画的角度出发;但是针对滑动后保留控件的事件对象来说动画又存在短板;若从代码复杂度来说实现简单的View滑动又可以通过View自身提供的scrollTo
和scrollBy
方法辅以Scroller对象来实现;针对复杂滑动效果还是要通过自定义控件处理好各个View事件序列的事件分发和消费逻辑。
本篇通过模仿最美应用滑动操作效果来探讨下在Android中实现View滑动的这几种方案,并且对比各方案的优劣性。
Android为视图和activitys间的转场提供了强大的动画支持。应对不同场景系统提供了三种类型的动画,但是最重要的还是属性动画(Property animation)。属性动画允许我们设置任意的动画属性在动画持续期间来适配这些属性从而达到动画的效果。
这些可以应用于任何的Android应用程序,典型的可以对一个视图进行位置上的,旋转性、膨胀性,和颜色上进行动画效果的展示。
动画可以定义在XML文件中也可以在java代码上来实现它。
直观地,从RemoteViews名字来看,它类似与一个远程的View,提到远程必然会涉及跨进程的通信。也就是说RemoteViews提供一组基础的操作用于跨进程更新它的界面。RemoteViews在Android中的使用场景有两种,一种是自定义的通知栏,另外一种是桌面小部件。
在Android应用开发中,通知栏是一个很重要的UI交互。其原理是通过调用NotificationManager的notify方法来实现的。最基本的实现是使用API提供的默认布局,例如