博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android——ObjectAnimator动画
阅读量:7223 次
发布时间:2019-06-29

本文共 3294 字,大约阅读时间需要 10 分钟。

在新的android sdk中谷歌为我们提供了新的动画实现方式。化繁为简。将以前的animation动画进一步封装,使用起来更加方便。

先来看XML文件:

然后看看activity文件

package com.example.testanimator;import java.util.ArrayList;import java.util.List;import android.animation.ObjectAnimator;import android.animation.TimeInterpolator;import android.app.ActionBar;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.animation.FastOutLinearInInterpolator;import android.view.MenuItem;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.animation.AccelerateDecelerateInterpolator;import android.view.animation.AccelerateInterpolator;import android.view.animation.AnticipateInterpolator;import android.view.animation.BounceInterpolator;import android.view.animation.CycleInterpolator;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener {    private ImageView a, b, c, d, e;    private int res[] = { R.id.a, R.id.b, R.id.c, R.id.d, R.id.e };    private List
listImg = new ArrayList
(); private boolean isStart = false; private float y; private float x; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { for (int i = 0; i < res.length; i++) { ImageView img = (ImageView) findViewById(res[i]); listImg.add(img); img.setOnClickListener(this); } x = listImg.get(0).getPivotX(); y = listImg.get(0).getPivotY(); } private void startAnimator() { isStart = true; for (int i = 0; i < listImg.size(); i++) { ObjectAnimator.ofFloat(listImg.get(i), "translationY", y, y - 400 + i * 100).setDuration(1000).start(); ObjectAnimator.ofFloat(listImg.get(i), "translationX", x, x + i * 100).setDuration(1000).start(); } } private void closeAnimator() { isStart = false; for (int i = 0; i < listImg.size(); i++) { ObjectAnimator animator = ObjectAnimator.ofFloat(listImg.get(i), "translationY", y - 400 + i * 100, y); animator.setDuration(1000); animator.setStartDelay(1000); animator.setInterpolator(new BounceInterpolator()); //设置插值器 animator.start(); } } @Override public boolean onTouchEvent(MotionEvent event) { float startx ,starty; float endx ,endy ; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: break; default: break; } return super.onTouchEvent(event); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.a: if (isStart) { closeAnimator(); //还原位置 } else { startAnimator(); //开始动画移动位置和焦点 } break; default: break; } }}

 

转载于:https://www.cnblogs.com/shoneworn/p/9029451.html

你可能感兴趣的文章
提醒我喝水chrome插件开发指南
查看>>
列表数据转树形数据
查看>>
Java新版本的开发已正式进入轨道,版本号18.3
查看>>
从零开始的webpack生活-0x009:FilesLoader装载文件
查看>>
在electron中实现跨域请求,无需更改服务器端设置
查看>>
gitlab-ci配置详解(一)
查看>>
听说你叫Java(二)–Servlet请求
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>
FreeWheel业务系统微服务化过程经验分享
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
查看>>
Web Storage相关
查看>>
[PHP内核探索]PHP中的哈希表
查看>>
Apache-drill Architechture
查看>>
WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
查看>>
通通连起来——无处不在的流
查看>>
互联网+时代,看云计算如何改变传统行业
查看>>
ZFS ARC & L2ARC zfs-$ver/module/zfs/arc.c
查看>>
c++类默认拷贝构造函数---浅复制
查看>>
2019年最火热的Golang项目
查看>>