所以我正在做一个带有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毫秒左右。这是绘图缓存的工作原理吗?它是如何被使用的?如果不是这样,那怎么样?我无法找到许多使用绘图缓存的示例/解释。
谢谢!
答案 0 :(得分:1)
尝试使用WebView capturePicture()方法:
Picture picture = view.capturePicture();
Bitmap b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888);