Android电视关闭的动画效果

老式电视机关闭的时候画面一闪消失的那个效果: 

 

 

首先创建一个TVOffAnimation继承于Animation: 

import android.graphics.Matrix;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.Transformation;

public class TVOffAnimation extends Animation {

	private int halfWidth;
	private int halfHeight;

	@Override
	public void initialize(int width, int height, int parentWidth,
			int parentHeight) {

		super.initialize(width, height, parentWidth, parentHeight);
		setDuration(500);
		setFillAfter(true);
		//保存View的中心点
		halfWidth = width / 2;
		halfHeight = height / 2;
		setInterpolator(new AccelerateDecelerateInterpolator());

	}

	@Override
	protected void applyTransformation(float interpolatedTime, Transformation t) {

		final Matrix matrix = t.getMatrix();
		if (interpolatedTime < 0.8) {
			matrix.preScale(1+0.625f*interpolatedTime, 1-interpolatedTime/0.8f+0.01f,halfWidth,halfHeight);
		}else{
			matrix.preScale(7.5f*(1-interpolatedTime),0.01f,halfWidth,halfHeight);
		}
	}
}

interpolatedTime表示的是当前动画的间隔时间 范围是0-1 

那么横向来讲前80%的时间我们要横向拉伸到150%,纵向是直接减小,最后只留一条线。 
后20%的时间里我们要横向从150%压缩至0%,纵向保持不变就好了,当横向为0的时候就全部消失了。 
可能大家对于1+0.625f*interpolatedTime, 1-interpolatedTime/0.8f+0.01f,7.5f*(1-interpolatedTime),0.01f 这4个值比较疑惑,其实很简单,这是一个一次函数的函数值。 

然后在activity中直接可以用了 

View img = findViewById(R.id.imageView);
button.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				img.startAnimation(new TVOffAnimation());
			}
		});
时间: 2024-11-15 21:43:51

Android电视关闭的动画效果的相关文章

Android实现一种动画效果,从左到右慢慢的显示一张完整的图片

问题描述 Android实现一种动画效果,从左到右慢慢的显示一张完整的图片,我试过了Animation,没有做出来.有没有哪位大神帮忙解决下,万分感激 解决方案 解决方案二:改变坐标就行啊坐第一个沙发,接分咯解决方案三:怎么改变坐标,我不会,你能给个demo吗?解决方案四:例子在哪啊要看实际的东西解决方案五:可以试下ClipDrawable解决方案六:publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(Bun

Android实现Flip翻转动画效果_Android

本文实例讲述了Android实现Flip翻转动画效果的方法,分享给大家供大家学习借鉴. 具体实现代码如下: LinearLayout locationLL = (LinearLayout) findViewById(R.id.locationLL); LinearLayout baseLL = (LinearLayout) findViewById(R.id.baseLL); private void flipit() { Interpolator accelerator = new Accel

Android Activity跳转动画效果

Activity的跳转动画在5.0的时候做了一个重大的突破,下面来看一下吧 1.5.0之前的overridePendingTransition 相信大家对OverridePendingTransition还是很熟悉的,使用方法也是很简单就是 //fade_in是第二个界面的进入动画,fade_out是第一个界面退出动画,不想动画传入0  overridePendingTransition(R.anim.fade_in,R.anim.fade_out); fade_in : <?xml versi

Android实现Flip翻转动画效果

本文实例讲述了Android实现Flip翻转动画效果的方法,分享给大家供大家学习借鉴. 具体实现代码如下: LinearLayout locationLL = (LinearLayout) findViewById(R.id.locationLL); LinearLayout baseLL = (LinearLayout) findViewById(R.id.baseLL); private void flipit() { Interpolator accelerator = new Accel

Android实现创意LoadingView动画效果_Android

Android上的热火锅煮萝卜蔬菜的Loading动画效果. 这是一个锅煮萝卜的Loading动画,效果仿照自之前IOS上看到的一个效果,觉得挺有意思,就移植过来了,在此完成了Dialog的样式,方便使用者作为LoadingView去使用. 关键性代码: package yellow5a5.demo.boilingloadingview.View; import android.animation.Animator; import android.animation.AnimatorListen

Android 实现蘑菇街购物车动画效果

转自:http://blog.csdn.net/wangjinyu501/article/details/38400479   使用过蘑菇街的用户基本上都知道有一个加入购物车的动画效果,此处不具体描述想知道的可以去下载体验一下. 1.思路   目前想到两种方式实现这种效果,一是使用Tween动画,直截了当的进行一个移动,蘑菇街就是使用这样的方法.二是使用WindowManager创建一个View,然后对这个View进行移动. 2.实现   本文先用方式一方法实现,之后会用方式二方法实现.   方

Android布局变化时动画效果的现实(二)

MainActivity如下: package wy.test; import android.animation.AnimatorInflater; import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.app.Activity; import android.content.Context; import android.os.Bundle; imp

基于JS实现Android,iOS一个手势动画效果_javascript技巧

废话不多说了,先给大家展示下效果图: 这是iOS下的效果,android下完全一致.通过do_GestureView组件和do_Animation组件,deviceone能很容易实现复杂的跨平台纯原生动画效果,这个示例就是通过手势控制图片上下动画滑动实现开合效果,还支持声音效果. 下面是主要的代码 //index.ui.js var do_Animator1 = mm("do_Animator"); do_Animator1.append(500, { y: -1334, curve:

Android布局变化时动画效果的现实(一)

MainActivity如下: package cc.test; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayo