-1

WebView の 1 つでハードウェア アクセラレーションを有効にする必要があります。これまでのところ、11 または 13 (それぞれ Android 3.0 および 3.2) のターゲット API を使用してプロジェクトをビルドすると、ハードウェア アクセラレーションが有効になり、すべて問題ないことがわかりました。しかし奇妙な点は、API 17 または 18 を使用してプロジェクトをビルドすると、ハードウェア アクセラレーションをオンにするすべての努力が何らかの理由で無視されることです。

これまでのところ、私は試しました:

1)android:hardwareAccelerated="true"マニフェストの my タグに設定する

2) 同じですが、WebView を含むアクティビティの場合

3) 私のアクティビティの onCreate の次のコード (コンテンツ ビューを設定する前):

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

4) 同じですが、getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

動作している場合でも、常にwebView.isHardwareAccelerated()false を返します。

助けてください。このため、API 13 に固執するのはかなり不自由です...

4

1 に答える 1

4

API 18 でテスト済み:

Runnableに aを投稿してチェックを実行しWebViewます。

WebView webView = (WebView) findViewById(R.id.webview_id);

// Shows: "Is hardware accelerated? false"
// Toast.makeText(YourActivity.this, "Is hardware accelerated? " + 
                                             // webView.isHardwareAccelerated(),
                                                 // Toast.LENGTH_LONG).show();

webView.post(new Runnable() {

    @Override
    public void run() {
        Shows: "Is hardware accelerated? true"
        Toast.makeText(YourActivity.this, "Is hardware accelerated? " + 
                                              webView.isHardwareAccelerated(),
                                                  Toast.LENGTH_LONG).show();

        if (webView.isHardwareAccelerated()) {
            // isAccelerated();
        } else {
            // isNotAccelerated();
        }
    }
});

ハードウェア アクセラレーションのリソース ページから:

Target API レベルが 14 以上の場合、ハードウェア アクセラレーションはデフォルトで有効になりますが、明示的に有効にすることもできます。

表示している画像がまだピクセル化されている場合は、次の設定を試してください。

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

画像のピクセル化が改善されるかどうかを確認します。

ハードウェア アクセラレーションのリソース ページを読むことを検討してください。

于 2013-09-02T07:06:53.520 に答える