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>
时间: 2024-10-11 00:32:48

Android插屏动画效果的相关文章

android anim 动画效果(转)

动画效果编程基础--AnimationAndroid      动画类型      Android的animation由四种类型组成      XML中    alpha    渐变透明度动画效果    scale    渐变尺寸伸缩动画效果    translate    画面转换位置移动动画效果    rotate    画面转移旋转动画效果        JavaCode中    AlphaAnimation    渐变透明度动画效果    ScaleAnimation    渐变尺寸伸缩

写一个android带动画效果的TabHost(类似微博客户端的切换效果)

先上图: 这个Layout是: <?xml version="1.0" encoding="UTF-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" andro

Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画

Android的动画的使用,请参考.Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件的真实位置还是在原来动画前的那里.举个例子,如果有个Button,你给它设置了动画,让它移动到其他位置,当移动完成后,你会发现,点击Button没有任何效果,而在Button原来的位置,就是动画前的位置点击,明明没有任何控件,却看到了点击Button的效果.不知道Google为什么要这样设计.解决思

android anim 动画效果

动画效果编程基础--AnimationAndroid       动画类型       Android的animation由四种类型组成       XML中    alpha    渐变透明度动画效果    scale    渐变尺寸伸缩动画效果    translate    画面转换位置移动动画效果    rotate    画面转移旋转动画效果          JavaCode中    AlphaAnimation    渐变透明度动画效果    ScaleAnimation    渐

Android View动画效果—透明效果,旋转效果

一:动画效果 方法一:动画效果用AlphaAnimation类,直接添加 AlphaAnimation aa = new AlphaAnimation(0,1); //设置透明度 aa.setDuration(2000); //设置时间 view.startAnimation(aa); 方法二:应用xml方式 建立一个xml为aa.xml文件 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:a

【Android的从零单排开发日记】之入门篇(十六)——Android的动画效果

      什么是动画,动画的本质是通过连续不断地显示若干图像来产生“动”起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉)每隔若干时间在屏幕上更新一次位置.游戏中的动画效果也是由此而来.同样还有其他属性变更所引起的动画效果,从数学的角度来看,包括:(1)平移(2)旋转(3)缩放(4)透明度.当然这些属性可以组合起来使用,来达到更绚丽的画面.但是不论什么样的组合方式,我们都可以统一用Matirx运算来实现,从技术实现的角度来讲,

Android带动画效果的弹窗

在网络加载数据的时候通常需要很多时间,这个时候程序里面经常需要写一个提示正在加载数据的弹窗,这篇文章用两种方式实现带动画效果的Dialog:帧动画实现和GIF动态图实现,它们都能达到动画的效果 第一种.帧动画实现 自定义一个Dialog,先看一下布局文件dialog_animation.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width=

Android - LayoutAnimation 动画效果 - 示例

参考链接: http://blog.csdn.net/imdxt1986/article/details/6952943 为控件设置动画效果 1.可以在xml文件中设置: 2.可以在java代码中设置. 首先,在 res/anim 文件夹下新建slide_right.xml ,如下: <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android

android animation动画效果的两种实现方式

animation动画效果两种实现方式 注:此例为AlphaAnimation效果,至于其他效果,换一下对象即可. 1..java文件 代码控制 添加并且开始animation动画 //添加动画效果 AlphaAnimation animation = new AlphaAnimation(0.3f, 1.0f); //设置次效果的持续时间 animation.setDuration(2000); //设置动画的监听事件 animation.setAnimationListener(new An