1

私には簡単なタスクがあります。何かが起こったとき(たとえば、ボタンが押されたとき)に画面をフェードします(+その他のアクションですが、今は関係ありません)。私の minSDKVersion は 11 です。私はこの方法でそれを行います: アクティビティ レイアウトにはビューが含まれます:

<View
    android:id="@+id/bgFadingView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:alpha="0"
    android:background="@android:color/black" />

画面をフェードする方法は次のとおりです。

protected void fadeBGView(boolean fadeIn)
{
    ObjectAnimator animator = ObjectAnimator.ofFloat(bgFadingView, "alpha", fadeIn ? 0.75f : 0f); //bgFadingView is initialized via findViewById(R.id.bgFadingView);
    animator.setDuration(1000);
    animator.start();
}

つまり、画面全体を占める黒いビューがあり、フェードインする必要がある場合は、ビューのアルファを 0 から 0.75 に変更します。

問題は、悪いフレームレートで動作することです... フレームごとにフェード アニメーションが表示されます - 約 15 fps で動作します。私は何を間違っていますか?Android システムのフェードがはるかにスムーズに動作します。同じ結果をアーカイブするか、クローズしたいと考えています。方法?

4

1 に答える 1

0

私がしなければならなかったのは:

ObjectAnimator.setFrameDelay(10);

デフォルトのフレーム遅延が長すぎるため、アニメーションがスムーズに機能しませんでした。問題は、デバイスのパフォーマンスの制限によるものではありませんでした。

于 2012-09-19T09:43:47.117 に答える