您的位置:首页 > 其它

浅谈View动画及Activity的华丽转场

2016-07-08 17:37 369 查看
概要:

view动画的使用(通过xml定义、Java直接使用)

overridePendingTransition必须位于startActivity 或者 finish的后面,否则动画效果将不起作用

Activity两种转场方式

View动画的使用

View动画的作用对象是View,它支持4种动画效果:

平移动画 translate

缩放动画 scanle

旋转动画 roteate

透明度动画 alpha

Animation对应的四个子类:

TranslateAnimation

ScanleAnimation

RoteateAnimation

AlphaAnimateion

一、通过xml使用View动画

1、资源文件

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true"
android:repeatCount="1"
android:shareInterpolator="true"
>
<translate
android:duration="3000"
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="100"
/>

<rotate
android:duration="3000"
android:fromDegrees="0"
android:toDegrees="360"
/>
</set>


2、资源文件的使用

AnimationUtils.loadAnimation()加载动画资源

helloTv = (TextView) findViewById(R.id.tv_hello);
Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_text);
helloTv.startAnimation(animation);


二、在java中使用View动画

TranslateAnimation animation = new TranslateAnimation(0, 100, 0, 100);
animation.setDuration(3000);
helloTv.startAnimation(animation);


View动画的使用场景

覆盖大多数动画使用场景

ViewGroup中控制子元素的出场效果

Activity的切换效果

Activity的切换效果

方式一:通过overridePendingTransition(enterAnim, exitAnim)

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
MainActivity.this.startActivity(intent);
overridePendingTransition(R.anim.right_in_plugin, R.anim.left_out_plugin);


or



注意:overridePendingTransition必须位于startActivity 或者 finish的后面,否则动画效果将不起作用

可是很少见这种跳转方式啊,下面来说说Activity转场的另一种方式

方式二:通过 Style 来指定

<style name="PluginTheme" parent="@android:style/Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@style/PluginAnimationActivity</item>
</style>

<style name="PluginAnimationActivity" mce_bogus="0" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/right_in_plugin</item>
<item name="android:activityOpenExitAnimation">@anim/left_out_plugin</item>
<item name="android:activityCloseEnterAnimation">@anim/left_in_plugin</item>
<item name="android:activityCloseExitAnimation">@anim/right_out_plugin</item>
</style>


重要的四个属性:

android:activityOpenEnterAnimation

android:activityOpenExitAnimation

android:activityCloseEnterAnimation

android:activityCloseExitAnimation

我们来看看其中的一个anim:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"  >
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
android:fromYDelta="0%"
android:toYDelta="0%"
android:duration="500" />
</set>


100%、-100%、0%是什么gui?

下面给出一张形象的图助于理解:



View动画的缺陷

只能对View进行动画操作

只支持移动、缩放、旋转和淡入淡出操作

致命的缺陷,就是它只是改变了View的显示效果而已,而不会真正去改变View的属性(只是视觉动画效果,事件响应位置还在原处)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  动画