下面列出了android.webkit.WebView#getScale ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private Bitmap captureWebView3(WebView wv) {
try {
float scale = wv.getScale();
int height = (int) (wv.getContentHeight() * scale + 0.5);
Bitmap bitmap = Bitmap.createBitmap(wv.getWidth(), height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
wv.draw(canvas);
return bitmap;
} catch (Exception e) {
try {
openCache(wv);
return wv.getDrawingCache();
} finally {
closeCache(wv);
}
}
}
/**
* 规避 contentHeight 异步变化
* @return
*/
private boolean canWebViewScrollUp(WebView webView) {
if (mWebViewContentHeight == 0) {
mWebViewContentHeight = (int) (webView.getContentHeight() * webView.getScale());
}
final int offset = webView.getScrollY();
final int range = mWebViewContentHeight - webView.getHeight();
if (range == 0) {
return false;
}
return offset > 2;
}
/**
* 规避 contentHeight 异步变化
* @return
*/
private boolean canWebViewScrollDown(WebView webView) {
if (mWebViewContentHeight == 0) {
mWebViewContentHeight = (int) (webView.getContentHeight() * webView.getScale());
}
final int offset = webView.getScrollY();
final int range = mWebViewContentHeight - webView.getHeight();
if (range == 0) {
return false;
}
return offset < range - 2;
}
private static void createType2(WebView webView, FileHelper.OnSavedToGalleryListener listener) {
float scale = webView.getScale();
int webViewHeight = (int) (webView.getContentHeight() * scale + 0.5);
Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(), webViewHeight, Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
webView.draw(canvas);
try {
FileHelper.saveImageToGallery(PalmApp.getContext(), bitmap, true, listener);
bitmap.recycle();
} catch (Exception e) {
LogUtils.e(e.getMessage());
}
}
/**
* Sets the location of a {@code WebElement}
*
* @param webElement the {@code TextView} object to set location
* @param webView the {@code WebView} the text is shown in
* @param x the x location to set
* @param y the y location to set
* @param width the width to set
* @param height the height to set
*/
private void setLocation(WebElement webElement, WebView webView, int x, int y, int width, int height ){
float scale = webView.getScale();
int[] locationOfWebViewXY = new int[2];
webView.getLocationOnScreen(locationOfWebViewXY);
int locationX = (int) (locationOfWebViewXY[0] + (x + (Math.floor(width / 2))) * scale);
int locationY = (int) (locationOfWebViewXY[1] + (y + (Math.floor(height / 2))) * scale);
webElement.setLocationX(locationX);
webElement.setLocationY(locationY);
}
private void invalidateDividersForWebView(WebView view, final boolean setForTop, boolean setForBottom, boolean hasButtons) {
if (setForTop) {
mDrawTopDivider = mTitleBar != null &&
mTitleBar.getVisibility() != View.GONE &&
//Not scrolled to the top.
view.getScrollY() + view.getPaddingTop() > 0;
}
if (setForBottom) {
//noinspection deprecation
mDrawBottomDivider = hasButtons &&
view.getScrollY() + view.getMeasuredHeight() - view.getPaddingBottom() < view.getContentHeight() * view.getScale();
}
}
public static boolean isWebViewToBottom(WebView webview, int mTouchSlop) {
return webview != null && ((webview.getContentHeight() * webview.getScale() - (webview.getHeight() + webview.getScrollY())) <= 2 * mTouchSlop);
}
private static boolean canWebViewScroll(WebView view) {
//noinspection deprecation
return view.getMeasuredHeight() < view.getContentHeight() * view.getScale();
}
public static boolean isWebViewToBottom(WebView webview, int mTouchSlop) {
return webview != null && ((webview.getContentHeight() * webview.getScale() - (webview.getHeight() + webview.getScrollY())) <= 2 * mTouchSlop);
}
public static boolean isWebViewToBottom(WebView webView) {
return webView != null && webView.getContentHeight() * webView.getScale() == (webView.getScrollY() + webView.getMeasuredHeight());
}
public static boolean isWebViewToBottom(WebView webView) {
return webView != null && webView.getContentHeight() * webView.getScale() == (webView.getScrollY() + webView.getMeasuredHeight());
}