3

所以我正在做一个翻卡动画,它的 webview 占据了大约 80% 的屏幕。 翻转卡片动画教程

自从我使用 Spannables 从 TextView 切换到 WebView 后,动画看起来有点不对劲,所以我放慢了速度,我注意到随着 3d 翻转的发生,线条会开始从 WebView 的底部和顶部消失随着动画的进行。它困扰着我,所以我想解决它。

我的解决方案:我添加了一个ImageView,当动画开始时,我从WebView中拉出绘图缓存位图,使WebView不可见,将WebView绘图缓存位图设置为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 回答