Android Developer URL:http://developer.android.com/guide/topics/graphics/prop-animation.html

详细细节请参考上文

1》布局文件activity_main.xml,代码如下(很简单只有一个按钮而已):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/rootRelativeLayout"android:layout_width="match_parent"android:layout_height="match_parent" ><Buttonandroid:id="@+id/start_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Start" /></RelativeLayout>

2》动画更新的监听器

package com.demo.animationlistener;import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.util.Log;
import android.view.View;public class AnimatorUpdateListenerClass implements AnimatorUpdateListener {private View view;public AnimatorUpdateListenerClass() {// TODO Auto-generated constructor stub}public AnimatorUpdateListenerClass(View view) {// TODO Auto-generated constructor stubthis.view = view;}@Overridepublic void onAnimationUpdate(ValueAnimator animation) {// TODO Auto-generated method stubview.setTranslationY((Float) animation.getAnimatedValue());Log.i("CXC", "###onAnimationUpdate()--getAnimatedValue():"+ (Float) animation.getAnimatedValue());}}

3》监听动画行为的监听器

package com.demo.animationlistener;import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;/*** 动画监听器类* */
@SuppressLint("NewApi")
public class AnimatorListenerClass implements AnimatorListener {private View view;public AnimatorListenerClass() {// TODO Auto-generated constructor stub}public AnimatorListenerClass(View view) {// TODO Auto-generated constructor stubthis.view = view;}@Overridepublic void onAnimationEnd(Animator animation) {// TODO Auto-generated method stubLog.i("CXC", "---onAnimationEnd+++++");// 得到该控件的父控件ViewGroup parentViewGroup = (ViewGroup) view.getParent();if (parentViewGroup != null) {// 从父控件中删除该控件parentViewGroup.removeView(view);Log.i("CXC", "----delete view from parent success ++++");}}@Overridepublic void onAnimationCancel(Animator animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animator animation) {// TODO Auto-generated method stubLog.i("CXC", "---onAnimationRepeat++++");}@Overridepublic void onAnimationStart(Animator animation) {// TODO Auto-generated method stubLog.i("CXC", "---onAnimationStart++++");view.setVisibility(View.VISIBLE);}}

4》MainActivity.java

package com.demo.activity;import com.demo.animationlistener.AnimatorListenerClass;
import com.demo.animationlistener.AnimatorUpdateListenerClass;
import com.demo.animationtest.R;
import com.demo.animationtest.R.color;import android.animation.ValueAnimator;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.LinearInterpolator;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;public class MainActivity extends Activity {// 声明控件private ViewGroup rootViewGroup;private Button start_btn;// 手机屏幕大小private float mWindowHeight;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}// 初始化操作private void init() {// 得到控件rootViewGroup = (ViewGroup) findViewById(R.id.rootRelativeLayout);start_btn = (Button) findViewById(R.id.start_btn);mWindowHeight = getWindowManager().getDefaultDisplay().getHeight();Log.i("CXC", "----mWindowHeight:" + mWindowHeight);// 设置动画的刷新时间--不一定严格按指定的时间做。ValueAnimator.setFrameDelay(200L);// 注册事件start_btn.setOnClickListener(myButtOnClickListener);}OnClickListener myButtOnClickListener = new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubLog.i("CXC", "myButtonClickListener--click");switch (v.getId()) {case R.id.start_btn:startButtonClick();break;default:break;}}};// Just for testint index = 0;public void startButtonClick() {ImageView s7_iv = new ImageView(getApplicationContext());switch (index % 3) {case 0:s7_iv.setBackgroundColor(Color.parseColor("#ff0000"));break;case 1:s7_iv.setBackgroundColor(Color.parseColor("#00ff00"));break;case 2:s7_iv.setBackgroundColor(Color.parseColor("#0000ff"));break;default:break;}index++;// s7_iv.setBackgroundColor(Color.parseColor("#ff0000"));s7_iv.setVisibility(View.GONE);// 将该view设置为在其父布局中水平居中RelativeLayout.LayoutParams imgViewLayoutParams = new RelativeLayout.LayoutParams(40, 300);imgViewLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);// 将创建的控件添加到Activity中rootViewGroup.addView(s7_iv, imgViewLayoutParams);// 指定垂直移动的范围ValueAnimator mValueAnimator = ValueAnimator.ofFloat(0,mWindowHeight - 500);// 线性变化,即匀速mValueAnimator.setInterpolator(new LinearInterpolator());Log.i("CXC", "----s7_iv.getHeight:" + s7_iv.getHeight());mValueAnimator.setTarget(s7_iv);mValueAnimator.addListener(new AnimatorListenerClass(s7_iv));mValueAnimator.addUpdateListener(new AnimatorUpdateListenerClass(s7_iv));mValueAnimator.setDuration(5000).start();}
}

5》运行效果:

6》log如下:

Android 动画(三)--属性动画相关推荐

  1. 属性动画Android动画,Android动画(三)属性动画Animator与Interpolator

    概述 继上一篇,Android中的视图动画和帧动画可以实现大部分的Android中的动画需求,但是有一个缺点,就是其事件响应区域并没有发生变化,这时候出现了属性动画完全弥补了这个缺点 属性动画结构 可 ...

  2. Android -- 三种动画(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画 一:帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单,总 ...

  3. Android的三种动画详解(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画. 1.帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单, ...

  4. Android 三种动画 (帧动画 、补间动画、属性动画)

    1.帧动画 帧动画是依次展示n张静态图片,造成动画的错觉,类似看视频一样. 使用方式 在drawable目录下定义XML文件,根节点为animation-list,然后放入定义更好的图片 onesho ...

  5. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  6. android 属性动画还原,属性动画和补间动画

    动画的分类 今天我们将会探讨动画的学习,Android的动画分成三类 1. Tween Animation(补间动画.视图动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即 ...

  7. Android开发—三种动画实现原理及使用

    Android动画目前分为三种: Frame Animation 帧动画,通过顺序播放一系列图像从而产生动画效果,.图片过多时容易造成OOM(Out Of Memory内存用完)异常. Tween A ...

  8. android属性动画替换逐帧动画,Android 动画:逐帧动画,补间动画和属性动画

    1.三种动画的介绍 现在 Android 常用的动画有三种: 逐帧动画,补间动画和属性动画: FrameAnimation(逐帧动画):将多张图片组合起来进行播放,很多 App 的加载动画是采用这种方 ...

  9. Android自定义动画三-SVG动画

    Android自定义动画三-SVG动画 本篇文章主要是对SVG的一个介绍和使用,以及Android中对SVG的一个支持,从而可以帮助我们在android下很轻松的通过SVG实现一些非常酷炫的动画效果. ...

  10. Android动画攻略—帧动画、补间动画、属性动画

    前言 动画时Android开发中使用频率比较高的功能. 对Android提供的补间动画,帧动画以及属性动画做出归纳总结. 目录 1. 帧动画 帧动画总体实现比较简单,其实现本身是实现一个图片集的连续播 ...

最新文章

  1. 在FreeBSD上安装Bugzilla
  2. mysql galera 安装_MySQL Galera 集群的安装过程
  3. Google App Engine上的Spring MVC和REST
  4. 1.5 编程基础之循环控制 45 金币 方法二(python3实现)
  5. yconsole使用说明
  6. 语义分割——DeepLabv3+的学习笔记~
  7. hadoop搭建之hadoop安装
  8. 【计算机网络笔记】编码与调制
  9. python不是内部或外部命令
  10. 学习JSP大学实用教程
  11. ftp上传软件,推荐5款好用的ftp上传软件
  12. 能不能算是PLSQL Developer的锅?
  13. Mezzanine汉化
  14. KSO-.NET 6 中的新增功能
  15. node爬取双马尾小姐姐图片
  16. jQuery 从零开始学习 (二) 选择器
  17. 网络协议上课笔记(三) 路由、重要概念、NAT
  18. 如何删除无法删除的文件
  19. 腾讯云服务器2核4G、4核8G、8核16G、16核32G配置报价表出炉
  20. Android获取屏幕宽度高度并动态设置控件宽度,比例等

热门文章

  1. oracle分区表相关
  2. JavaScript 本地验证用户注册信息
  3. 跨平台移动开发_PhoneGap 使用Accelerometer 加速器
  4. SQL 技巧-ORACLE
  5. android 理解Fragment生命周期
  6. Android 布局之GridLayout
  7. 洛谷P1396营救(最小生成树)
  8. App主流UI框架结构
  9. 推荐一个golang的json库
  10. 关于sql中去换行符的问题