1,设置布局

<RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginRight="12dp">
<RelativeLayoutandroid:id="@+id/rel_diaocha"android:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:background="@drawable/icon_tibao_bg"android:layout_marginBottom="200dp"android:visibility="gone"><TextViewandroid:id="@+id/iv_icon1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:drawableTop="@drawable/icon_tibao_diaocha"android:text="调查"android:textSize="10sp"android:textColor="@color/white"android:layout_centerInParent="true"/>
</RelativeLayout><RelativeLayoutandroid:id="@+id/rel_kaoshi"android:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:background="@drawable/icon_tibao_bg"android:layout_marginBottom="200dp"android:visibility="gone"><TextViewandroid:id="@+id/iv_icon2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:drawableTop="@drawable/icon_tibao_kaoshi"android:text="考试"android:textSize="10sp"android:textColor="@color/white"android:layout_centerInParent="true"/>
</RelativeLayout><RelativeLayoutandroid:id="@+id/rel_toupiao"android:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:background="@drawable/icon_tibao_bg"android:layout_marginBottom="200dp"android:visibility="gone"><TextViewandroid:id="@+id/iv_icon3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:drawableTop="@drawable/icon_tibao_toupiao"android:text="投票"android:textSize="10sp"android:textColor="@color/white"android:layout_centerInParent="true"/>
</RelativeLayout><RelativeLayoutandroid:id="@+id/rel_biaodan"android:layout_width="50dp"android:layout_height="50dp"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginBottom="200dp"android:background="@drawable/icon_tibao_bg"android:visibility="gone"><TextViewandroid:id="@+id/iv_icon4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:drawableTop="@drawable/icon_tibao_biaodan"android:text="表单"android:textColor="@color/white"android:textSize="10sp" /></RelativeLayout><ImageViewandroid:id="@+id/iv_start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentBottom="true"android:layout_marginBottom="200dp"/><!-- android:background="@drawable/icon_tibao_start"-->
</RelativeLayout>

2,动画设置

2.1 打开动画的方法;

private void showIcon() {//设置动画时间int duration = 1000;//动画距离,屏幕宽度的60%float distance = getScreenWidth() * 0.1f;float distance2 = getScreenWidth() * 0.3f;//相邻ImageView运动角度式22.5度float angle0 = (float) (90f * Math.PI / 180);//调查float angle1 = (float) (150f * Math.PI / 180);//考试float angle2 = (float) (210f * Math.PI / 180);//投票float angle3 = (float) (270f * Math.PI / 180);//表单//icon1///  PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("TranslationX", 0f, distance);//icon2PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("TranslationX", 0f, (float) (distance2 * Math.cos(angle0)));PropertyValuesHolder p12 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -(float) (distance2 * Math.sin(angle0)));//icon2PropertyValuesHolder p21 = PropertyValuesHolder.ofFloat("TranslationX", 0f, (float) (distance2 * Math.cos(angle1)));PropertyValuesHolder p22 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -(float) (distance2 * Math.sin(angle1)));//icon3PropertyValuesHolder p31 = PropertyValuesHolder.ofFloat("TranslationX", 0f, (float) (distance2 * Math.cos(angle2)));PropertyValuesHolder p32 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -(float) (distance2 * Math.sin(angle2)));//icon4PropertyValuesHolder p41 = PropertyValuesHolder.ofFloat("TranslationX", 0f, (float) (distance2 * Math.cos(angle3)));PropertyValuesHolder p42 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -(float) (distance2 * Math.sin(angle3)));//icon5//  PropertyValuesHolder p5 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -distance);ObjectAnimator animator1 = ObjectAnimator.ofPropertyValuesHolder(relDiaocha, p1, p12).setDuration(duration);ObjectAnimator animator2 = ObjectAnimator.ofPropertyValuesHolder(relKaoshi, p21, p22).setDuration(duration);ObjectAnimator animator3 = ObjectAnimator.ofPropertyValuesHolder(relToupiao, p31, p32).setDuration(duration);ObjectAnimator animator4 = ObjectAnimator.ofPropertyValuesHolder(relBiaodan, p41, p42).setDuration(duration);//  ObjectAnimator animator5 = ObjectAnimator.ofPropertyValuesHolder(relBiaodan, p5).setDuration(duration);//添加自由落体效果插值器animator1.setInterpolator(new BounceInterpolator());animator2.setInterpolator(new BounceInterpolator());animator3.setInterpolator(new BounceInterpolator());animator4.setInterpolator(new BounceInterpolator());//  animator5.setInterpolator(new BounceInterpolator());//启动动画animator1.start();animator2.start();animator3.start();animator4.start();//   animator5.start();
}

