公司研发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. System.Web.Optimization找不到引用怎么办

    新建Bootstap for MVC5出现的问题, 通过打开VS 工具->NUGET程序包管理器->控制台 输入以下命令进行完成,一切完成 Install-Package Microsof ...

  2. 迅为IMX6UL开发板

    迅为iMX6UL开发板采用核心板加底板形式,核心板使用邮票孔方式连接,牢固耐用.处理器ARM®Cortex®-A7内核,运行速度高达528 MHz.512MDDR内存,8G EMMC存储,板截双网口, ...

  3. CAD参数绘制直线(com接口)

    用户可以在CAD控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE ...

  4. 08C++函数

    函数 4.1 概述 一个较大的程序不可能完全由一个人从头至尾地完成,更不可能把所有的内容都放在一个主函数中.为了便于规划.组织.编程和调试,一般的做法是把一个大的程序划分为若干个程序模块(即程序文件) ...

  5. 11-2 numpy/pandas/matplotlib模块

    目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 nump ...

  6. Android Bitmap详细介绍(3)

    package com.testbitmapscale; import java.io.File; import java.io.FileInputStream; import java.io.Fil ...

  7. java关于时间的相关操作

    /** * 获取当天时间零点 * @return */ public Date gettoday(){ SimpleDateFormat sdf = new SimpleDateFormat(&quo ...

  8. python 3 廖雪峰博客笔记(三) 命令行模式与交互模式

    python 的代码一般保存为 .py结尾的文本文件格式 比如 add.py 里写下如下内容 100 + 200 执行 add.py有两种方式: 1. 命令行方式:将python代码写入脚本中执行 p ...

  9. 关于统一代码规范ResultBean<T>

    之前看了一篇文章,是java团长的一篇代码规范的文章,很有启发.统一返回格式确实给开发带来方便和美感, 有时候Colltroller返回String或者什么Map,list什么的,虽然都转成json返 ...

  10. 零基础入门学习Python(33)--异常处理:你不可能总是对的2

    知识点 异常处理 捕捉异常可以使用try/except语句. try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理. 如果你不想在异常发生时结束你的程序,只需 ...