使用绘图缓存动画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毫秒左右的延迟,现在在动画实际采取。这是如何绘制缓存工作?它的用途是什么?如果不是这样,那又怎样呢?我没能找到很多例子/解释与绘图缓存工作。

谢谢!

Try with WebView capturePicture() method:

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

相关内容

最新更新