zoukankan      html  css  js  c++  java
  • Android插屏动画效果

    公司研发SDK,须要类似有米插屏的动画效果,研究了下,写了一个DEMO,凝视非常具体了。

    歧视

    <span style="font-size:24px;">package com.example.animationactivity;
    
    import android.animation.Animator;
    import android.animation.AnimatorSet;
    import android.animation.ObjectAnimato
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.WindowManager;
    import android.view.animation.AlphaAnimation;
    import android.view.animation.Animation;
    import android.view.animation.AnimationSet;
    import android.view.animation.AnimationUtils;
    import android.view.animation.ScaleAnimation;
    import android.view.animation.TranslateAnimation;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.RelativeLayout;
    
    @SuppressLint("NewApi")
    public class MainActivity extends ActionBarActivity {
    	private Button button;
    	ImageView image;
    	private int a = 1;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		button = (Button) findViewById(R.id.button);
    
    		image = new ImageView(getApplicationContext());
    		image.setImageDrawable(getResources().getDrawable(R.drawable.bg1));
    		RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    				(int) (getWidth(getApplicationContext()) * 0.8),
    				(int) (getHeight(getApplicationContext()) * 0.8));
    		params.addRule(RelativeLayout.CENTER_IN_PARENT);
    		RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.parent);
    		image.setLayoutParams(params);
    		relativeLayout.addView(image); 
            /**
    		// 动画1
    		final Animation animation = new TranslateAnimation(-600f, 0f, 0f, 0f);
    
    		final Animation scaleAnimation = new ScaleAnimation(0.2f, 1f, 0.2f, 1f);
    
    		final AnimationSet animationSet = new AnimationSet(true);
    		animationSet.addAnimation(scaleAnimation);
    		animationSet.addAnimation(animation);
    		animationSet.setDuration(1000);
    
    		Animation translationanimation = new TranslateAnimation(0f, 1800f, 0f,
    				0f);
    
    		Animation scaleAnimation2 = new ScaleAnimation(1f, 0.4f, 1f, 0.4f);
    		final AnimationSet animationSet2 = new AnimationSet(true);
    		animationSet2.addAnimation(translationanimation);
    		animationSet2.addAnimation(scaleAnimation2);
    		animationSet2.setDuration(1000);
    
    		animationSet2.setFillAfter(true);
           **/
    		button.setOnClickListener(new OnClickListener() {
    
    			@SuppressLint("NewApi")
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				// 自己写的
    				/**
    				 * if (a == 1) { a = 2; image.startAnimation(animationSet); }
    				 * else { a = 1; image.startAnimation(animationSet2); }
    				 **/
    
    				// 从有米那里拷过来的动画
    				if (a == 1) {
    					EnterAnimation(image, getApplicationContext());
    					a = 2;
    				} else {
    					BackAnimation(image, getApplicationContext());
    					a = 1;
    				}
    			}
    		});
    	}
    
    	// 获取屏幕的宽度
    	public static int getWidth(Context context) {
    		WindowManager windowManager = (WindowManager) context
    				.getSystemService(Context.WINDOW_SERVICE);
    		int width = windowManager.getDefaultDisplay().getWidth();
    		return width;
    
    	}
    
    	// 获取屏幕的高度
    	public int getHeight(Context context) {
    		WindowManager windowManager = (WindowManager) context
    				.getSystemService(Context.WINDOW_SERVICE);
    		int height = windowManager.getDefaultDisplay().getHeight();
    		return height;
    
    	}
    
    	// 出去动画
    
    	public static void BackAnimation(ImageView paramView, Context context) {
    		int f = (getWidth(context) - paramView.getWidth()) / 2;
    
    		paramView.setPivotX(paramView.getWidth() / 2);
    		paramView.setPivotY(paramView.getHeight() / 2);
    		ObjectAnimator localObjectAnimator1 = ObjectAnimator.ofFloat(paramView,
    				"scaleX", new float[] { 1.0F, 0.8F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator2 = ObjectAnimator.ofFloat(paramView,
    				"scaleY", new float[] { 1.0F, 0.8F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator3 = ObjectAnimator.ofFloat(paramView,
    				"alpha", new float[] { 1.0F, 0.7F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator4 = ObjectAnimator.ofFloat(paramView,
    				"X", new float[] { f, getWidth(context) }).setDuration(800L);
    		ObjectAnimator localObjectAnimator5 = ObjectAnimator.ofFloat(paramView,
    				"scaleX", new float[] { 0.8F, 1.0F }).setDuration(400L);
    		localObjectAnimator5.setStartDelay(400L);
    		ObjectAnimator localObjectAnimator6 = ObjectAnimator.ofFloat(paramView,
    				"scaleY", new float[] { 0.8F, 1.0F }).setDuration(400L);
    		localObjectAnimator6.setStartDelay(400L);
    		ObjectAnimator localObjectAnimator7 = ObjectAnimator.ofFloat(paramView,
    				"alpha", new float[] { 0.7F, 1.0F }).setDuration(400L);
    		localObjectAnimator7.setStartDelay(400L);
    		AnimatorSet localAnimatorSet = new AnimatorSet();
    		localAnimatorSet.playTogether(new Animator[] { localObjectAnimator1,
    				localObjectAnimator2, localObjectAnimator3,
    				localObjectAnimator4, localObjectAnimator5,
    				localObjectAnimator6, localObjectAnimator7 });
    		localAnimatorSet.start();
    
    	}
    
    	// 进入动画
    	public static void EnterAnimation(ImageView paramView, Context context) {
    		// 屏幕的宽度减去动画的宽度。就是图片要移动的距离
    		int f = (getWidth(context) - paramView.getWidth()) / 2;
    		paramView.setPivotX(paramView.getWidth() / 2);
    		paramView.setPivotY(paramView.getHeight() / 2);
    		ObjectAnimator localObjectAnimator1 = ObjectAnimator.ofFloat(paramView,
    				"scaleX", new float[] { 1.0F, 0.8F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator2 = ObjectAnimator.ofFloat(paramView,
    				"scaleY", new float[] { 1.0F, 0.8F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator3 = ObjectAnimator.ofFloat(paramView,
    				"alpha", new float[] { 1.0F, 0.7F }).setDuration(1L);
    		ObjectAnimator localObjectAnimator4 = ObjectAnimator.ofFloat(paramView,
    				"X", new float[] { -paramView.getWidth(), f })
    				.setDuration(800L);
    		ObjectAnimator localObjectAnimator5 = ObjectAnimator.ofFloat(paramView,
    				"scaleX", new float[] { 0.8F, 1.0F }).setDuration(400L);
    		localObjectAnimator5.setStartDelay(400L);
    		ObjectAnimator localObjectAnimator6 = ObjectAnimator.ofFloat(paramView,
    				"scaleY", new float[] { 0.8F, 1.0F }).setDuration(400L);
    		localObjectAnimator6.setStartDelay(400L);
    		ObjectAnimator localObjectAnimator7 = ObjectAnimator.ofFloat(paramView,
    				"alpha", new float[] { 0.7F, 1.0F }).setDuration(400L);
    		localObjectAnimator7.setStartDelay(400L);
    		AnimatorSet localAnimatorSet = new AnimatorSet();
    		localAnimatorSet.playTogether(new Animator[] { localObjectAnimator1,
    				localObjectAnimator2, localObjectAnimator3,
    				localObjectAnimator4, localObjectAnimator5,
    				localObjectAnimator6, localObjectAnimator7 });
    		localAnimatorSet.start();
    
    	}
    
    }</span><span style="font-size:18px;">
    </span>

  • 相关阅读:
    windows cmd 中获取当前时间并输出此时间
    使用windows批处理来让git每日自动更新代码
    拒绝垃圾文章 在 ejabberd 中使用 MySQL
    IOS调试lldb命令常用,po,
    IOS 多语言本地化 完美解决方案
    [转]Xcode封装.Bundle文件
    百度地图SDK引用问题 Symbol(s) not found for architecture armv64
    loaded the "ViewController" nib but the view outlet was not set. 处理方式
    initWithFrame 和 initWithCoder
    使用IB_DESIGNABLE与IBInspectable特性实现可在视图编辑器的功能栏中设置
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6846790.html
Copyright © 2011-2022 走看看