3

だから私は画面の約 80% を占める webview でフリップ カード アニメーションをやっています。 フリップ カード アニメーションのチュートリアル

Spannables を使用して TextView から WebView に切り替えて以来、アニメーションが少しずれているように見えたので、速度を落としました。3D フリップが発生すると、WebView の下部と上部から線が消え始めることに気付きました。アニメーションが進むにつれて。気になったので、直したいと思いました。

私の解決策: アニメーションの開始時に WebView から描画キャッシュ ビットマップを取得し、WebView を非表示にし、WebView 描画キャッシュ ビットマップを ImageView に設定し、ImageView を表示する ImageView を追加しました。

webview の作成により:

mWebView.setAnimationCacheEnabled(false);
mWebView.setDrawingCacheEnabled(true);
mWebView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_AUTO);

アニメーションの開始時と停止時:

public void setIsAnimating(boolean isAnimating) {
    mIsAnimating = isAnimating;
    if (mIsAnimating) {
        Bitmap webCache = mWebView.getDrawingCache();
        mCachedView.setImageBitmap(webCache);

        mCachedView.setVisibility(View.VISIBLE);
        mWebView.setVisibility(View.INVISIBLE);
        mProgressView.setVisibility(View.GONE);
    } else {
        mWebView.setVisibility(View.VISIBLE);
        mCachedView.setVisibility(View.GONE);
        mProgressView.setVisibility(View.GONE);
    }
}

このソリューションはうまく機能しているように見えますが、アニメーションが実際に開始されるまでにわずか 100 ミリ秒程度の遅れが見られます。これが描画キャッシュの仕組みですか? どのように使用されることを意味しますか?そうでない場合は、どうすればよいですか?描画キャッシュで動作する多くの例/説明を見つけることができませんでした。

ありがとう!

4

1 に答える 1

1

WebView の capturePicture() メソッドを試してください:

Picture picture = view.capturePicture();

Bitmap  b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888);
于 2014-01-23T16:33:15.420 に答える