public void run() { if (mSelectionBounds != null) { mWebView.addView(mSelectionDragLayer); drawSelectionHandles(); final int contentHeight = (int) Math.ceil(getDensityDependentValue(mWebView.getContentHeight(), mActivity)); final int contentWidth = mWebView.getWidth(); ViewGroup.LayoutParams layerParams = mSelectionDragLayer.getLayoutParams(); layerParams.height = contentHeight; layerParams.width = Math.max(contentWidth, mContentWidth); mSelectionDragLayer.setLayoutParams(layerParams); if (mSelectionListener != null) { mSelectionListener.startSelection(); } } }
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(); } }
@Override public boolean dispatchTouchEvent(MotionEvent e) { int scrollY = webview.getScrollY(); if (scrollY == 0 || (float) scrollY >= webview.getContentHeight() * getScale(webview) - webview.getHeight()) { setDisplayZoomControls(true); } else { setDisplayZoomControls(false); } super.dispatchTouchEvent(e); // getActionMasked since api-8 switch (e.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_UP: scale = getScale(webview); break; } return mGestureDetector.onTouchEvent(e); }
public void setLastReadState() { if (content != null) { // save last position and zoom WebView wv = (WebView) findViewById(R.id.webView1); content.setLastXScroll(wv.getScrollX()); content.setLastYScroll(wv.getScrollY()); content.setLastZoom(wv.getScale()); try { content = dao.updateNovelContent(content); } catch (Exception ex) { ex.printStackTrace(); } if (wv.getContentHeight() <= wv.getScrollY() + wv.getBottom()) { try { PageModel page = content.getPageModel(); page.setFinishedRead(true); page = dao.updatePageModel(page); Log.d( TAG, "Update Content: " + content.getLastXScroll() + " " + content.getLastYScroll() + " " + content.getLastZoom()); } catch (Exception ex) { ex.printStackTrace(); Log.d(TAG, "Error updating PageModel for Content: " + content.getPage()); } } SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = sharedPrefs.edit(); editor.putString(Constants.PREF_LAST_READ, content.getPage()); editor.commit(); } }
private static boolean canWebViewScroll(WebView view) { //noinspection deprecation return view.getMeasuredHeight() < view.getContentHeight() * view.getScale(); }