android动画效果

阅读更多
前几天弄alertdialog和popupwindow的时候,用到了android的动画效果,今天专门研究了一下关于android的动画效果,列出来,方便以后使用。

Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。

在附件里面我会把这两种效果的实例代码上传上来供大家下载,现在贴在方便使用的代码。

Tween动画
Alpha ---- 淡入淡出,Scale ---- 缩放效果,Translate ---- 移动效果,Rotate ---- 旋转

Frame动画
播放一组连续的图片


alpha_in.xml




    

    



scale_in.xml


    





translate_in.xml




    
    
    





rotate_in.xml




  




Frame动画
播放一组连续的图片
drawable --- drawable_anim.xml

 
 
     
     
     
     
     
     
 


import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class MainActivity extends Activity implements OnClickListener{

	private ImageView imageView,imageView2;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imageView = (ImageView) findViewById(R.id.anim_img);
		imageView2 = (ImageView) findViewById(R.id.anim_draw_img);
		
		findViewById(R.id.anim_alpha).setOnClickListener(this);
		findViewById(R.id.anim_scale).setOnClickListener(this);
		findViewById(R.id.anim_translate).setOnClickListener(this);
		findViewById(R.id.anim_rotate).setOnClickListener(this);
		findViewById(R.id.anim_drawable).setOnClickListener(this);
	}

	@Override
	public void onClick(View arg0) {
		switch (arg0.getId()) {
		case R.id.anim_alpha:
			if(imageView.getVisibility()==View.INVISIBLE){
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.alpha_in));
				imageView.setVisibility(View.VISIBLE);
			}else{
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.alpha_out));
				imageView.setVisibility(View.INVISIBLE);
			}
			break;
		case R.id.anim_scale:
			if(imageView.getVisibility()==View.INVISIBLE){
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.scale_in));
				imageView.setVisibility(View.VISIBLE);
			}else{
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.scale_out));
				imageView.setVisibility(View.INVISIBLE);
			}
			break;
		case R.id.anim_translate:
			if(imageView.getVisibility()==View.INVISIBLE){
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.translate_in));
				imageView.setVisibility(View.VISIBLE);
			}else{
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.translate_out));
				imageView.setVisibility(View.INVISIBLE);
			}
			break;
		case R.id.anim_rotate:
			if(imageView.getVisibility()==View.INVISIBLE){
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.rotate_in));
				imageView.setVisibility(View.VISIBLE);
			}else{
				imageView.setAnimation(AnimationUtils
						.loadAnimation(this, R.anim.rotate_out));
				imageView.setVisibility(View.INVISIBLE);
			}
			break;
		case R.id.anim_drawable:
			imageView2.setBackgroundResource(R.drawable.drawable_anim);
			AnimationDrawable animationDrawable = (AnimationDrawable) imageView2.getBackground();
//			animationDrawable.addFrame(getResources().getDrawable(R.drawable.pq1), 50);
//			animationDrawable.addFrame(getResources().getDrawable(R.drawable.pq2), 50);
//			animationDrawable.addFrame(getResources().getDrawable(R.drawable.pq3), 50);
			animationDrawable.start();
			break;
		default:
			break;
		}
	}

}


下面会有一个实例
  • MyAnimation.zip (2.4 MB)
  • 下载次数: 8

你可能感兴趣的:(android动画)