所以我正在做一个翻卡动画,它的 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 毫秒左右的延迟。这是绘图缓存的工作原理吗?它的用途是什么?如果不是这样,那怎么办?我找不到很多使用绘图缓存的示例/解释。
谢谢!