1

SDK 11 (Honeycomb) でアプリを開発しています。このアプリでは、ハードウェア アクセラレーションを (アプリケーション レベルで) 使用してアニメーションをよりスムーズにしますが、それがないと、許容できないほど遅くなります。私のクライアントは本当にそれらを持ちたいので、アクセラレーションをオフにする以外の解決策を見つけなければなりません.

問題自体は、要素Activityがほとんど含まれていないことです。WebView3、正確には - 1 つは常に表示され、他の 2 つはページのプリロードに使用されるため、表示されません (つまり、画面の外に配置されますが、「表示」されます)。翻訳アニメーションを使用して、それらを「切り替え」ます。ハードウェア アクセラレーションをオンにすると、Web ページが正しくレンダリングされません。ページ上に大きなちらつきのある黒いボックスが表示されます。これはもちろん容認できないので、すべての WebView に対してハードウェア アクセラレーションをオフにすることで問題を回避しました。

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

これを xml ファイル ( android:layerType="software") にも設定しようとしましたが、まったく同じように機能しました (そうあるべきです)。とにかく、これらの方法はどちらもうまく機能します。アニメーションと WebView は十分にスムーズで、アーティファクトはありません。ただし、方向が変わると問題が発生します。私のコードでは、ポートレート モードとランドスケープ モードの間に重要な違いはありませんが、次のように動作します。

  • アクティビティは縦向きモードで開始し、方向を横向きに変更し、縦向きに戻します。すべてが期待どおりに機能します。
  • アクティビティは横向きモードで開始します。それは正常に動作します。向きが縦向きに変わります。アーティファクトが再び表示され始めます。ほとんどの場合、画面全体が真っ暗になり、ページをスクロール/ズームすると、青い月に一度だけウェブページが表示されます。これは、WebView がハードウェア アクセラレーションを使用した場合とまったく同じです。ランドスケープに戻ります-再び正常に動作します。

これにより、ハードウェアアクセラレーションが問題である可能性があると考えるようになりました. ビュー階層のさまざまなレベルでソフトウェア アクセラレーションを設定して、この奇妙な動作が停止するかどうかを確認することで、自分が正しいことが証明されました。実際に停止し、バグなしで動作することがわかりましたが、アクティビティ全体がソフトウェアで高速化されるのは一度だけであり、これは私には受け入れられません (私の翻訳アニメーション! [+ Web ビューでのスクロールが遅い])。レイアウト xml ファイルのビュー/ビューグループのみがソフトウェア アクセラレーションに設定されている場合でも、バグが発生します。このような動作を引き起こす可能性のある向きの変化について何かありますか? どんな解決策、ハック、ヒント、提案、アイデア、考えでも、不完全であっても大歓迎です - 私はそれらから外れています.

さらに情報やコードが必要な場合は、喜んで提供します。
お時間をいただきありがとうございます!

4

0 に答える 0