Bundle传递对象为什么需要序列化,Serialzable和Parcelable的区别

因为bundle传递数据时,只支持基本数据类型,所以在传递数据时,要将对象序列化转化成可以存储或者可以传输的本质状态,即字节流。序列化后的对象可以在网络,页面之间传递,也可以存储到本地。

Serialzable(Java自带)

序列化对象,转化成可以存储或者可以传输的本质状态。

Parcelable(安卓专用)

Parcelable可以实现相同的效果,但是不是将对象序列化,而是将对象进行分解,分解后的每一个部分,都是Intent所支持的数据类型,这就也实现了传递对象的功能了。

比较:Serialzable简单但是低效,开销大,适合将对象序列化后,进行本地存储和网络传输。Parcelable高效但是麻烦,适合内存序列化,安卓传递对象专用。

安卓动画分类:

View Animation(视觉动画):视觉动画作用的对象是View,支持四种动画效果,分别是平移,缩放,旋转和透明度动画。视觉动画可以通过XML或者代码动态创建,对于视觉动画建议采用XML文件定义。因为它具有更好的可读性和可重用性。

Drawable Animation(帧动画):顺序播放一组预先定义好的图片,不同于View动画,系统提供了另外一个类AnimationDrawable来使用帧动画。

Property Animation(属性动画):Android 3.0以后引入了属性动画,属性动画可以轻而易举实现视觉动画做不到的事,比如:将一张图片进行3D旋转。说白了,属性动画的实现原理就是修改控件的属性值实现的动画

区别:

属性动画才是真正实现了View的移动,视觉动画对View的移动,更像是在不同位置绘制了一个影子,实际View还是处于原来的位置。如果Activity销毁时,而属性动画没有随之销毁,那么属性动画会导致Activity无法回收而造成内存泄漏。而视觉动画就不会出现这个问题。在Activity切换,窗口弹出等情景有着很好的表现。使用帧动画时,不要使用过多过大的图片,容易导致内存不足。

为什么属性动画移动后仍然可以点击?

因为属性动画所改变的东西,会更新到这个view的矩阵中,所以当ViewGroup分派事务的时候,会将当前正确的触摸坐标,转换成矩阵变化后的坐标。

 

参考文章:https://juejin.im/post/5e5c5e306fb9a07cbe346d71#heading-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值