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>
Android插屏动画效果的更多相关文章
- Android ViewPager 动画效果
		
找到个不错的开源项目:https://github.com/jfeinstein10/JazzyViewPager Android ViewPager 动画效果
 - android Animation 动画效果介绍
		
Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动 ...
 - android anim 动画效果(转)
		
动画效果编程基础--AnimationAndroid 动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 ...
 - android anim 动画效果
		
动画效果编程基础--AnimationAndroid 动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效 ...
 - Android View动画效果—透明效果,旋转效果(二)
		
一:动画效果 方法一:动画效果用AlphaAnimation类.直接加入 AlphaAnimation aa = new AlphaAnimation(0,1); //设置透明度 aa.setDura ...
 - Android Animation动画效果简介
		
AlphaAnimation 淡入淡出动画 <alpha>A fade-in or fade-out animation. Represents an AlphaAnimation. a ...
 - Android 使用动画效果后的控件位置处理 类似系统通知栏下拉动画
		
Android的动画的使用,请参考.Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件 ...
 - 【Android开发日记】之基础篇(二)——Android的动画效果
		
什么是动画,动画的本质是通过连续不断地显示若干图像来产生“动”起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉)每隔若干 ...
 - Android 吸入动画效果详解
		
1,背景 吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面.请看下图所示: ==== ...
 
随机推荐
- Linux之基础命令——文件操作
			
ls(显示指定工作目录下的内容) -a 显示所有文件及目录 包括隐藏文件 -l 除文件名称外,还会将文件类型.权限.拥有者.文件大小等信息详细列出[可以ll简写] -r 将文件以相反次序显示(默认是a ...
 - app dcloud 打包公用证书
			
Android平台云端打包使用的DCloud公用证书 分类:HTML5+ 5+App开发 HBuilder|HBuilderX应用云端打包Android平台默认使用的DCloud公用证书,其信息如下: ...
 - AutoIt简单使用
			
以上是自己在公司做培训的PPT首页,其实在线的中文参考文档很全面,很值得学习的.
 - mysql5大引擎之间的区别和优劣之分
			
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...
 - CAD参数绘制圆弧(网页版)
			
在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧. 主要用到函数说明: _DMxDrawX::DrawArc2 由圆弧上的三点绘制一个圆弧.详细说明如 ...
 - caffe实现自己的层
			
http://blog.csdn.net/xizero00/article/details/52529341 将这篇博客所讲进行了实现 1.LayerParameter也在caffe.proto文件中 ...
 - vue相关技术
			
vuejs2.0:渐进式JavaScript框架,易用.灵活.高效,似乎任何规模的应用都适用. element:基于vuejs2.0的ui组件库. vue-router:一般单页面应用spa都要用到的 ...
 - PHP-碎片知识  $_SERVER['argv']
			
1.cli模式(命令行)下,第一个参数$_SERVER['argv'][0]是脚本名,其余的是传递给脚本的参数 2.web网页模式下 在web页模式下必须在php.ini开启register_argc ...
 - php基础查找算法
			
1.顺序查找 function line_search($array,$tar) { if(!is_array($array) || count($array) < 1) return fals ...
 - run loop
			
Objective-C之run loop详解 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/9237973 转载请注明出 ...