2.2 关闭动画的方法

/*** /*** * 动画实现,因为除了沿X,Y轴的图标,另外3个都有角度,所有,要有三角函数计算* * 使图标位移距离相等,实现扇形效果*/private void closeIcon() {//设置动画时间int duration = 1000;//动画距离,屏幕宽度的60%float distance2 = getScreenWidth() * 0.3f;//相邻ImageView运动角度式22.5度float angle0 = (float) (90f * Math.PI / 180);//调查float angle1 = (float) (150f * Math.PI / 180);//考试float angle2 = (float) (210f * Math.PI / 180);//投票float angle3 = (float) (270f * Math.PI / 180);//表单//icon1///  PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("TranslationX", 0f, distance);//icon2PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("TranslationX", (float) (distance2 * Math.cos(angle0)), 0f);PropertyValuesHolder p12 = PropertyValuesHolder.ofFloat("TranslationY", -(float) (distance2 * Math.sin(angle0)), 0f);//icon2PropertyValuesHolder p21 = PropertyValuesHolder.ofFloat("TranslationX", (float) (distance2 * Math.cos(angle1)), 0f);PropertyValuesHolder p22 = PropertyValuesHolder.ofFloat("TranslationY", -(float) (distance2 * Math.sin(angle1)), 0f);//icon3PropertyValuesHolder p31 = PropertyValuesHolder.ofFloat("TranslationX", (float) (distance2 * Math.cos(angle2)), 0f);PropertyValuesHolder p32 = PropertyValuesHolder.ofFloat("TranslationY", -(float) (distance2 * Math.sin(angle2)), 0f);//icon4PropertyValuesHolder p41 = PropertyValuesHolder.ofFloat("TranslationX", (float) (distance2 * Math.cos(angle3)), 0f);PropertyValuesHolder p42 = PropertyValuesHolder.ofFloat("TranslationY", -(float) (distance2 * Math.sin(angle3)), 0f);//icon5//  PropertyValuesHolder p5 = PropertyValuesHolder.ofFloat("TranslationY", 0f, -distance);ObjectAnimator animator1 = ObjectAnimator.ofPropertyValuesHolder(relDiaocha, p1, p12).setDuration(duration);ObjectAnimator animator2 = ObjectAnimator.ofPropertyValuesHolder(relKaoshi, p21, p22).setDuration(duration);ObjectAnimator animator3 = ObjectAnimator.ofPropertyValuesHolder(relToupiao, p31, p32).setDuration(duration);ObjectAnimator animator4 = ObjectAnimator.ofPropertyValuesHolder(relBiaodan, p41, p42).setDuration(duration);//  ObjectAnimator animator5 = ObjectAnimator.ofPropertyValuesHolder(relBiaodan, p5).setDuration(duration);//添加自由落体效果插值器animator1.setInterpolator(new BounceInterpolator());animator2.setInterpolator(new BounceInterpolator());animator3.setInterpolator(new BounceInterpolator());animator4.setInterpolator(new BounceInterpolator());//  animator5.setInterpolator(new BounceInterpolator());//启动动画animator1.start();animator2.start();animator3.start();animator4.start();//   animator5.start();
}

3,点击触发动画

@Override
public void onClick(View v) {
//点击最外层icon,展开icon动画
if (isOpen) { //打开状态//关闭ivStart.setBackgroundResource(R.drawable.icon_tibao_start);relBiaodan.setVisibility(View.GONE);relDiaocha.setVisibility(View.GONE);relKaoshi.setVisibility(View.GONE);relToupiao.setVisibility(View.GONE);closeIcon();isOpen = false;
} else {//关闭状态//打开ivStart.setBackgroundResource(R.drawable.icon_tibao_end);relBiaodan.setVisibility(View.VISIBLE);relDiaocha.setVisibility(View.VISIBLE);relKaoshi.setVisibility(View.VISIBLE);relToupiao.setVisibility(View.VISIBLE);showIcon();isOpen = true;
}
}

最后效果:

