弧形菜单2(动画渐入)
来源:互联网 发布:90后网络女歌手有哪些 编辑:程序博客网 时间:2024/05/14 10:36
前言:对前面文章<弧形菜单>加入动画渐入
效果:
开发环境:AndroidStudio2.2.1+gradle-2.14.1
涉及知识:1.自定义控件,2.事件分发等
部分代码:
Activity:
public class HomepageActivity extends AppCompatActivity { private HomePageMenuLayout homePageMenuLayout; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.homepage_layout); initLayout(); } private void initLayout() { homePageMenuLayout = (HomePageMenuLayout) findViewById(R.id.homepage_layout); //加载菜单列表 homePageMenuLayout.setMenuItemIconsAndTexts(Constants.MENUALL); //才点动画初始 new SwitchAnimationUtil().startAnimation(homePageMenuLayout, SwitchAnimationUtil.AnimationType.ROTATE); //事件监听 homePageMenuLayout.setOnMenuItemClickListener(new HomePageMenuLayout.OnMenuItemClickListener() { @Override public void itemClick(View view, int pos) { Toast.makeText(HomepageActivity.this, Constants.MENUALL[pos], Toast.LENGTH_SHORT).show(); } }); }}
动画类:
public class SwitchAnimationUtil {private int mOrderIndex = 0;private int mDelay = 80;private int mDuration = 500;public SwitchAnimationUtil() {}public void startAnimation(View root, AnimationType type) {bindAnimation(root, 0, type);}private void bindAnimation(View view, int depth, AnimationType type) {if (view instanceof ViewGroup) {ViewGroup group = (ViewGroup) view;for (int i = 0; i < group.getChildCount(); i++) {bindAnimation(group.getChildAt(i), depth + 1, type);}} else {runAnimation(view, mDelay * mOrderIndex, type);mOrderIndex++;}}private void runAnimation(View view, long delay, AnimationType type) {switch (type) {case ROTATE:runRotateAnimation(view, delay);break;case ALPHA:runAlphaAnimation(view, delay);break;default:break;}}private void runAlphaAnimation(View view, long delay) {view.setAlpha(0);ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);objectAnimator.setStartDelay(delay);objectAnimator.setDuration(mDuration);objectAnimator.setInterpolator(new LinearInterpolator());objectAnimator.start();}private void runRotateAnimation(View view, long delay) {view.setAlpha(0);AnimatorSet set = new AnimatorSet();ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(view, "rotation", 0f, 0f);ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(view, "scaleX", 0f, 1f);ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(view, "scaleY", 0f, 1f);ObjectAnimator objectAnimator4 = ObjectAnimator.ofFloat(view, "alpha", 0f, 1f);objectAnimator2.setInterpolator(new AccelerateInterpolator(1.0f));objectAnimator3.setInterpolator(new AccelerateInterpolator(1.0f));set.setDuration(mDuration);set.playTogether(objectAnimator,objectAnimator2, objectAnimator3, objectAnimator4);set.setStartDelay(delay);set.start();}public enum AnimationType {ALPHA, ROTATE}}
源码下载...
阅读全文
0 0
- 弧形菜单2(动画渐入)
- 弧形动画菜单
- 一行代码搞定Android弧形卫星动画菜单(附Demo)
- 弧形菜单(Android)
- 弧形轨道动画
- 添加购物车弧形动画
- 【转载】ios--弧形动画 椭圆动画
- 《Angular之渐入动画》
- 通过Animator实现弧形弹出菜单
- Android 自定义卫星式弧形菜单
- Android 自定义卫星式弧形菜单
- 安卓自定义半圆弧形菜单
- ViewPager模仿弧形切换动画(备忘)
- Android 利用二阶贝塞尔曲线自定义弧形动画
- 左侧菜单渐入效果 jquery
- 超炫的Button按钮展开弧形动画效果
- 贝塞尔曲线的解读,可以用于弧形移动动画
- Android 自定义Activity动画渐入和渐出样式
- Spring+Redis session共享
- 2.运行 shell 脚本
- wakeonlan-远程开机
- python2.7基于selenium的web自动化测试项目--finance
- ConcurrentModificationException和下标(游标)异位
- 弧形菜单2(动画渐入)
- Filebeat日志收集器 安装和配置
- 【Apache Kylin 】大数据下的OLAP解决方案(作业构建)
- swift 随机产生颜色
- 使用GPUImage 的lookup table为图片添加滤镜
- 7设计模式 之 观察者 和监听器的区别
- 计算机网络基础知识总结
- 一些英文单词的标准简写
- 编写 script.sh练习题