最近项目要使用到点击一个按钮弹出多个按钮的效果,在试了几个类库后感觉不是很理想,所以自己代码实现了一个,下图所示:
实现原理很简单,就是利用android原声动画效果,当点击中心按钮时弹出其余按钮。闲话少叙,代码如下。
第一步:activity_main.xml 很简单,也就是五个相同位置的按钮
<&#63;xml version="1.0" encoding="utf-8"&#63;>
第二步:MainActivity
package com.example.boombuttons; import java.util.ArrayList; public class MainActivity extends Activity implements OnClickListener{ // 中心按钮 private ImageButton button; // 四个子按钮 private ImageButton button1; private ImageButton button2; private ImageButton button3; private ImageButton button4; // 子按钮列表 private ListbuttOnItems= new ArrayList (3); // 标识当前按钮弹出与否,1代表已经未弹出,-1代表已弹出 private int flag = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 实例化按钮并设立监听 button = (ImageButton)findViewById(R.id.button); button.setOnClickListener(this); button1 = (ImageButton)findViewById(R.id.button1); button2 = (ImageButton)findViewById(R.id.button2); button3 = (ImageButton)findViewById(R.id.button3); button4 = (ImageButton)findViewById(R.id.button4); // 将子按钮们加入列表中 buttonItems.add(button1); buttonItems.add(button2); buttonItems.add(button3); buttonItems.add(button4); } /** * 按钮移动动画 * @params 子按钮列表 * @params 弹出时圆形半径radius */ public void buttonAnimation(List buttonList,int radius){ for(int i=0;i
第三步:Util.java 工具类,写了一个静态方法,用于通过按钮个数和按钮在列表中的索引计算其弹出角度。
public class Util { /** * 返回每个按钮应该出现的角度(弧度单位) * @param index * @return double 角度(弧度单位) */ public static double getAngle(int total,int index){ return Math.toRadians(90/(total-1)*index+90); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。