layout almost ready
This commit is contained in:
4
.settings/org.eclipse.jdt.core.prefs
Normal file
4
.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,4 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
29
AndroidManifest.xml
Normal file
29
AndroidManifest.xml
Normal file
@@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.mhalka.qurantranslationdisplay"
|
||||
android:versionCode="1"
|
||||
android:versionName="1.0" >
|
||||
|
||||
<uses-sdk
|
||||
android:minSdkVersion="14"
|
||||
android:targetSdkVersion="14" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@android:style/Theme.NoTitleBar">
|
||||
<activity
|
||||
android:name="com.mhalka.qurantranslationdisplay.ShowAyah"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@android:style/Theme.NoTitleBar" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,4 +1,5 @@
|
||||
Quran Translation Display
|
||||
=======================
|
||||
|
||||
Qur'an Translation Display
|
||||
Android App that shows Bosnian qur'an translation as a slideshow on a big display.
|
||||
|
||||
|
||||
BIN
ic_launcher-web.png
Normal file
BIN
ic_launcher-web.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
BIN
libs/android-support-v4.jar
Normal file
BIN
libs/android-support-v4.jar
Normal file
Binary file not shown.
20
proguard-project.txt
Normal file
20
proguard-project.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
# To enable ProGuard in your project, edit project.properties
|
||||
# to define the proguard.config property as described in that file.
|
||||
#
|
||||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in ${sdk.dir}/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the ProGuard
|
||||
# include property in project.properties.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
14
project.properties
Normal file
14
project.properties
Normal file
@@ -0,0 +1,14 @@
|
||||
# This file is automatically generated by Android Tools.
|
||||
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
|
||||
#
|
||||
# This file must be checked in Version Control Systems.
|
||||
#
|
||||
# To customize properties used by the Ant build system edit
|
||||
# "ant.properties", and override values to adapt the script to your
|
||||
# project structure.
|
||||
#
|
||||
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
|
||||
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
|
||||
|
||||
# Project target.
|
||||
target=android-19
|
||||
BIN
res/drawable-hdpi/ic_launcher.png
Normal file
BIN
res/drawable-hdpi/ic_launcher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
BIN
res/drawable-mdpi/ic_launcher.png
Normal file
BIN
res/drawable-mdpi/ic_launcher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
res/drawable-xhdpi/ic_launcher.png
Normal file
BIN
res/drawable-xhdpi/ic_launcher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
BIN
res/drawable-xxhdpi/ic_launcher.png
Normal file
BIN
res/drawable-xxhdpi/ic_launcher.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
44
res/layout/activity_show_ayah.xml
Normal file
44
res/layout/activity_show_ayah.xml
Normal file
@@ -0,0 +1,44 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#f6ed51"
|
||||
tools:context=".ShowAyah"
|
||||
android:paddingLeft="150dp"
|
||||
android:paddingTop="20dp"
|
||||
android:paddingBottom="20dp"
|
||||
android:paddingRight="150dp"
|
||||
>
|
||||
|
||||
<!--
|
||||
The primary full-screen view. This can be replaced with whatever view
|
||||
is needed to present your content, e.g. VideoView, SurfaceView,
|
||||
TextureView, etc.
|
||||
-->
|
||||
|
||||
<TextView
|
||||
android:id="@+id/chapter_name_verse_number"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:keepScreenOn="true"
|
||||
android:text="@string/chapter_name_verse_number"
|
||||
android:textColor="#000000"
|
||||
android:textSize="50sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/ayah"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:gravity="center"
|
||||
android:layout_centerInParent="true"
|
||||
android:keepScreenOn="true"
|
||||
android:text="@string/verse"
|
||||
android:textColor="#000000"
|
||||
android:textSize="50sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
|
||||
</RelativeLayout>
|
||||
24
res/values-v11/styles.xml
Normal file
24
res/values-v11/styles.xml
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!--
|
||||
Base application theme for API 11+. This theme completely replaces
|
||||
AppBaseTheme from res/values/styles.xml on API 11+ devices.
|
||||
-->
|
||||
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
|
||||
<!-- API 11 theme customizations can go here. -->
|
||||
</style>
|
||||
|
||||
<style name="FullscreenTheme" parent="android:Theme.Holo">
|
||||
<item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
|
||||
<item name="android:windowActionBarOverlay">true</item>
|
||||
<item name="android:windowBackground">@null</item>
|
||||
<item name="buttonBarStyle">?android:attr/buttonBarStyle</item>
|
||||
<item name="buttonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
|
||||
</style>
|
||||
|
||||
<style name="FullscreenActionBarStyle" parent="android:Widget.Holo.ActionBar">
|
||||
<item name="android:background">@color/black_overlay</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
12
res/values-v14/styles.xml
Normal file
12
res/values-v14/styles.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<resources>
|
||||
|
||||
<!--
|
||||
Base application theme for API 14+. This theme completely replaces
|
||||
AppBaseTheme from BOTH res/values/styles.xml and
|
||||
res/values-v11/styles.xml on API 14+ devices.
|
||||
-->
|
||||
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
|
||||
<!-- API 14 theme customizations can go here. -->
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
14
res/values/attrs.xml
Normal file
14
res/values/attrs.xml
Normal file
@@ -0,0 +1,14 @@
|
||||
<resources>
|
||||
|
||||
<!--
|
||||
Declare custom theme attributes that allow changing which styles are
|
||||
used for button bars depending on the API level.
|
||||
?android:attr/buttonBarStyle is new as of API 11 so this is
|
||||
necessary to support previous API levels.
|
||||
-->
|
||||
<declare-styleable name="ButtonBarContainerTheme">
|
||||
<attr name="buttonBarStyle" format="reference" />
|
||||
<attr name="buttonBarButtonStyle" format="reference" />
|
||||
</declare-styleable>
|
||||
|
||||
</resources>
|
||||
5
res/values/colors.xml
Normal file
5
res/values/colors.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<resources>
|
||||
|
||||
<color name="black_overlay">#66000000</color>
|
||||
|
||||
</resources>
|
||||
9
res/values/strings.xml
Normal file
9
res/values/strings.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Prevod Kur\'ana - Besim Korkut</string>
|
||||
|
||||
<string name="verse">Imate pouku u dvjema vojskama koje su se sukobile: jednoj, koja se borila na Allahovu putu, i drugoj, nevjerničkoj, kojoj se činilo da pred sobom ima dva puta više protivnika. A Allah Svojom pomoći čini moćnim onoga koga On hoće. To je, zaista, dalekovidna pouka.</string>
|
||||
<string name="chapter_name_verse_number">Âl-´Imrân 3:13</string>
|
||||
|
||||
</resources>
|
||||
38
res/values/styles.xml
Normal file
38
res/values/styles.xml
Normal file
@@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!--
|
||||
Base application theme, dependent on API level. This theme is replaced
|
||||
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
|
||||
-->
|
||||
<style name="AppBaseTheme" parent="android:Theme.Light">
|
||||
<!--
|
||||
Theme customizations available in newer API levels can go in
|
||||
res/values-vXX/styles.xml, while customizations related to
|
||||
backward-compatibility can go here.
|
||||
-->
|
||||
</style>
|
||||
|
||||
<!-- Application theme. -->
|
||||
<style name="AppTheme" parent="AppBaseTheme">
|
||||
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
|
||||
</style>
|
||||
|
||||
<style name="FullscreenTheme" parent="android:Theme.NoTitleBar">
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowBackground">@null</item>
|
||||
<item name="buttonBarStyle">@style/ButtonBar</item>
|
||||
<item name="buttonBarButtonStyle">@style/ButtonBarButton</item>
|
||||
</style>
|
||||
|
||||
<style name="ButtonBar">
|
||||
<item name="android:paddingLeft">2dp</item>
|
||||
<item name="android:paddingTop">5dp</item>
|
||||
<item name="android:paddingRight">2dp</item>
|
||||
<item name="android:paddingBottom">0dp</item>
|
||||
<item name="android:background">@android:drawable/bottom_bar</item>
|
||||
</style>
|
||||
|
||||
<style name="ButtonBarButton" />
|
||||
|
||||
</resources>
|
||||
33
src/com/mhalka/qurantranslationdisplay/ShowAyah.java
Normal file
33
src/com/mhalka/qurantranslationdisplay/ShowAyah.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package com.mhalka.qurantranslationdisplay;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.mhalka.qurantranslationdisplay.util.SystemUiHider;
|
||||
|
||||
/**
|
||||
* An example full-screen activity that shows and hides the system UI (i.e.
|
||||
* status bar and navigation/system bar) with user interaction.
|
||||
*
|
||||
* @see SystemUiHider
|
||||
*/
|
||||
public class ShowAyah extends Activity {
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_show_ayah);
|
||||
final View ayah = findViewById(R.id.ayah);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
172
src/com/mhalka/qurantranslationdisplay/util/SystemUiHider.java
Normal file
172
src/com/mhalka/qurantranslationdisplay/util/SystemUiHider.java
Normal file
@@ -0,0 +1,172 @@
|
||||
package com.mhalka.qurantranslationdisplay.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* A utility class that helps with showing and hiding system UI such as the
|
||||
* status bar and navigation/system bar. This class uses backward-compatibility
|
||||
* techniques described in <a href=
|
||||
* "http://developer.android.com/training/backward-compatible-ui/index.html">
|
||||
* Creating Backward-Compatible UIs</a> to ensure that devices running any
|
||||
* version of ndroid OS are supported. More specifically, there are separate
|
||||
* implementations of this abstract class: for newer devices,
|
||||
* {@link #getInstance} will return a {@link SystemUiHiderHoneycomb} instance,
|
||||
* while on older devices {@link #getInstance} will return a
|
||||
* {@link SystemUiHiderBase} instance.
|
||||
* <p>
|
||||
* For more on system bars, see <a href=
|
||||
* "http://developer.android.com/design/get-started/ui-overview.html#system-bars"
|
||||
* > System Bars</a>.
|
||||
*
|
||||
* @see android.view.View#setSystemUiVisibility(int)
|
||||
* @see android.view.WindowManager.LayoutParams#FLAG_FULLSCREEN
|
||||
*/
|
||||
public abstract class SystemUiHider {
|
||||
/**
|
||||
* When this flag is set, the
|
||||
* {@link android.view.WindowManager.LayoutParams#FLAG_LAYOUT_IN_SCREEN}
|
||||
* flag will be set on older devices, making the status bar "float" on top
|
||||
* of the activity layout. This is most useful when there are no controls at
|
||||
* the top of the activity layout.
|
||||
* <p>
|
||||
* This flag isn't used on newer devices because the <a
|
||||
* href="http://developer.android.com/design/patterns/actionbar.html">action
|
||||
* bar</a>, the most important structural element of an Android app, should
|
||||
* be visible and not obscured by the system UI.
|
||||
*/
|
||||
public static final int FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES = 0x1;
|
||||
|
||||
/**
|
||||
* When this flag is set, {@link #show()} and {@link #hide()} will toggle
|
||||
* the visibility of the status bar. If there is a navigation bar, show and
|
||||
* hide will toggle low profile mode.
|
||||
*/
|
||||
public static final int FLAG_FULLSCREEN = 0x2;
|
||||
|
||||
/**
|
||||
* When this flag is set, {@link #show()} and {@link #hide()} will toggle
|
||||
* the visibility of the navigation bar, if it's present on the device and
|
||||
* the device allows hiding it. In cases where the navigation bar is present
|
||||
* but cannot be hidden, show and hide will toggle low profile mode.
|
||||
*/
|
||||
public static final int FLAG_HIDE_NAVIGATION = FLAG_FULLSCREEN | 0x4;
|
||||
|
||||
/**
|
||||
* The activity associated with this UI hider object.
|
||||
*/
|
||||
protected Activity mActivity;
|
||||
|
||||
/**
|
||||
* The view on which {@link View#setSystemUiVisibility(int)} will be called.
|
||||
*/
|
||||
protected View mAnchorView;
|
||||
|
||||
/**
|
||||
* The current UI hider flags.
|
||||
*
|
||||
* @see #FLAG_FULLSCREEN
|
||||
* @see #FLAG_HIDE_NAVIGATION
|
||||
* @see #FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES
|
||||
*/
|
||||
protected int mFlags;
|
||||
|
||||
/**
|
||||
* The current visibility callback.
|
||||
*/
|
||||
protected OnVisibilityChangeListener mOnVisibilityChangeListener = sDummyListener;
|
||||
|
||||
/**
|
||||
* Creates and returns an instance of {@link SystemUiHider} that is
|
||||
* appropriate for this device. The object will be either a
|
||||
* {@link SystemUiHiderBase} or {@link SystemUiHiderHoneycomb} depending on
|
||||
* the device.
|
||||
*
|
||||
* @param activity The activity whose window's system UI should be
|
||||
* controlled by this class.
|
||||
* @param anchorView The view on which
|
||||
* {@link View#setSystemUiVisibility(int)} will be called.
|
||||
* @param flags Either 0 or any combination of {@link #FLAG_FULLSCREEN},
|
||||
* {@link #FLAG_HIDE_NAVIGATION}, and
|
||||
* {@link #FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES}.
|
||||
*/
|
||||
public static SystemUiHider getInstance(Activity activity, View anchorView, int flags) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
return new SystemUiHiderHoneycomb(activity, anchorView, flags);
|
||||
} else {
|
||||
return new SystemUiHiderBase(activity, anchorView, flags);
|
||||
}
|
||||
}
|
||||
|
||||
protected SystemUiHider(Activity activity, View anchorView, int flags) {
|
||||
mActivity = activity;
|
||||
mAnchorView = anchorView;
|
||||
mFlags = flags;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the system UI hider. Should be called from
|
||||
* {@link Activity#onCreate}.
|
||||
*/
|
||||
public abstract void setup();
|
||||
|
||||
/**
|
||||
* Returns whether or not the system UI is visible.
|
||||
*/
|
||||
public abstract boolean isVisible();
|
||||
|
||||
/**
|
||||
* Hide the system UI.
|
||||
*/
|
||||
public abstract void hide();
|
||||
|
||||
/**
|
||||
* Show the system UI.
|
||||
*/
|
||||
public abstract void show();
|
||||
|
||||
/**
|
||||
* Toggle the visibility of the system UI.
|
||||
*/
|
||||
public void toggle() {
|
||||
if (isVisible()) {
|
||||
hide();
|
||||
} else {
|
||||
show();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a callback, to be triggered when the system UI visibility
|
||||
* changes.
|
||||
*/
|
||||
public void setOnVisibilityChangeListener(OnVisibilityChangeListener listener) {
|
||||
if (listener == null) {
|
||||
listener = sDummyListener;
|
||||
}
|
||||
|
||||
mOnVisibilityChangeListener = listener;
|
||||
}
|
||||
|
||||
/**
|
||||
* A dummy no-op callback for use when there is no other listener set.
|
||||
*/
|
||||
private static OnVisibilityChangeListener sDummyListener = new OnVisibilityChangeListener() {
|
||||
@Override
|
||||
public void onVisibilityChange(boolean visible) {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* A callback interface used to listen for system UI visibility changes.
|
||||
*/
|
||||
public interface OnVisibilityChangeListener {
|
||||
/**
|
||||
* Called when the system UI visibility has changed.
|
||||
*
|
||||
* @param visible True if the system UI is visible.
|
||||
*/
|
||||
public void onVisibilityChange(boolean visible);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.mhalka.qurantranslationdisplay.util;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
/**
|
||||
* A base implementation of {@link SystemUiHider}. Uses APIs available in all
|
||||
* API levels to show and hide the status bar.
|
||||
*/
|
||||
public class SystemUiHiderBase extends SystemUiHider {
|
||||
/**
|
||||
* Whether or not the system UI is currently visible. This is a cached value
|
||||
* from calls to {@link #hide()} and {@link #show()}.
|
||||
*/
|
||||
private boolean mVisible = true;
|
||||
|
||||
/**
|
||||
* Constructor not intended to be called by clients. Use
|
||||
* {@link SystemUiHider#getInstance} to obtain an instance.
|
||||
*/
|
||||
protected SystemUiHiderBase(Activity activity, View anchorView, int flags) {
|
||||
super(activity, anchorView, flags);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup() {
|
||||
if ((mFlags & FLAG_LAYOUT_IN_SCREEN_OLDER_DEVICES) == 0) {
|
||||
mActivity.getWindow().setFlags(
|
||||
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
|
||||
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
|
||||
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
|
||||
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return mVisible;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hide() {
|
||||
if ((mFlags & FLAG_FULLSCREEN) != 0) {
|
||||
mActivity.getWindow().setFlags(
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
}
|
||||
mOnVisibilityChangeListener.onVisibilityChange(false);
|
||||
mVisible = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void show() {
|
||||
if ((mFlags & FLAG_FULLSCREEN) != 0) {
|
||||
mActivity.getWindow().setFlags(
|
||||
0,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
}
|
||||
mOnVisibilityChangeListener.onVisibilityChange(true);
|
||||
mVisible = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package com.mhalka.qurantranslationdisplay.util;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.os.Build;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
/**
|
||||
* An API 11+ implementation of {@link SystemUiHider}. Uses APIs available in
|
||||
* Honeycomb and later (specifically {@link View#setSystemUiVisibility(int)}) to
|
||||
* show and hide the system UI.
|
||||
*/
|
||||
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
|
||||
public class SystemUiHiderHoneycomb extends SystemUiHiderBase {
|
||||
/**
|
||||
* Flags for {@link View#setSystemUiVisibility(int)} to use when showing the
|
||||
* system UI.
|
||||
*/
|
||||
private int mShowFlags;
|
||||
|
||||
/**
|
||||
* Flags for {@link View#setSystemUiVisibility(int)} to use when hiding the
|
||||
* system UI.
|
||||
*/
|
||||
private int mHideFlags;
|
||||
|
||||
/**
|
||||
* Flags to test against the first parameter in
|
||||
* {@link android.view.View.OnSystemUiVisibilityChangeListener#onSystemUiVisibilityChange(int)}
|
||||
* to determine the system UI visibility state.
|
||||
*/
|
||||
private int mTestFlags;
|
||||
|
||||
/**
|
||||
* Whether or not the system UI is currently visible. This is cached from
|
||||
* {@link android.view.View.OnSystemUiVisibilityChangeListener}.
|
||||
*/
|
||||
private boolean mVisible = true;
|
||||
|
||||
/**
|
||||
* Constructor not intended to be called by clients. Use
|
||||
* {@link SystemUiHider#getInstance} to obtain an instance.
|
||||
*/
|
||||
protected SystemUiHiderHoneycomb(Activity activity, View anchorView, int flags) {
|
||||
super(activity, anchorView, flags);
|
||||
|
||||
mShowFlags = View.SYSTEM_UI_FLAG_VISIBLE;
|
||||
mHideFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
|
||||
mTestFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
|
||||
|
||||
if ((mFlags & FLAG_FULLSCREEN) != 0) {
|
||||
// If the client requested fullscreen, add flags relevant to hiding
|
||||
// the status bar. Note that some of these constants are new as of
|
||||
// API 16 (Jelly Bean). It is safe to use them, as they are inlined
|
||||
// at compile-time and do nothing on pre-Jelly Bean devices.
|
||||
mShowFlags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
|
||||
mHideFlags |= View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_FULLSCREEN;
|
||||
}
|
||||
|
||||
if ((mFlags & FLAG_HIDE_NAVIGATION) != 0) {
|
||||
// If the client requested hiding navigation, add relevant flags.
|
||||
mShowFlags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
|
||||
mHideFlags |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
|
||||
mTestFlags |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
|
||||
}
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void setup() {
|
||||
mAnchorView.setOnSystemUiVisibilityChangeListener(mSystemUiVisibilityChangeListener);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void hide() {
|
||||
mAnchorView.setSystemUiVisibility(mHideFlags);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public void show() {
|
||||
mAnchorView.setSystemUiVisibility(mShowFlags);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return mVisible;
|
||||
}
|
||||
|
||||
private View.OnSystemUiVisibilityChangeListener mSystemUiVisibilityChangeListener
|
||||
= new View.OnSystemUiVisibilityChangeListener() {
|
||||
@Override
|
||||
public void onSystemUiVisibilityChange(int vis) {
|
||||
// Test against mTestFlags to see if the system UI is visible.
|
||||
if ((vis & mTestFlags) != 0) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
|
||||
// Pre-Jelly Bean, we must manually hide the action bar
|
||||
// and use the old window flags API.
|
||||
mActivity.getActionBar().hide();
|
||||
mActivity.getWindow().setFlags(
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
}
|
||||
|
||||
// Trigger the registered listener and cache the visibility
|
||||
// state.
|
||||
mOnVisibilityChangeListener.onVisibilityChange(false);
|
||||
mVisible = false;
|
||||
|
||||
} else {
|
||||
mAnchorView.setSystemUiVisibility(mShowFlags);
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
|
||||
// Pre-Jelly Bean, we must manually show the action bar
|
||||
// and use the old window flags API.
|
||||
mActivity.getActionBar().show();
|
||||
mActivity.getWindow().setFlags(
|
||||
0,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
}
|
||||
|
||||
// Trigger the registered listener and cache the visibility
|
||||
// state.
|
||||
mOnVisibilityChangeListener.onVisibilityChange(true);
|
||||
mVisible = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user