公司研发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插屏动画效果的更多相关文章

  1. Android ViewPager 动画效果

    找到个不错的开源项目:https://github.com/jfeinstein10/JazzyViewPager Android ViewPager 动画效果   

  2. android Animation 动画效果介绍

    Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动 ...

  3. android anim 动画效果(转)

    动画效果编程基础--AnimationAndroid      动画类型      Android的animation由四种类型组成      XML中    alpha    渐变透明度动画效果   ...

  4. android anim 动画效果

    动画效果编程基础--AnimationAndroid       动画类型       Android的animation由四种类型组成       XML中    alpha    渐变透明度动画效 ...

  5. Android View动画效果—透明效果,旋转效果(二)

    一:动画效果 方法一:动画效果用AlphaAnimation类.直接加入 AlphaAnimation aa = new AlphaAnimation(0,1); //设置透明度 aa.setDura ...

  6. Android Animation动画效果简介

    AlphaAnimation 淡入淡出动画  <alpha>A fade-in or fade-out animation. Represents an AlphaAnimation. a ...

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

    Android的动画的使用,请参考.Android的动画,在设计方面,我有点不太理解,觉得这样搞很怪,因为在控件动画后,即使设置了停留在动画结束时的位置,我们也确实看到了控件停在那个位置,但其实该控件 ...

  8. 【Android开发日记】之基础篇(二)——Android的动画效果

          什么是动画,动画的本质是通过连续不断地显示若干图像来产生“动”起来的效果.比如说一个移动的动画,就是在一定的时间段内,以恰当的速率(起码要12帧/秒以上,才会让人产生动起来的错觉)每隔若干 ...

  9. Android 吸入动画效果详解

    1,背景 吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面.请看下图所示: ==== ...

随机推荐

  1. Node.js+Express+MVC+Mysql小白创建新项目

    1.打开CMD命令窗口,这一步不会的,回家休息,不要看了 2.npm install -g yo  等待时间看个人电脑情况. 如果没有npm命令,建议先安装npm ,npm安装介绍:https://d ...

  2. codeforces_1075_C. The Tower is Going Home

    http://codeforces.com/contest/1075/problem/C 题意:一个长宽均为1e9的棋盘,n个垂直障碍在x列无限长,m个水平障碍在第y行从第x1列到x2列.可以水平和垂 ...

  3. OpenMP入门教程(二)

    OpenMP API概述 OpenMP由三部分组成: 编译指令(19) 运行时库程序(32) 环境变量(9) 后来的API包含同样的三个组件,只是三者的数量都有所增加. 编译器指令 OpenMP编译器 ...

  4. 扩展 IHttpModule

    上篇提到请求进入到System.Web后,创建完HttpApplication对象后会执行一堆的管道事件,然后可以通过HttpModule来对其进行扩展,那么这篇文章就来介绍下如何定义我们自己的mod ...

  5. chomp成功的返回值是1,chomp对参数去回车符后会改变参数的值,是传入又是传出参数。$arrow_notation = ( chomp( $unpackeing = <STDIN>) );

    44 my $unpackeing;     45 my $arrow_notation = '';     46 print "Enter  name to query, enter ex ...

  6. What is state and props

    State, in React component, is internal dataset which affects the rendering of the component. To some ...

  7. selenium抓取动态网页数据

    1.selenium抓取动态网页数据基础介绍 1.1 什么是AJAX AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进 ...

  8. 关于动态添加的html元素绑定的事件不生效的解决办法

    1.可以通过行内添加事件的方法,比如onclick="fn()"; 在js中写好方法名对应的方法就可以了,如果绑定方法的元素太多 2.jquery的on事件绑定 //on事件可以给 ...

  9. 51nod 1013 3的幂的和 - 快速幂&除法取模

    题目地址:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 Konwledge Point: 快速幂:https:/ ...

  10. EZOJ 宝石迷阵 建图+网络流匹配

    题面: 封印恶魔的地方可以看作是一个 n*m 的矩形,包含了 n*m 个祭坛,并且其 中有一些祭坛已经损坏了. 如果 i+j 为偶数,那么第 i 行第 j 列的祭坛只要没有损坏,就一定会封印有一个恶魔 ...