Skip to content

Commit fec636a

Browse files
committed
Handle back an touch events properly
Signed-off-by: Umair Khan <[email protected]>
1 parent e218744 commit fec636a

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

core/src/processing/core/PApplet.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,7 @@ public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
846846

847847
@Override
848848
public void onWindowFocusChanged(boolean hasFocus) {
849+
super.onWindowFocusChanged(hasFocus);
849850
surfaceWindowFocusChanged(hasFocus);
850851
}
851852

@@ -858,13 +859,15 @@ public boolean onTouchEvent(MotionEvent event) {
858859

859860
@Override
860861
public boolean onKeyDown(int code, android.view.KeyEvent event) {
861-
return surfaceKeyDown(code, event);
862+
surfaceKeyDown(code, event);
863+
return super.onKeyDown(code, event);
862864
}
863865

864866

865867
@Override
866868
public boolean onKeyUp(int code, android.view.KeyEvent event) {
867-
return surfaceKeyUp(code, event);
869+
surfaceKeyUp(code, event);
870+
return super.onKeyUp(code, event);
868871
}
869872

870873

@@ -1011,6 +1014,7 @@ public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
10111014
*/
10121015
@Override
10131016
public void onWindowFocusChanged(boolean hasFocus) {
1017+
super.onWindowFocusChanged(hasFocus);
10141018
surfaceWindowFocusChanged(hasFocus);
10151019
// super.onWindowFocusChanged(hasFocus);
10161020
// focused = hasFocus;
@@ -1032,13 +1036,15 @@ public boolean onTouchEvent(MotionEvent event) {
10321036

10331037
@Override
10341038
public boolean onKeyDown(int code, android.view.KeyEvent event) {
1035-
return surfaceKeyDown(code, event);
1039+
surfaceKeyDown(code, event);
1040+
return super.onKeyDown(code, event);
10361041
}
10371042

10381043

10391044
@Override
10401045
public boolean onKeyUp(int code, android.view.KeyEvent event) {
1041-
return surfaceKeyUp(code, event);
1046+
surfaceKeyUp(code, event);
1047+
return super.onKeyUp(code, event);
10421048
}
10431049

10441050

@@ -1059,7 +1065,6 @@ public boolean onKeyUp(int code, android.view.KeyEvent event) {
10591065
* by Android as well.
10601066
*/
10611067
public void surfaceWindowFocusChanged(boolean hasFocus) {
1062-
super.onWindowFocusChanged(hasFocus);
10631068
focused = hasFocus;
10641069
if (focused) {
10651070
focusGained();
@@ -1081,17 +1086,17 @@ public boolean surfaceTouchEvent(MotionEvent event) {
10811086
}
10821087

10831088

1084-
public boolean surfaceKeyDown(int code, android.view.KeyEvent event) {
1089+
public void surfaceKeyDown(int code, android.view.KeyEvent event) {
10851090
// System.out.println("got onKeyDown for " + code + " " + event);
10861091
nativeKeyEvent(event);
1087-
return super.onKeyDown(code, event);
1092+
// return super.onKeyDown(code, event);
10881093
}
10891094

10901095

1091-
public boolean surfaceKeyUp(int code, android.view.KeyEvent event) {
1096+
public void surfaceKeyUp(int code, android.view.KeyEvent event) {
10921097
// System.out.println("got onKeyUp for " + code + " " + event);
10931098
nativeKeyEvent(event);
1094-
return super.onKeyUp(code, event);
1099+
// return super.onKeyUp(code, event);
10951100
}
10961101

10971102

@@ -2906,7 +2911,6 @@ protected void handleKeyEvent(KeyEvent event) {
29062911
}
29072912

29082913

2909-
@Override
29102914
public void onBackPressed() {
29112915
exit();
29122916
}

core/src/processing/core/PGraphicsAndroid2D.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1059,7 +1059,7 @@ protected void imageImpl(PImage src,
10591059
// but I don't think it is particularly efficient, as the bitmaps are stored
10601060
// in native heap for Android 10 and older.
10611061
MemoryInfo mi = new MemoryInfo();
1062-
ActivityManager activityManager = (ActivityManager) parent.getApplicationContext().getSystemService(android.content.Context.ACTIVITY_SERVICE);
1062+
ActivityManager activityManager = (ActivityManager) parent.getActivity().getSystemService(android.content.Context.ACTIVITY_SERVICE);
10631063
activityManager.getMemoryInfo(mi);
10641064
if (mi.lowMemory) {
10651065
src.bitmap.recycle();

src/processing/mode/android/AndroidBuild.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,7 @@ private void writeMainActivity(final File file) {
869869
writer.println("package " + basePackage + "." + sketch.getName());
870870
writer.println("import android.app.Activity;");
871871
writer.println("public class TestActivity extends Activity {");
872+
writer.println(" PApplet fragment;");
872873
writer.println(" @Override");
873874
writer.println(" protected void onCreate(Bundle savedInstanceState) {");
874875
writer.println(" super.onCreate(savedInstanceState);");
@@ -878,7 +879,19 @@ private void writeMainActivity(final File file) {
878879
+ "WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);");
879880
writer.println("window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,"
880881
+ "WindowManager.LayoutParams.FLAG_FULLSCREEN);");
881-
writer.println(" setContentView(R.layout.main);");
882+
writer.println(" FrameLayout frame = new FrameLayout(this)");
883+
writer.println(" setContentView(frame, new LayoutParams(LayoutParams.MATCH_PARENT, "
884+
+ "LayoutParams.MATCH_PARENT));");
885+
writer.println(" if (savedInstanceState == null) {");
886+
writer.println(" fragment = new " + sketchClassName + "()");
887+
writer.println(" FragmentTransaction ft = getFragmentManager().beginTransaction();");
888+
writer.println(" ft.add(frame.getId(), fragment).commit();");
889+
writer.println(" }");
890+
writer.println(" }");
891+
writer.println(" @Override");
892+
writer.println(" public void onBackPressed() {");
893+
writer.println(" fragment.onBackPressed();");
894+
writer.println(" super.onBackPressed()");
882895
writer.println(" }");
883896
writer.println("}");
884897
writer.flush();

0 commit comments

Comments
 (0)