Fullscreen fix #353

This commit is contained in:
mhutti1 2017-02-06 22:34:15 +00:00
parent 1c736ee33b
commit 8aa0fa391d
2 changed files with 38 additions and 28 deletions

View File

@ -575,14 +575,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
getCurrentWebView().loadUrl("javascript:(" + documentParserJs + ")()"); getCurrentWebView().loadUrl("javascript:(" + documentParserJs + ")()");
} }
private KiwixWebView getWebView(String url) { private void shrinkDrawers() {
KiwixWebView webView;
if (isHideToolbar) {
webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer);
((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener(
new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() {
@Override
public void onToolbarDisplayed() {
ViewGroup.MarginLayoutParams leftLayoutMargins = (ViewGroup.MarginLayoutParams) tabDrawerLeftContainer.getLayoutParams(), ViewGroup.MarginLayoutParams leftLayoutMargins = (ViewGroup.MarginLayoutParams) tabDrawerLeftContainer.getLayoutParams(),
rightLayoutMargins = (ViewGroup.MarginLayoutParams) tableDrawerRightContainer.getLayoutParams(); rightLayoutMargins = (ViewGroup.MarginLayoutParams) tableDrawerRightContainer.getLayoutParams();
@ -592,8 +585,7 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
tableDrawerRightContainer.setLayoutParams(rightLayoutMargins); tableDrawerRightContainer.setLayoutParams(rightLayoutMargins);
} }
@Override private void expandDrawers() {
public void onToolbarHidden() {
ViewGroup.MarginLayoutParams leftLayoutMargins = (ViewGroup.MarginLayoutParams) tabDrawerLeftContainer.getLayoutParams(), ViewGroup.MarginLayoutParams leftLayoutMargins = (ViewGroup.MarginLayoutParams) tabDrawerLeftContainer.getLayoutParams(),
rightLayoutMargins = (ViewGroup.MarginLayoutParams) tableDrawerRightContainer.getLayoutParams(); rightLayoutMargins = (ViewGroup.MarginLayoutParams) tableDrawerRightContainer.getLayoutParams();
leftLayoutMargins.topMargin = 0; leftLayoutMargins.topMargin = 0;
@ -601,6 +593,22 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
tabDrawerLeftContainer.setLayoutParams(leftLayoutMargins); tabDrawerLeftContainer.setLayoutParams(leftLayoutMargins);
tableDrawerRightContainer.setLayoutParams(rightLayoutMargins); tableDrawerRightContainer.setLayoutParams(rightLayoutMargins);
} }
private KiwixWebView getWebView(String url) {
KiwixWebView webView;
if (isHideToolbar) {
webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer);
((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener(
new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() {
@Override
public void onToolbarDisplayed() {
shrinkDrawers();
}
@Override
public void onToolbarHidden() {
expandDrawers();
}
} }
); );
} else { } else {
@ -783,10 +791,6 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
toolbarContainer.setVisibility(View.GONE); toolbarContainer.setVisibility(View.GONE);
exitFullscreenButton.setVisibility(View.VISIBLE); exitFullscreenButton.setVisibility(View.VISIBLE);
if (menu != null) {
menu.findItem(R.id.menu_fullscreen)
.setTitle(getResources().getString(R.string.menu_exitfullscreen));
}
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
getWindow().addFlags(fullScreenFlag); getWindow().addFlags(fullScreenFlag);
@ -795,15 +799,13 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
SharedPreferences.Editor editor = settings.edit(); SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_FULLSCREEN, true); editor.putBoolean(PREF_FULLSCREEN, true);
editor.apply(); editor.apply();
expandDrawers();
isFullscreenOpened = true; isFullscreenOpened = true;
getCurrentWebView().requestLayout();
} }
private void closeFullScreen() { private void closeFullScreen() {
toolbarContainer.setVisibility(View.VISIBLE); toolbarContainer.setVisibility(View.VISIBLE);
if (menu != null) {
menu.findItem(R.id.menu_fullscreen)
.setTitle(getResources().getString(R.string.menu_fullscreen));
}
exitFullscreenButton.setVisibility(View.INVISIBLE); exitFullscreenButton.setVisibility(View.INVISIBLE);
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
@ -813,7 +815,9 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
SharedPreferences.Editor editor = settings.edit(); SharedPreferences.Editor editor = settings.edit();
editor.putBoolean(PREF_FULLSCREEN, false); editor.putBoolean(PREF_FULLSCREEN, false);
editor.apply(); editor.apply();
shrinkDrawers();
isFullscreenOpened = false; isFullscreenOpened = false;
getCurrentWebView().requestLayout();
} }
public void showHelpPage() { public void showHelpPage() {
@ -924,11 +928,6 @@ public class KiwixMobileActivity extends AppCompatActivity implements WebViewCal
menu.findItem(R.id.menu_randomarticle).setVisible(true); menu.findItem(R.id.menu_randomarticle).setVisible(true);
menu.findItem(R.id.menu_searchintext).setVisible(true); menu.findItem(R.id.menu_searchintext).setVisible(true);
if (isFullscreenOpened) {
menu.findItem(R.id.menu_fullscreen)
.setTitle(getResources().getString(R.string.menu_exitfullscreen));
}
MenuItem searchItem = menu.findItem(R.id.menu_search); MenuItem searchItem = menu.findItem(R.id.menu_search);
searchItem.setVisible(true); searchItem.setVisible(true);
final String zimFile = ZimContentProvider.getZimFile(); final String zimFile = ZimContentProvider.getZimFile();

View File

@ -3,6 +3,7 @@ package org.kiwix.kiwixmobile.views.web;
import android.content.Context; import android.content.Context;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.kiwix.kiwixmobile.KiwixMobileActivity;
import org.kiwix.kiwixmobile.WebViewCallback; import org.kiwix.kiwixmobile.WebViewCallback;
import org.kiwix.kiwixmobile.utils.DimenUtils; import org.kiwix.kiwixmobile.utils.DimenUtils;
@ -13,16 +14,26 @@ import org.kiwix.kiwixmobile.utils.DimenUtils;
public class ToolbarStaticKiwixWebView extends KiwixWebView { public class ToolbarStaticKiwixWebView extends KiwixWebView {
private int heightDifference; private int heightDifference;
private int statusBarHeight;
private ViewGroup viewGroup;
public ToolbarStaticKiwixWebView(Context context, WebViewCallback callback, ViewGroup toolbarLayout) { public ToolbarStaticKiwixWebView(Context context, WebViewCallback callback, ViewGroup toolbarLayout) {
super(context, callback); super(context, callback);
toolbarLayout.setTranslationY(DimenUtils.getTranslucentStatusBarHeight(context)); statusBarHeight = DimenUtils.getTranslucentStatusBarHeight(context);
viewGroup = toolbarLayout;
viewGroup.setTranslationY(statusBarHeight);
heightDifference = DimenUtils.getToolbarAndStatusBarHeight(context); heightDifference = DimenUtils.getToolbarAndStatusBarHeight(context);
setTranslationY(heightDifference); setTranslationY(heightDifference);
} }
@Override @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if ((KiwixMobileActivity.isFullscreenOpened)) {
setTranslationY(0);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
} else {
setTranslationY(heightDifference);
super.onMeasure(widthMeasureSpec, heightMeasureSpec - heightDifference); super.onMeasure(widthMeasureSpec, heightMeasureSpec - heightDifference);
} }
} }
}