1

だから私がする必要があるのは、コードでウィンドウおよび/またはトランジションアニメーションのオンとオフを切り替えて、設定>ディスプレイ>アニメーション>すべてのアニメーションを無効にするのと同じ効果を持つことです。

デバイス設定の変更に精通している方法は、次のように Settings.System.putInt() メソッド内で ContentResolver を使用することです。

ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, Settings.System.WINDOW_ANIMATION_SCALE, 0);

ドキュメントで説明されているように、両方の設定で「0 に設定するとすべての .... アニメーションが無効になります」。putInt() メソッドを使用する前後の設定を読み取る場合は、次のようにします。

Settings.System.getString(cr, Settings.System.WINDOW_ANIMATION_SCALE);

設定が変更されていることがわかります。ただし、ウィンドウまたはトランジション アニメーションを開始するために何かを実行すると、設定による違いはなく、トランジションがまだ発生していることは明らかです。

また、[設定] 画面内から設定を変更すると、アプリケーションを再実行すると設定が変更されていることがわかります。したがって、これは正しい設定であり、アプリケーションが正しく変更していないようです。

私が見逃しているものは他にありますか?

前もって感謝します。

4

1 に答える 1

2

正しい縮尺を設定していることを確認してください。

Settings.System.TRANSITION_ANIMATION_SCALE 

アクティビティの遷移を変更します。

一方:

Settings.System.WINDOW_ANIMATION_SCALE

ダイアログを開くなどのウィンドウ アニメーションに影響します。

(API16 を追加) ビュー固有のアニメーションを有効/無効にします。

Settings.System.ANIMATOR_DURATION_SCALE

floatsまた、これらは半分の速度を意味する 0.5x のアニメーション設定になる可能性があるため、これらはかなり確実です。アプリからこれらを試したことはありません。

しかし、次の 2 つのことが思い浮かびます。

  • ContentProvider非同期であり、設定を終了するには設定をリッスンする必要があります
  • また、作成/終了して活動するまで、これらはおそらく機能しません。つまり、アクティビティの途中でそれらを変更しても、電流Activityには影響しない可能性がありますが、その理論をテストする必要があります。
于 2012-11-19T15:33:23.510 に答える