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程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面.请看下图所示: ==== ...
随机推荐
- Node.js+Express+MVC+Mysql小白创建新项目
1.打开CMD命令窗口,这一步不会的,回家休息,不要看了 2.npm install -g yo 等待时间看个人电脑情况. 如果没有npm命令,建议先安装npm ,npm安装介绍:https://d ...
- codeforces_1075_C. The Tower is Going Home
http://codeforces.com/contest/1075/problem/C 题意:一个长宽均为1e9的棋盘,n个垂直障碍在x列无限长,m个水平障碍在第y行从第x1列到x2列.可以水平和垂 ...
- OpenMP入门教程(二)
OpenMP API概述 OpenMP由三部分组成: 编译指令(19) 运行时库程序(32) 环境变量(9) 后来的API包含同样的三个组件,只是三者的数量都有所增加. 编译器指令 OpenMP编译器 ...
- 扩展 IHttpModule
上篇提到请求进入到System.Web后,创建完HttpApplication对象后会执行一堆的管道事件,然后可以通过HttpModule来对其进行扩展,那么这篇文章就来介绍下如何定义我们自己的mod ...
- chomp成功的返回值是1,chomp对参数去回车符后会改变参数的值,是传入又是传出参数。$arrow_notation = ( chomp( $unpackeing = <STDIN>) );
44 my $unpackeing; 45 my $arrow_notation = ''; 46 print "Enter name to query, enter ex ...
- What is state and props
State, in React component, is internal dataset which affects the rendering of the component. To some ...
- selenium抓取动态网页数据
1.selenium抓取动态网页数据基础介绍 1.1 什么是AJAX AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进 ...
- 关于动态添加的html元素绑定的事件不生效的解决办法
1.可以通过行内添加事件的方法,比如onclick="fn()"; 在js中写好方法名对应的方法就可以了,如果绑定方法的元素太多 2.jquery的on事件绑定 //on事件可以给 ...
- 51nod 1013 3的幂的和 - 快速幂&除法取模
题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 Konwledge Point: 快速幂:https:/ ...
- EZOJ 宝石迷阵 建图+网络流匹配
题面: 封印恶魔的地方可以看作是一个 n*m 的矩形,包含了 n*m 个祭坛,并且其 中有一些祭坛已经损坏了. 如果 i+j 为偶数,那么第 i 行第 j 列的祭坛只要没有损坏,就一定会封印有一个恶魔 ...