Android中的动画

动画

View动画

作用对象是VIew,分为四种:平移动画(Translateanimation)、缩放动画(ScaleAnimation)、旋转动画(RotateAnimation)和透明动画(AlphaAnimation)。

View动画的特殊使用场景

LayoutAnimation

        作用于ViewGroup

Activity的切换效果

        重写public void overridePendingTransition(int enterAnim, int exitAnim)方法,必须在StartActivity(Intent)或者finish()之后被调用才能生效。

        enterAnim——Activity被打开时,所需的动画资源id

        exitAnim——Activity被暂停时,所需的动画资源id

帧动画

顺序播放一组预定好的图片,使用AnimationDrawable类似于电影播放。由于使用比较简单容易OOM,所有使用时应尽量避免使用过多尺寸较大的图片。

属性动画

是API 11新加入的特性

Window和WindowManager

Window的内部机制

每一个Window对应一个ViewViewRootImplWindowView通过ViewRootImpl建立联系。

Window的创建过程

Activity的Window创建过程

ActivityThread中的performLaunchActivity()完成整个过程,内部通过类加载器 创建Activity的实例对象,并调用attach方法进行关联。

ActivitysetContentView的实现是交给Window处理,而Window的实现是PhoneWindow,其中PhoneWindow中的setContentView方法遵循以下步骤:

1、如果没有DecoeView,那么就创建它

2、将View添加到DecorViewmContentParent

3、回调ActivityonContentChanged方法通知Activity视图已经发生改变

但此时DecorView虽然已经被创建却并没有被WindowManager识别,无法接收外界输入信息,因此在ActivityThreadhandleResumeActivity方法中调用ActivityonResume方法然后调用makeVisibleDecorView才真正完成添加和显示。

Dialog的Window创建过程

通过PolicyManagermakeNewWindow方法来完成,初始化DecorView并将Dialog的视图添加到DecorView中,将DecorView添加到Window中并显示。

Toast的Window创建过程

Toast也是基于Window来实现,但由于它存在定时取消的功能,所有系统采用了Handler。内部有两种IPC过程,Toast访问NotificationManagerServiceNotificationManagerService(下文简称NMS)访问Toast的TN接口;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值