android扇形动画弹出icon的功能相关推荐

  1. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

  2. 3 css 奖品出现弹出动画_基于jquery css3实现点击动画弹出表单源码特效

    下图给大家展示了使用jquery css实现的点击动画弹出表单源码,有上传表单.删除表单.发送评论表单,都是通过鼠标点击图标按钮动画弹出的表单源码特效. 效果图展示如下: html代码: 上传 选择文 ...

  3. [原创]jQuery动画弹出窗体支持多种展现方式

    今天刚写的利用jQuery动画弹出窗体,支持了string.Ajax.iframe.controls四种展现方式,具体细节下面慢慢介绍,先看效果图. 动画效果 从哪个对象上触发的即从该对象开始逐渐向屏 ...

  4. android的底部弹出框炫酷的样式,Android自定义底部弹出框ButtomDialog

    本文实例为大家分享了Android自定义底部弹出框的具体代码,供大家参考,具体内容如下 先看看效果和你要的是否一样 一 .先来配置自定义控件需要的资源 1.在res文件夹下创建一个anim文件夹并创建 ...

  5. android 盒子输入法不弹出来,Android EditText不弹出输入法焦点问题的总结

    看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMod ...

  6. (转)Android软键盘弹出,界面整体上移

    原地址:http://blog.csdn.net/u011622479/article/details/51161717 在做搜索功能的时候,点击搜索框,搜索框获取焦点,键盘弹出:现在问题出来了,an ...

  7. Android EditText不弹出输入法焦点问题的总结

    同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...

  8. Android 软键盘弹出时布局内指定内容上移实现及问题解决

    Android 软键盘弹出时布局内指定内容上移实现及问题解决 参考文章: (1)Android 软键盘弹出时布局内指定内容上移实现及问题解决 (2)https://www.cnblogs.com/as ...

  9. Android 软键盘弹出时把布局顶上去,控件乱套解决方法

    Android 软键盘弹出时把布局顶上去,控件乱套解决方法 参考文章: (1)Android 软键盘弹出时把布局顶上去,控件乱套解决方法 (2)https://www.cnblogs.com/zhuj ...

最新文章

  1. Unity游戏开发大师班
  2. 复现经典:《统计学习方法》第1章 统计学习方法概论
  3. php仿微信上传图片压缩,PHP仿微信多图片预览上传实例代码
  4. java 百度poi_Android应用中使用百度地图API之POI(三)
  5. OpenShift 4 - Knative教程(2) 基于Revision/Tag/Traffic实现蓝绿部署和恢复发布
  6. 安卓异常总结---WARNING: Application does not specify an API level requirement!
  7. 51nod 1274 最长递增路径(DP)
  8. js两种生成对象模式(公有成员和成员私有)
  9. iis5.1配置php5.3.1详解,在IIS5.1下手工安装配置IIS5.1+PHP5.3教程
  10. linux内核定时器 代码,Linux内核计时器
  11. LIRe提供的图像检索算法的速度
  12. spring-第十三篇之零配置支持
  13. Log4j.properties配置详解【log4j配置文件】
  14. 2020网站/APP/Webshell在线查毒 电脑软件查毒大全
  15. 怎么分割视频,将视频自定义分割成多个小片段的方法
  16. 中国科学报:吴文俊的数字之舞
  17. Excel报表的制作
  18. [mac]添加系统自带辞典或下载的词典包
  19. java 拉姆达 lamdba get
  20. KITTI车辆检测数据集转VOC格式(亲测成功,附KITTI云盘连接以及完整格式转换代码)- KITTI车辆检测数据集看着一篇就够了!

热门文章

  1. MPEG音频编码三十年
  2. “永远肩负守卫物联网安全的责任和使命”——Ayla CTO发声美网瘫痪事件
  3. 检查xml写的格式是否正确的方法
  4. MATLAB图像数字水印的方案
  5. 升级Windows11遇到VirtualBox兼容性问题(附解决办法)
  6. python像数常用函数_引用 象数疗法原理
  7. 安装黑群晖找不到局域网电脑_UNRAID 、黑群晖、 穿越派 私有云部署测试
  8. 微信内置浏览器调试和调试微信内的H5页面汇总(持续更新...)
  9. PXE实现无人值守安装
  10. XP系统如搭建ftp服务器,XP系统如搭建ftp服务器