android——ObjectAnimator动画
来源:互联网 发布:webcrack软件下载 编辑:程序博客网 时间:2024/05/18 02:15
在新的android sdk中谷歌为我们提供了新的动画实现方式。化繁为简。将以前的animation动画进一步封装,使用起来更加方便。
先来看XML文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="40dp" > <ImageView android:id="@+id/rect" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/rect" /> <ImageView android:id="@+id/star" android:layout_width="60dp" android:layout_height="match_parent" android:background="@drawable/star" /> </LinearLayout> <ImageView android:id="@+id/b" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:background="@drawable/b" /> <ImageView android:id="@+id/c" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:background="@drawable/c" /> <ImageView android:id="@+id/d" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:background="@drawable/d" /> <ImageView android:id="@+id/e" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:background="@drawable/e" /> <ImageView android:id="@+id/a" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_margin="10dp" android:background="@drawable/a" /></RelativeLayout>
然后看看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<ImageView> listImg = new ArrayList<ImageView>(); 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; } }}
0 0
- android——ObjectAnimator动画
- android——ObjectAnimator动画(一)
- Android属性动画——ObjectAnimator
- android属性动画 —— ValueAnimator和ObjectAnimator的例子
- Android属性动画系列(一)——ObjectAnimator
- android属性动画浅析——ValueAnimator、ObjectAnimator、Interprolators
- Android动画-属性动画-ObjectAnimator
- android 动画 属性动画 ObjectAnimator
- Animation动画——ObjectAnimator基本使用
- Animation动画——ObjectAnimator基本使用
- Android属性动画欣赏——ObjectAnimator与动画监听事件
- android 属性动画之 ObjectAnimator
- Android ObjectAnimator动画效果实现
- android 属性动画之 ObjectAnimator
- Android属性动画之ObjectAnimator
- Android 动画 ObjectAnimator基本使用
- android动画---ObjectAnimator基本使用
- Android ObjectAnimator动画初识、模仿
- iOS APP上架流程
- android——字体颜色跟随状态改变
- maven的环境搭建以及maven搭建web项目
- android 无线调试
- 牛客网 | 链式A+B
- android——ObjectAnimator动画
- android——ObjectAnimator动画(一)
- C++ ----模版
- android——背景颜色渐变(梯度变化)
- Hadoop:MapReduce详解
- eclipse安装svn插件,在输入url后,一直卡在in progress界面不懂。
- Eclipse 常用快捷键 (动画讲解)(转载)
- android——fragment详解
- <算法导论>第二章 2.3设计算法