使用绘图缓存为WebView设置动画。我这样做了吗?

时间:2013-04-08 04:39:12

标签: android android-animation

所以我正在做一个带有webview的翻转卡动画,它占据了大约80%的屏幕。 Flip Card Animation Tutorial

自从我使用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毫秒左右。这是绘图缓存的工作原理吗?它是如何被使用的?如果不是这样,那怎么样?我无法找到许多使用绘图缓存的示例/解释。

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用WebView capturePicture()方法:

Picture picture = view.capturePicture();

Bitmap  b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888);