您的位置:首页 > 移动开发 > Android开发

Android动画——按钮动画的代码

2016-04-12 21:50 411 查看


利用很粗暴的方式实现了按钮动画的功能,目前还是没办法弄成呈圆形散列开来。

总的来说还是勉强实现了  点开  八个按钮从中心散出,再点就收回。利用了一些安卓自带的interpolator动画。

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.myapplication.MainActivity">

<ImageView
android:id="@+id/i_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/d" />
<ImageView
android:id="@+id/h_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@mipmap/h" />

<ImageView
android:id="@+id/g_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/g" />

<ImageView
android:id="@+id/f_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/f" />

<ImageView
android:id="@+id/e_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/e" />

<ImageView
android:id="@+id/d_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/d" />

<ImageView
android:id="@+id/c_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/c" />

<ImageView
android:id="@+id/b_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/b" />

<ImageView
android:id="@+id/a_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

android:src="@mipmap/a" />

</RelativeLayout>


activity代码:

package com.example.myapplication;

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.AnticipateInterpolator;
import android.view.animation.BounceInterpolator;
import android.widget.ImageView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends Activity implements View.OnClickListener {
private int[] res = {R.id.a_icon, R.id.b_icon, R.id.c_icon, R.id.d_icon, R.id.e_icon, R.id.f_icon, R.id.g_icon, R.id.h_icon, R.id.i_icon};
private ArrayList<ImageView> imageviewList = new ArrayList<ImageView>();
private boolean flag = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到所有图标 并且赋值 监听 加入LIST组
for (int i = 0; i < res.length; i++) {
ImageView imageView = (ImageView) findViewById(res[i]);
imageView.setOnClickListener(this);
imageviewList.add(imageView);
}
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.a_icon:
if (flag == false) {
startAnim(v);
} else {
closeAnim();
}

Toast.makeText(MainActivity.this, "点击了", Toast.LENGTH_SHORT).show();
break;
case R.id.b_icon:
Toast.makeText(MainActivity.this, "b_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.c_icon:
Toast.makeText(MainActivity.this, "c_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.d_icon:
Toast.makeText(MainActivity.this, "d_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.e_icon:
Toast.makeText(MainActivity.this, "e_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.f_icon:
Toast.makeText(MainActivity.this, "f_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.g_icon:
Toast.makeText(MainActivity.this, "g_icon", Toast.LENGTH_SHORT).show();
break;
case R.id.h_icon:
Toast.makeText(MainActivity.this, "h_icon", Toast.LENGTH_SHORT).show();
break;
}
}

private void startAnim(View view) {

for (int i = 1; i < res.length; i++) {

ObjectAnimator o1 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationX", 0F, 150F);
ObjectAnimator o2 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationY", 0F, 150F);
ObjectAnimator o3 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationX", 0F, -150F);
ObjectAnimator o4 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationY", 0F, -150F);
AnimatorSet set = new AnimatorSet();

if (i <= 2) {
set.play(o2);
if (i == 2) {
set.play(o1);
}
} else if (i <= 4) {
set.play(o1);
if (i == 4) {
set.play(o4);
}
} else if (i <= 6) {
set.play(o4);
if (i == 6) {
set.play(o3);
}
} else if (i <= 8) {
set.play(o3);
if (i == 8) {
set.play(o2);
}
}
set.setStartDelay(i * 100);
set.setInterpolator(new BounceInterpolator());
set.setDuration(1000);
set.start();
flag = true;
Log.d("tag", "点击完毕+++++++++++++++++++++++++++++++++++++");
}
}

private void closeAnim() {
for (int i = 1; i < res.length; i++) {

ObjectAnimator o1 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationX", 1
4000
50F, 0F);
ObjectAnimator o2 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationY", 150F, 0F);
ObjectAnimator o3 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationX", -150F, 0F);
ObjectAnimator o4 = ObjectAnimator.ofFloat(imageviewList.get(i), "translationY", -150F, 0F);

AnimatorSet set = new AnimatorSet();
if (i <= 2) {
set.play(o2);

if (i == 2) {
set.play(o1);
}
} else if (i <= 4) {
set.play(o1);
if (i == 4) {
set.play(o4);
}
} else if (i <= 6) {
set.play(o4);
if (i == 6) {
set.play(o3);
}
} else if (i <= 8) {
set.play(o3);
if (i == 8) {
set.play(o2);
}
}
set.setStartDelay(i * 100);
set.setInterpolator(new AnticipateInterpolator());
set.setDuration(1000);
set.start();
flag = false;
Log.d("tag", "收回完毕+++++++++++++++++++++++++++++++++++++");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息