25补间动画
来源:互联网 发布:yum安装命令 编辑:程序博客网 时间:2024/05/21 09:01
- 补间动画 只需告诉系统开始形状和坐标和终点位置和形状 期间动画由系统自行补画过渡 和Flash中概念一样
- 注意补间动画哪怕移动了 其属性还是原来 比如图片A从X移动Y 那么其坐标的真实属性还是在X 也就是说只有点击X才能触发A图的点击事件
- 在res中创建一个文件anim新建对应的文件即可
xml创建属性动画
android:fillAfter=”true”在xml中设置好像不起作用
anim_alpha.xml
<?xml version="1.0" encoding="utf-8"?><alpha xmlns:android="http://schemas.android.com/apk/res/android" android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="3000" android:fillAfter="true" android:repeatCount="3" android:repeatMode="reverse" android:interpolator="@android:anim/accelerate_decelerate_interpolator" ><!-- 取值范围 0.0-1.0 android:fromAlpha="1.0" 开始的透明度 android:toAlpha="0.0" 结束的透明度 android:duration="3000" 展示的时间 android:fillAfter="true" 是否保持最后的状态 android:repeatCount="3" 重复次数 android:repeatMode="restart" 执行方法 restart:正方向 reverse:反方向 android:interpolator="@android:anim/accelerate_decelerate_interpolator" 插值器 动画执行的速率 先加速后加速 --></alpha>
anim_rotate.xml
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:pivotX="50%p" android:pivotY="50%p" android:duration="3000" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fillAfter="true" android:repeatCount="3" android:repeatMode="restart" > <!-- android:fromDegrees="0"从哪个角度开始旋转 android:toDegrees="360" 到那个角度 android:pivotX="50%p" 以谁为圆心 x 带p以父布局为参考物 不带p以自身参考物 android:pivotY="50%p" y android:duration="3000"--></rotate>
anim_scale.xml
<?xml version="1.0" encoding="utf-8"?><scale xmlns:android="http://schemas.android.com/apk/res/android" android:fromXScale="1" android:fromYScale="1" android:toXScale="2" android:toYScale="2" android:pivotX="50%" android:pivotY="25%p" android:duration="3000" > <!-- android:fromXScale="1" x轴缩放的起始比例 android:fromYScale="1" y轴缩放的起始比例 android:toXScale="2" x轴缩放的结束比例 android:toYScale="2" y轴缩放的结束比例 android:pivotX="50%" x轴的缩放中心 android:pivotY="50%" y轴的缩放中心 --></scale>
anim_set.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:fromDegrees="0" android:toDegrees="720" android:pivotX="50%" android:pivotY="50%" android:duration="3000" ></rotate> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="200" android:toYDelta="500" android:duration="3000" ></translate> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="3000" ></alpha></set>
anim_translate.xml
<?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="200" android:toYDelta="200" android:duration="3000" > <!-- android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="200" android:toYDelta="200" android:duration="3000" 起始位置 到 结束位置 --></translate>
布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.qf.sxy.tweenanimation.MainActivity"> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_alpha" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="透明"/> <Button android:id="@+id/btn_rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="旋转"/> <Button android:id="@+id/btn_scale" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="缩放"/> <Button android:id="@+id/btn_translate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="位移"/> <Button android:id="@+id/btn_set" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="集合"/> </LinearLayout> <ImageView android:id="@+id/iv" android:src="@mipmap/cyddz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ll" /></RelativeLayout>
MainActivity.java
package com.qf.sxy.tweenanimation;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.animation.AnimationUtils;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = ((ImageView) findViewById(R.id.iv)); } public void MyClick(View view) { switch (view.getId()){ case R.id.btn_alpha://透明度动画 iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_alpha)); break; case R.id.btn_rotate://旋转动画 iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_rotate)); break; case R.id.btn_scale://缩放动画 iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_scale)); break; case R.id.btn_translate://位移动画 iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_translate)); break; case R.id.btn_set://集合动画 iv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,R.anim.anim_set)); break; } }}
java代码创建属性动画
布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.qf.sxy.tweenanimation.MainActivity"> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_alpha" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="透明"/> <Button android:id="@+id/btn_rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="旋转"/> <Button android:id="@+id/btn_scale" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="缩放"/> <Button android:id="@+id/btn_translate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="位移"/> <Button android:id="@+id/btn_set" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="MyClick" android:text="集合"/> </LinearLayout> <ImageView android:id="@+id/iv" android:src="@mipmap/cyddz" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ll" /></RelativeLayout>
MainActivity.java
package com.qf.sxy.tweenanimation2;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.animation.AccelerateInterpolator;import android.view.animation.AlphaAnimation;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.RotateAnimation;import android.view.animation.ScaleAnimation;import android.view.animation.TranslateAnimation;import android.widget.ImageView;public class MainActivity extends AppCompatActivity { private ImageView iv; private Animation animation;//声明动画对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = ((ImageView) findViewById(R.id.iv)); } public void MyClick(View view) { switch (view.getId()){ case R.id.btn_alpha: //获取动画 参数1:开始的透明度 参数2;结束的透明度 animation = new AlphaAnimation(1.0f,0.0f); animation.setDuration(3000); animation.setFillAfter(true); break; case R.id.btn_rotate: /** * 旋转动画 * 参数1:从哪个角度 * 参数2:到那个角度 * 参数3:x参照物的类型 自身 还是 父布局 * 参数4:当前x坐标的值 * 参数5:y参照物的类型 自身 还是 父布局 * 参数6:当前y坐标的值 */ animation = new RotateAnimation(0, 720, Animation.RELATIVE_TO_PARENT,0.5f, Animation.RELATIVE_TO_PARENT,0.5f); animation.setDuration(5000); animation.setFillAfter(true); break; case R.id.btn_scale: animation = new ScaleAnimation(0.1f,3f,0.1f,3f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f ); animation.setDuration(3000); animation.setFillAfter(true); break; case R.id.btn_translate: animation = new TranslateAnimation(0,200,0,200); animation.setDuration(5000); animation.setFillAfter(true); animation.setInterpolator(new AccelerateInterpolator());//插值器 一直加速 break; case R.id.btn_set: animationSet(); break; } //启动动画 // iv.startAnimation(animation); } //集合动画 private void animationSet() { Animation rotate = new RotateAnimation(0,720,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); Animation alpha = new AlphaAnimation(1.0f,0.0f); // true 使用的是set默认的插值器 // false 使用自身动画的插值器 AnimationSet animationSet = new AnimationSet(false); //添加动画到集合 animationSet.addAnimation(rotate); animationSet.addAnimation(alpha); //设置动画时间 animationSet.setDuration(3000); //启动动画 iv.startAnimation(animationSet); }}
0 0
- 25补间动画
- 动画----补间动画
- Android 动画-----补间动画
- 补间动画,属性动画
- 补间动画,帧动画
- 补间动画,帧动画
- Android动画--补间动画
- Android-补间动画
- 补间(Tween)动画
- 补间动画Tween
- Animation补间动画
- 补间(Tween)动画
- 补间动画
- 补间动画
- Android-补间动画
- 补间动画
- 补间动画
- Android 补间动画
- PHP实现MVC开发: 一个简单的MVC
- 【线性规划与网络流24题 1】飞行员配对方案
- POJ-3071-Football
- 长尾狐狸(简单dp)
- Java ArrayList LinkedList
- 25补间动画
- 理解回溯法
- poj3904容斥原理
- [BZOJ3124][Sdoi2013]直径(树形dp)
- Java 之 JDK 的下载,安装,及Java环境配置教程(二)
- 关于AngularJs的ng-repeat
- 通过环境变量修改java版本不生效
- stm32 ADC全解(单次,连续DMA传输)
- LayoutInflater的inflate方法引起的listview界面布局问题