首页 > 代码库 > android中的动画之变化动画事例1
android中的动画之变化动画事例1
前面我已经说了变换动画,并且变换动画中分为4种情况:透明度动画、旋转动画、缩放动画、位移动画。
今天我来说说关于使用变换动画中的4种类型来实现它们的糅合。
我在这里主要使用了一个Animation对象中的一个监听方法--setAnimationListener。这个方法里面只有一个参数,安卓api给出的这个方法的完整形态--
void android.view.animation.Animation.setAnimationListener(AnimationListener listener)。从中我们可以知道,这个参数需要传递一个AnimationListener 类型的参数,我们只需要使用匿名内部类来即可(这里我的要求简单,所以使用的是匿名内部类)。
当我们使用了匿名内部类后,会出现三个方法。代码如下
JAVA代码
1 animation1.setAnimationListener(new AnimationListener() { 2 //当动画开始时调用 3 public void onAnimationStart(Animation animation) { 4 // TODO Auto-generated method stub 5 6 } 7 //当动画重复时调用 8 public void onAnimationRepeat(Animation animation) { 9 // TODO Auto-generated method stub10 11 }12 //当动画开始时调用13 public void onAnimationEnd(Animation animation) {14 // TODO Auto-generated method stub15 imageview.startAnimation(animation2);16 }17 });
其中方法animation1和animation2都是Animation对象。
看到这里我们应该怎么实现了吧,话不多说,直接贴完整的代码
anim文件下的xml代码
1.alpha.xml代码(animation1加载的)
1 <?xml version="1.0" encoding="utf-8"?>2 <set xmlns:android="http://schemas.android.com/apk/res/android">3 <alpha 4 android:duration="1000"5 android:fromAlpha="0.1"6 android:toAlpha="1.0"7 />8 </set>
2.translate.xml代码
1 <?xml version="1.0" encoding="utf-8"?> 2 <set xmlns:android="http://schemas.android.com/apk/res/android" > 3 4 <translate 5 android:duration="1000" 6 android:fromXDelta="10" 7 android:fromYDelta="10" 8 android:toXDelta="100" 9 android:toYDelta="100" />10 11 </set>
布局文件代码
xml代码
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="com.example.Tween_Animation.Alpha_MainActivity" > 7 8 <Button 9 android:id="@+id/button_scale"10 android:layout_width="fill_parent"11 android:layout_height="wrap_content"12 android:text="@string/button_stringScaleAnimation" />13 14 <LinearLayout15 android:gravity="center"16 android:layout_width="fill_parent"17 android:layout_height="fill_parent"18 android:orientation="vertical" >19 20 <ImageView21 android:id="@+id/imageview_scale"22 android:layout_width="wrap_content"23 android:layout_height="wrap_content"24 android:src="@drawable/ic_launcher" />25 </LinearLayout>26 27 </LinearLayout>
activity代码
JAVA代码
1 package com.example.Demo1; 2 3 4 5 import com.example.androidanimation.R; 6 7 import android.app.Activity; 8 import android.os.Bundle; 9 import android.view.View;10 import android.view.View.OnClickListener;11 import android.view.animation.Animation;12 import android.view.animation.Animation.AnimationListener;13 import android.view.animation.AnimationUtils;14 import android.widget.Button;15 import android.widget.ImageView;16 /*17 * 组合动画18 * 先播放一个动画然后再播放一个动画19 */20 public class MainActivity extends Activity implements OnClickListener{21 private Button button = null;22 private ImageView imageview = null;23 24 protected void onCreate(Bundle savedInstanceState) {25 super.onCreate(savedInstanceState);26 setContentView(R.layout.activity_main);27 button = (Button) findViewById(R.id.button_scale);28 imageview = (ImageView) findViewById(R.id.imageview_scale);29 button.setText("组合动画1");30 button.setOnClickListener(this);31 }32 public void onClick(View v) {33 Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.alpha);34 imageview.startAnimation(animation1);35 final Animation animation2 = AnimationUtils.loadAnimation(this, R.anim.translate);36 animation1.setAnimationListener(new AnimationListener() {37 //当动画开始时调用38 public void onAnimationStart(Animation animation) {39 // TODO Auto-generated method stub40 41 }42 //当动画重复时调用43 public void onAnimationRepeat(Animation animation) {44 // TODO Auto-generated method stub45 46 }47 //当动画开始时调用48 public void onAnimationEnd(Animation animation) {49 // TODO Auto-generated method stub50 imageview.startAnimation(animation2);51 }52 });53 }54 }
这里只是实现了两种类型的动画来完成效果,其实我们可以多种多样,看自己的需要了。
android中的动画之变化动画事例1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。