private void handleHighlightAyah(int sura, int ayah, HighlightType type, boolean scrollToAyah) { mImageView.highlightAyah(sura, ayah, type); if (scrollToAyah && mQuranPageLayout.canScroll()) { final RectF highlightBounds = ImageAyahUtils.getYBoundsForHighlight(mCoordinatesData, sura, ayah); if (highlightBounds != null) { int screenHeight = QuranScreenInfo.getInstance().getHeight(); Matrix matrix = mImageView.getImageMatrix(); matrix.mapRect(highlightBounds); int currentScrollY = mQuranPageLayout.getCurrentScrollY(); final boolean topOnScreen = highlightBounds.top > currentScrollY && highlightBounds.top < currentScrollY + screenHeight; final boolean bottomOnScreen = highlightBounds.bottom > currentScrollY && highlightBounds.bottom < currentScrollY + screenHeight; if (!topOnScreen || !bottomOnScreen) { int y = (int) highlightBounds.top - (int) (0.05 * screenHeight); mQuranPageLayout.smoothScrollLayoutTo(y); } } } mImageView.invalidate(); }
@Override public AyahToolBar.AyahToolBarPosition getToolBarPosition( int sura, int ayah, int toolBarWidth, int toolBarHeight) { final List<AyahBounds> bounds = mCoordinatesData == null ? null : mCoordinatesData.get(sura + ":" + ayah); final int screenWidth = mImageView == null ? 0 : mImageView.getWidth(); if (bounds != null && screenWidth > 0) { final int screenHeight = QuranScreenInfo.getInstance().getHeight(); AyahToolBar.AyahToolBarPosition position = ImageAyahUtils.getToolBarPosition( bounds, mImageView.getImageMatrix(), screenWidth, screenHeight, toolBarWidth, toolBarHeight); // If we're in landscape mode (wrapped in SV) update the y-offset position.yScroll = 0 - mQuranPageLayout.getCurrentScrollY(); return position; } return null; }