0

ユーザーがリスト内のエントリを削除または編集すると、フェードアウト アニメーションを持つエントリを含むリストビューがあります。

何らかの理由で、アクション (編集\削除) を実行した後、画面をもう一度押すまでアニメーションが開始されません。それらだけが実際にアニメーションを実行します。

このメソッドからアニメーションが呼び出されます:

public void replace(View view, long position) {
    int hoursSum = 0;
    int minuteSum = 0;
    boolean hoursIssue = false;

    if (finsihIntMinutes >= startIntMinutes) {
        minuteSum = finsihIntMinutes - startIntMinutes;

    } else if (finsihIntMinutes < startIntMinutes) {
        minuteSum = (finsihIntMinutes + Utility.MINUTES_TIME_UNIT)
                - startIntMinutes;
        hoursIssue = true;
    }

    if (finishIntHours >= startIntHours) {
        hoursSum = finishIntHours - startIntHours;
        if (hoursIssue == true) {
            --hoursSum;
        }
    } else if (finishIntHours < startIntHours) {

        hoursSum = (finishIntHours + Utility.HOURS_TIME_UNIT)
                - startIntHours;
    }

    double salper = (minuteSum * Main.sal) / 60;
    double salper2 = hoursSum * (Main.sal);
    String madeSoFar = ""
            + String.valueOf(formatter.format(salper2 + salper));
    String edited = "**Edited**";

    String totalTime = "" + hoursSum + ":" + minuteSum;

    DB.edit(position, Shifts.editDate, Shifts.editStartTime,
            Shifts.editEndTime, Shifts.dayString, totalTime, minuteSum,
            madeSoFar, edited, totalHours, totalMinutes);

    moneySummary = getMoney();
    hoursSummary = "Total Hours: " + getHours();
    summary.setText(moneySummary);

    **FastScrollAdapter.animate(Shifts.view);**

}

アニメーションコードは次のとおりです。

public static void animate(final View v) {

    Animation out = new AlphaAnimation(1, 0);
    out.setInterpolator(new DecelerateInterpolator());
    out.setDuration(350);
    v.setAnimation(out);
    out.start();
    out.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            Log.i("Animation", "Started");
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

            // Shifts.setSummaryCursor.requery();
            Shifts.getMoneyCursor.requery();
            FastScrollAdapter.cursor.requery();
            Shifts.CA.notifyDataSetChanged();

        }

        @Override
        public void onAnimationEnd(Animation animation) {

            // Shifts.setSummaryCursor.requery();
            Shifts.getMoneyCursor.requery();
            FastScrollAdapter.cursor.requery();
            Shifts.CA.notifyDataSetChanged();
            Log.i("Animation", "Ended");

        }
    });

}
4

3 に答える 3

6

私はまったく同じ問題を抱えていました。電話して解決しました

view.clearAnimation();

直前

view.startAnimation(animation);
于 2013-06-12T00:04:45.867 に答える
0

順番を変える必要があると思います

1. v.setAnimation(out);
2. out.setAnimationListener(new AnimationListener()); 
3. v.startAnimation(out);
于 2012-09-04T14:59:48.320 に答える
0

同様の問題がありました。UE スレッドでアニメーションが実行されませんでした。アニメーションを実行して、UE ヘッドに投稿してみてください。

                mHandler.post(new Runnable() {
                @Override
                public void run() {
                    yourView.startAnimation(yourAnimation));
                }
            });
于 2012-09-17T15:37:44.837 に答える