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

view.animate は次の目的であると思います。

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

為に

< API 12

nineoldandroid ライブラリを使用する

于 2013-11-25T21:22:01.643 に答える