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", "收回完毕+++++++++++++++++++++++++++++++++++++"); } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories