diff --git a/app-android/app/build.gradle b/app-android/app/build.gradle
index 4e0897f..bab7253 100644
--- a/app-android/app/build.gradle
+++ b/app-android/app/build.gradle
@@ -7,7 +7,7 @@ android {
defaultConfig {
applicationId "at.bitfire.gfxtablet"
minSdkVersion 14
- targetSdkVersion 14
+ targetSdkVersion 22
}
buildTypes {
@@ -19,5 +19,5 @@ android {
}
dependencies {
- compile "com.android.support:appcompat-v7:21.0.0"
+ compile "com.android.support:appcompat-v7:21.0.+"
}
diff --git a/app-android/app/src/main/AndroidManifest.xml b/app-android/app/src/main/AndroidManifest.xml
index b7ad3a2..6ac0cc9 100644
--- a/app-android/app/src/main/AndroidManifest.xml
+++ b/app-android/app/src/main/AndroidManifest.xml
@@ -6,7 +6,7 @@
+ android:targetSdkVersion="22" />
diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java
index 76c6d99..ce92d14 100644
--- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java
+++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasActivity.java
@@ -1,5 +1,6 @@
package at.bitfire.gfxtablet;
+import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
@@ -8,20 +9,35 @@ import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity;
+import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;
-public class CanvasActivity extends ActionBarActivity {
+public class CanvasActivity extends ActionBarActivity implements View.OnSystemUiVisibilityChangeListener {
NetworkClient netClient;
+ CanvasView canvas;
+
+ boolean fullScreen = false;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
netClient = new NetworkClient(PreferenceManager.getDefaultSharedPreferences(this));
+ new Thread(netClient).start();
+
+ canvas = new CanvasView(CanvasActivity.this, netClient);
+ }
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+
+ new ConfigureNetworkingTask().execute();
}
@Override
@@ -29,16 +45,16 @@ public class CanvasActivity extends ActionBarActivity {
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
- if (prefs.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, false))
+ if (prefs.getBoolean(SettingsActivity.KEY_KEEP_DISPLAY_ACTIVE, true))
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-
- new ConfigureNetworkingTask().execute();
+ else
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
@Override
- protected void onDestroy() {
- super.onDestroy();
+ protected void onStop() {
netClient.getQueue().add(new NetEvent(NetEvent.Type.TYPE_DISCONNECT));
+ super.onStop();
}
@Override
@@ -48,12 +64,14 @@ public class CanvasActivity extends ActionBarActivity {
}
@Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- menu.findItem(R.id.menu_fullscreen).setVisible(Build.VERSION.SDK_INT >= 19);
- return true;
+ public void onBackPressed() {
+ if (fullScreen)
+ switchFullScreen(null);
+ else
+ super.onBackPressed();
}
- public void showAbout(MenuItem item) {
+ public void showAbout(MenuItem item) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(("https://rfc2822.github.io/GfxTablet/"))));
}
@@ -61,16 +79,31 @@ public class CanvasActivity extends ActionBarActivity {
startActivityForResult(new Intent(this, SettingsActivity.class), 0);
}
+
public void switchFullScreen(MenuItem item) {
final View decorView = getWindow().getDecorView();
- decorView.setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
- View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN |
- View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | // hide nav bar
- View.SYSTEM_UI_FLAG_FULLSCREEN | // hide status bar
- View.SYSTEM_UI_FLAG_IMMERSIVE
- );
+ int uiFlags = decorView.getSystemUiVisibility();
+
+ if (Build.VERSION.SDK_INT >= 14)
+ uiFlags ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+ if (Build.VERSION.SDK_INT >= 16)
+ uiFlags ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
+ if (Build.VERSION.SDK_INT >= 18)
+ uiFlags ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+
+ decorView.setOnSystemUiVisibilityChangeListener(this);
+ decorView.setSystemUiVisibility(uiFlags);
+ }
+
+ @Override
+ public void onSystemUiVisibilityChange(int visibility) {
+ // show/hide action bar according to full-screen mode
+ if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) != 0) {
+ CanvasActivity.this.getSupportActionBar().hide();
+ fullScreen = true;
+ Toast.makeText(CanvasActivity.this, "Press Back button to leave full-screen mode.", Toast.LENGTH_LONG).show();
+ } else
+ CanvasActivity.this.getSupportActionBar().show();
}
@@ -82,9 +115,7 @@ public class CanvasActivity extends ActionBarActivity {
protected void onPostExecute(Boolean success) {
if (success) {
- setContentView(new CanvasView(CanvasActivity.this, netClient));
- new Thread(netClient).start();
-
+ setContentView(canvas);
Toast.makeText(CanvasActivity.this, "Touch events will be sent to " + netClient.destAddress.getHostAddress() + ":" + NetworkClient.GFXTABLET_PORT, Toast.LENGTH_LONG).show();
} else
setContentView(R.layout.activity_no_host);
diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java
index ad68071..a1866b8 100644
--- a/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java
+++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/CanvasView.java
@@ -5,6 +5,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.preference.PreferenceManager;
+import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
@@ -22,21 +23,29 @@ public class CanvasView extends View {
public CanvasView(Context context, NetworkClient networkClient) {
super(context);
-
- netClient = networkClient;
+ this.netClient = networkClient;
// process preferences
settings = PreferenceManager.getDefaultSharedPreferences(context);
acceptStylusOnly = settings.getBoolean(SettingsActivity.KEY_PREF_STYLUS_ONLY, false);
- setBackgroundColor(settings.getBoolean(SettingsActivity.KEY_DARK_CANVAS, false) ? Color.BLACK : Color.WHITE);
- }
+ }
- @Override
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ if (settings.getBoolean(SettingsActivity.KEY_DARK_CANVAS, false))
+ setBackgroundColor(Color.BLACK);
+ else
+ setBackgroundResource(R.drawable.bg_grid_pattern);
+ }
+
+ @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+ Log.i(TAG, "Canvas size changed: " + w + "x" + h + " (before: " + oldw + "x" + oldh + ")");
maxX = w;
maxY = h;
}
-
+
@Override
public boolean onGenericMotionEvent(MotionEvent event) {
if (isEnabled()) {
diff --git a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java
index 3587e7e..2203072 100644
--- a/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java
+++ b/app-android/app/src/main/java/at/bitfire/gfxtablet/SettingsActivity.java
@@ -1,5 +1,6 @@
package at.bitfire.gfxtablet;
+import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
diff --git a/app-android/app/src/main/res/drawable/bg_grid.png b/app-android/app/src/main/res/drawable/bg_grid.png
new file mode 100644
index 0000000..03e0b25
Binary files /dev/null and b/app-android/app/src/main/res/drawable/bg_grid.png differ
diff --git a/app-android/app/src/main/res/drawable/bg_grid_pattern.xml b/app-android/app/src/main/res/drawable/bg_grid_pattern.xml
new file mode 100644
index 0000000..5719a5a
--- /dev/null
+++ b/app-android/app/src/main/res/drawable/bg_grid_pattern.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/app-android/app/src/main/res/menu/activity_canvas.xml b/app-android/app/src/main/res/menu/activity_canvas.xml
index e2f216c..ac5cfb5 100644
--- a/app-android/app/src/main/res/menu/activity_canvas.xml
+++ b/app-android/app/src/main/res/menu/activity_canvas.xml
@@ -1,22 +1,22 @@
\ No newline at end of file
diff --git a/app-android/app/src/main/res/values/styles.xml b/app-android/app/src/main/res/values/styles.xml
index 7d0903b..a5343bf 100644
--- a/app-android/app/src/main/res/values/styles.xml
+++ b/app-android/app/src/main/res/values/styles.xml
@@ -1,10 +1,12 @@
-
-
+
+
\ No newline at end of file
diff --git a/app-android/app/src/main/res/xml/preferences.xml b/app-android/app/src/main/res/xml/preferences.xml
index 85b781f..88c4254 100644
--- a/app-android/app/src/main/res/xml/preferences.xml
+++ b/app-android/app/src/main/res/xml/preferences.xml
@@ -11,7 +11,7 @@