Android属性动画和View动画(补间动画)

今天去参加面试,面试官给人大牛的感觉。确实也是,CSDN博客专家。

仔细回忆他问我的几个问题。

1.

Q:Android 中的设计模式其实就是JAVA中的设计模式,那么你说下有哪些常用的设计模式

A:常用的设计模式单例模式,观察者模式,装饰者模式,构造者模式,工厂模式。

Q:那么安卓中系统源码中有哪些模式?

A:BitmapFactory的工厂模式,XmlPaulParserFactory的工厂模式,单例模式,自己用的比较多,但是系统中的源码尚未触碰过。

Q:那么观察者模式呢?

A:这个也比较常用,比如Button的setOnClickListener( )也是观察者模式。Button是被观察者,而设置监听的接口类可以看作是观察者,当Button的状态改变的时候

会回调接口中定义的方法。

2.

Q:属性动画和View动画的区别(受虐了,本以为动画是很简单的,翻阅书籍之后才发现区别很大)

A:

  • 第一点:View动画是对View的影像做出平移,缩放,旋转,透明度等动画效果,而非实际的View对象,这就导致在动画结束的时候,对动画停留的位置进行点击是无法出现点击效果的,而在原来的位置(已经看不到View了)点击却可以出现点击效果。
  • 第二点:View动画只能对View进行动画操作,不能对自定义View进行动画操作。(我已经看到老师在微笑了......,申明这个观点是在某个博客上一瞥看到的,当时并没有点击进去看,这个回答是错误的。)
Q:为什么View动画不能对自定义View进行动画操作?
A:(结巴了一会),这是我在博客上看到的一个观点吧。
Q:你自己有没有尝试过?
A:我当时回答没有,现在想想应该这么回答好些。自定义View然后实现动画效果这样的场景还没遇到吧,上个观点,我也只是抛出来,并没有完全同意。
Q:属性动画可不可以对任何属性操作?
A:好吧,这个真的难道我了。(会用和理解真的是两个程度)
3.Volley方面的问题
4.Handler的机制(这个回答的蛮好的,毕竟看书看源码)
5.讲讲项目
那么回来之后赶紧翻阅《Android 开发艺术探索》,之前看过书上一章是深入讲解动画的。以为简单就跳过了。
View动画的分类:帧动画,View动画(补间动画),属性动画
接下来的分析会参照Android 开发艺术探索
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="true">


    <scale
        android:fromXScale="0.5"
        android:fromYScale="0.5"
        android:toXScale="1.2"
        android:toYScale="1.2"
        android:duration="1000"
        android:pivotX="0"
        android:pivotY="100%"
        />

</set>
最需要注意的是两个属性吧:pivotX 和 pivoY这两个属性吧。设置View的缩放点,很明显不同的缩放点,照成的缩放效果是不同的。可以仔细想想。那么缩放点是根据整个屏幕来确定呢,还是根据View本身大小来计算的缩放点呢?通过设置x,y都为100%的情况下看到缩放的效果为在View的右下角,所以缩放点是根据View的自身大小来确定的。

View动画不难,也只有平移,缩放,旋转,透明度改变的动画,虽然可以自定义动画效果,但这个场景我没遇到过,遇到过在好好了解下。

接下里说的是一些Activity动画,LayoutAnimation动画等。主要运用在ListView中,因为有许多item,那么用动画加载每个item便会显得好看些。不过RecyclerView逐渐替代了ListView。
直接在anim/anim_layout
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
    android:delay="0.5"
    android:animationOrder="normal"
    android:animation="@anim/anim_set">
</layoutAnimation>
delay属性是根据我在anim_set中定义的动画duration所持续的时间 * delay因子得到的时间。
那么如何应用在ListView上呢?
android:layoutAnimation="@anim/anim_layout "注意哦,这个属性即时是relativeLayout也可以设置的,我已经试过啦。

Activity的进出动画比较简单些,定义两个个translate的动画entry_anim和exit_anim。
在startActiviyu之后调用overPendingTranslation(R.anim.entry_anim,R.anim.exit_anim);


属性动画可以对任意对象的属性而不是仅仅对View的属性才可以实现动画效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值