android:hardwareAccelerated
2344 ワード
例:
プロジェクトに異常が発生したのはAndroidManifestです.xmlで、アプリケーションに追加されました
設定した結果、webViewにロードされたhtml 5ページが非常にカートンになりました.nを探していたら、この設定の問題があったことに気づきました.警告以降,この2つの属性を用いる必要がある場合,最後にActivityの小範囲内に設定する.さもないと他の問題を引き起こす.
Android 3.0(API level 11)からAndroidの2 D表示パイプがハードアクセラレータをよりサポートするように設計する.ハードアクセラレータはGPUを用いてViewのcanvas上で実行されるすべての描画操作を担う.
紹介:
ハードアクセラレータを有効にする最も簡単な方法は、アプリケーション全体に対してハードウェア速度を有効にすることです.標準のviewとDrawableのみを使用する場合、グローバルにハードアクセラレータを有効にすることは負の影響を与えません.しかし、ハードアクセラレータはすべての2 Dペイントでサポートされていないため、これを有効にすると、カスタムペイントに影響を与える可能性があります.問題は常に表示されないか、異常であるか、誤ってピクセルが表示される可能性があります.これらの問題を回避するために、Androidは以下のレベルでハードアクセルを有効または禁止する能力を提供します.
Application
Activity
Window
View
アプリケーションでカスタムペイントを使用する場合は、実際のデバイスでハードアクセラレータを有効にしてテストして問題を特定する必要があります.「サポートされていないペイント操作」の項では、ハードアクセラレータできない既知のペイント操作と、それらを避ける方法について説明します.
ハードアクセラレータを制御するには、次のレベルでハードアクセラレータをそれぞれ制御します.
Application
Activity
Window
View
Applicationレベルは、manifestファイルに次のプロパティをラベルに追加して、アプリケーション全体にハードアクセラレータを有効にします.
Activityレベルでは、アプリケーションがグローバルにハードアクセラレータを有効にするときに正しく動作しない場合は、個別のactivitiesに対してハードアクセラレータを個別に有効にできます.actityレベルでハードアクセラレータを有効または無効にするには、要素に対してandroid:hardwareAcceleratedプロパティを使用します.次の例では、アプリケーション全体でハードアクセラレータを有効にしますが、activityに対してハードアクセラレータを禁止します.
Windowレベルでより高い粒度の制御が必要な場合は、次のコードを使用してwindowのハードアクセラレータを有効にできます.
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注:Windowsレベルでハードアクセルを禁止することはできません.
Viewレベルでは、実行時に次のコードを使用して、個別のViewのハード加速を禁止できます.
myView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
注意:現在、Viewレベルでハードアクセラレータを有効にすることはできません.Viewレイヤには、ハードアクセラレータを禁止する以外の機能があります.
1つのViewがハードに加速できるかどうかを判定する1つのアプリケーションがハードウェア速度を有効にしているかどうかを知るのに役立つ場合があります.カスタムViewなどのものにとって特に重要です.あなたのアプリケーションが最新のパイプラインでサポートされていないカスタムペイントをした場合、これはもっと重要です.
アプリケーションがハード加速されているかどうかを確認するには、次の2つの方法があります.
View.MisHardwareAccelerated():Viewがハードアクセルのwindowにアタッチされている場合はtrueを返します.
Canvas.IsHardwareAccelerated():Canvasがハード加速されたらtrueに戻る.
描画コードでこれをしなければならない場合はCanvasを使用します.IsHardwareAccelerated()はViewではありません.IsHardwareAccelerated()は、ハードアクセラレータのwindowにviewを付加すると、非ハードウェア速度のCanvasを使用して描画操作を行うことができる.例えば、キャッシュのためにビットマップにviewを描画する.
プロジェクトに異常が発生したのはAndroidManifestです.xmlで、アプリケーションに追加されました
android:hardwareAccelerated="false"
android:largeHeap="true"
設定した結果、webViewにロードされたhtml 5ページが非常にカートンになりました.nを探していたら、この設定の問題があったことに気づきました.警告以降,この2つの属性を用いる必要がある場合,最後にActivityの小範囲内に設定する.さもないと他の問題を引き起こす.
Android 3.0(API level 11)からAndroidの2 D表示パイプがハードアクセラレータをよりサポートするように設計する.ハードアクセラレータはGPUを用いてViewのcanvas上で実行されるすべての描画操作を担う.
紹介:
ハードアクセラレータを有効にする最も簡単な方法は、アプリケーション全体に対してハードウェア速度を有効にすることです.標準のviewとDrawableのみを使用する場合、グローバルにハードアクセラレータを有効にすることは負の影響を与えません.しかし、ハードアクセラレータはすべての2 Dペイントでサポートされていないため、これを有効にすると、カスタムペイントに影響を与える可能性があります.問題は常に表示されないか、異常であるか、誤ってピクセルが表示される可能性があります.これらの問題を回避するために、Androidは以下のレベルでハードアクセルを有効または禁止する能力を提供します.
Application
Activity
Window
View
アプリケーションでカスタムペイントを使用する場合は、実際のデバイスでハードアクセラレータを有効にしてテストして問題を特定する必要があります.「サポートされていないペイント操作」の項では、ハードアクセラレータできない既知のペイント操作と、それらを避ける方法について説明します.
ハードアクセラレータを制御するには、次のレベルでハードアクセラレータをそれぞれ制御します.
Application
Activity
Window
View
Applicationレベルは、manifestファイルに次のプロパティをラベルに追加して、アプリケーション全体にハードアクセラレータを有効にします.
Activityレベルでは、アプリケーションがグローバルにハードアクセラレータを有効にするときに正しく動作しない場合は、個別のactivitiesに対してハードアクセラレータを個別に有効にできます.actityレベルでハードアクセラレータを有効または無効にするには、要素に対してandroid:hardwareAcceleratedプロパティを使用します.次の例では、アプリケーション全体でハードアクセラレータを有効にしますが、activityに対してハードアクセラレータを禁止します.
Windowレベルでより高い粒度の制御が必要な場合は、次のコードを使用してwindowのハードアクセラレータを有効にできます.
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注:Windowsレベルでハードアクセルを禁止することはできません.
Viewレベルでは、実行時に次のコードを使用して、個別のViewのハード加速を禁止できます.
myView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
注意:現在、Viewレベルでハードアクセラレータを有効にすることはできません.Viewレイヤには、ハードアクセラレータを禁止する以外の機能があります.
1つのViewがハードに加速できるかどうかを判定する1つのアプリケーションがハードウェア速度を有効にしているかどうかを知るのに役立つ場合があります.カスタムViewなどのものにとって特に重要です.あなたのアプリケーションが最新のパイプラインでサポートされていないカスタムペイントをした場合、これはもっと重要です.
アプリケーションがハード加速されているかどうかを確認するには、次の2つの方法があります.
View.MisHardwareAccelerated():Viewがハードアクセルのwindowにアタッチされている場合はtrueを返します.
Canvas.IsHardwareAccelerated():Canvasがハード加速されたらtrueに戻る.
描画コードでこれをしなければならない場合はCanvasを使用します.IsHardwareAccelerated()はViewではありません.IsHardwareAccelerated()は、ハードアクセラレータのwindowにviewを付加すると、非ハードウェア速度のCanvasを使用して描画操作を行うことができる.例えば、キャッシュのためにビットマップにviewを描画する.