设置按钮的滑动动画实现

我们在做一些自定义控件的时候,涉及到一些切换的动画效果,我们的项目中经常用到一个封装好的方法来实现这个效果,代码如下:

/**
     *此为左右滑动的动画
     * @param moveX
     *            移动到的位置
     * @param view
     *            需要移动的试图
     */
    private void startAnimation(final int moveX, final View view) {
        view.clearAnimation();
        int old = view.getLeft();
        if (moveX == old)
            return;
        int x = moveX - old;
        TranslateAnimation animation = new TranslateAnimation(0, x, 0, 0);
        animation.setDuration(100);
        animation.setInterpolator(new AccelerateInterpolator());
        animation.setAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                // 动画开始
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // 重新开始
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // 动画结束,重新设置删除按钮位置
                view.clearAnimation();
                    RelativeLayout.LayoutParams parm0 = new RelativeLayout.LayoutParams(
                        view.getWidth(), view.getHeight());
                parm0.setMargins(moveX, 0, 0, 0);
                view.setLayoutParams(parm0);

            }
        });
        view.startAnimation(animation);
    }
/**
     * 上下滑动的动画
     * 
     * @param moveY
     *            移动到的位置
     * @param view
     *            需要移动的试图
     */
    private void startAnimationY(final int moveY, final View view) {
        int old = view.getTop();
        if (moveY == old)
            return;
        int y = moveY - old;
        TranslateAnimation animation = new TranslateAnimation(0, 0, 0, y);
        animation.setDuration(100);
        animation.setRepeatCount(0); // 设置重复次数
        animation.setInterpolator(new LinearInterpolator());
        animation.setAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                // 动画开始
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // 重新开始
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                // 动画结束,重新设置删除按钮位置
                view.clearAnimation();
                RelativeLayout.LayoutParams parm0 = new RelativeLayout.LayoutParams(
                        view.getWidth(), view.getHeight());
                parm0.setMargins(0, moveY, 0, 0);
                view.setLayoutParams(parm0);
            }
        });
        view.startAnimation(animation);
    }

猜你喜欢

转载自blog.csdn.net/yus201120/article/details/76148521
今日推荐