弧形菜单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}}


源码下载...



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 荣耀8耗电量太快怎么办 vivo卡2不显示怎么办 电信宽带玩王者荣耀卡怎么办 联通4g玩游戏卡怎么办 华为悦盒遥控器丢了怎么办 6s不能用电信卡怎么办 iphone6电信卡无服务怎么办 魅族手机电信卡怎么办 小米手机读不出sim卡怎么办 魅蓝note6耗电快怎么办 oppo手机下载密码忘了怎么办 华为v9玩飞车卡怎么办 苹果7耳机转换器不支持怎么办 华为mate10耳机声音小怎么办 200打一年到期了怎么办 手机欠费变成2g怎么办 手机4g网用不了怎么办 手机玩王者荣耀卡怎么办 华为隐私空间密码忘记了怎么办 华为手机王者太卡怎么办 华为手机太卡怎么办呢 华为手机5x太卡!怎么办 华为手机玩游戏时太卡了怎么办? 买到华为翻新机怎么办 华为畅享8声音小怎么办 华为5a安全模式怎么办 手机跳屏怎么办金立 苹果手机触控不灵敏怎么办 华为mate8手机声音小怎么办 华为mate9相机无法对焦怎么办 新疆外地电信卡信号差怎么办 华为手机搜索不到wifi怎么办 华为浏览器恢复只有一个页面怎么办 华为手机触摸屏没反应怎么办 快递不给送上楼怎么办 华为荣耀手机声音小怎么办 华为手机来电铃声小怎么办 s弯出来时老压线怎么办 苹果7p手机弯了怎么办 小米手机摔弯了怎么办 华为畅享5没声音怎么办