0

嗨,我正在开发小型 android 应用程序,我想在其中对列表行进行滑动删除。为此,我在触摸监听器上使用视图并删除带有一些动画的行。withendaction()除了没有给出这样的方法错误的方法之外,一切都工作正常。我知道它支持 api 级别 16 以上,我根据我通过以下方式尝试过的设置了所需的 api 级别:

private View.OnTouchListener mTouchListener = new View.OnTouchListener() {

@Override
public boolean onTouch(final View v, MotionEvent event) {

    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:

    break;
    case MotionEvent.ACTION_CANCEL:
    break;
    case MotionEvent.ACTION_MOVE:

    break;
    case MotionEvent.ACTION_UP:
    {
            v.animate().setDuration(duration).
                    alpha(endAlpha).translationX(endX).
                    withEndAction(new Runnable() {
                        @Override
                        public void run() {

                        }
                    });


        }
    }
    break;
    default: 
    return false;
    }
    return true;
}
};

我的所有动画工作正常,但是在 withendaction 方法的时候,它给出了错误,是no such a method 我做错了什么吗?需要帮忙。

谢谢你。

4

3 回答 3

1

如果您想支持 API 9 设备,则不能使用 View.animate() 功能。

您必须使用较旧的动画框架,例如AlphaAnimation.

淡入按钮的示例代码:

    AlphaAnimation anim = new AlphaAnimation(0f, endAlpha);
    anim.setDuration(duration);

    anim.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // Do stuff on animation end
        }
    });

    v.startAnimation(anim);

如果您还希望它为视图翻译设置动画,则需要添加另一个类似这样的动画TranslateAnimation

于 2013-11-13T08:18:23.080 回答
0

API 级别 15 支持此调用。因此,如果您在任何早期的 SDK 版本上尝试它,它将抛出上述异常

于 2013-07-09T08:03:10.510 回答
0

我认为 view.animate 是为了:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1)

为了

< API 12

使用 Nineoldandroid 库

于 2013-11-25T21:22:01.643 回答