From 2fbd94dbcf3f076c2b816d2630055199a5fa499f Mon Sep 17 00:00:00 2001 From: Maxime Graulich <maxime.graulich@gmail.com> Date: Fri, 4 Apr 2014 10:21:37 +0000 Subject: [PATCH] Android: add translation/rotation button --- .../Android/res/drawable-mdpi/icon_rotate.png | Bin 0 -> 18386 bytes .../res/drawable-mdpi/icon_translate.png | Bin 0 -> 7754 bytes .../src/org/geuz/onelab/ModelFragment.java | 21 +++++++++- .../src/org/geuz/onelab/mGLSurfaceView.java | 37 +++++------------- 4 files changed, 30 insertions(+), 28 deletions(-) create mode 100644 contrib/mobile/Android/res/drawable-mdpi/icon_rotate.png create mode 100644 contrib/mobile/Android/res/drawable-mdpi/icon_translate.png diff --git a/contrib/mobile/Android/res/drawable-mdpi/icon_rotate.png b/contrib/mobile/Android/res/drawable-mdpi/icon_rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0ec77d927c324994704e7064ac2125110060a3 GIT binary patch literal 18386 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 literal 0 HcmV?d00001 diff --git a/contrib/mobile/Android/res/drawable-mdpi/icon_translate.png b/contrib/mobile/Android/res/drawable-mdpi/icon_translate.png new file mode 100644 index 0000000000000000000000000000000000000000..2c43ceab43ff0d8214f7b41ba6e47b6566f55e36 GIT binary patch literal 7754 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 SISBsli_rZyt|_L4pZq`ls}^wp literal 0 HcmV?d00001 diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java index 5545d77f62..d3db4e1ec1 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java @@ -96,6 +96,25 @@ public class ModelFragment extends Fragment{ } }); glViewLayout.addView(_glView); + RelativeLayout topRightLayout = new RelativeLayout(container.getContext()); + ImageButton rotationButton = new ImageButton(container.getContext()); + rotationButton.setBackgroundResource(R.drawable.icon_rotate); + rotationButton.setLayoutParams(new LinearLayout.LayoutParams(50, 50)); + rotationButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + boolean rotate = !_glView.getRotate(); + ((ImageButton)v).setBackgroundResource((rotate)?R.drawable.icon_translate:R.drawable.icon_rotate); + _glView.setRotate(rotate); + } + }); + topRightLayout.addView(rotationButton); + RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.WRAP_CONTENT, + RelativeLayout.LayoutParams.WRAP_CONTENT); + layoutParams.setMargins(0, 100, 10, 0); + layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); + layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); + glViewLayout.addView(topRightLayout, layoutParams); _progressLayout = new LinearLayout(container.getContext()); ProgressBar bar = new ProgressBar(container.getContext()); bar.setOnClickListener(new View.OnClickListener() { @@ -108,7 +127,7 @@ public class ModelFragment extends Fragment{ _progressLayout.setAlpha(0); _progressLayout.setGravity(Gravity.CENTER); _progressLayout.addView(_progress); - RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( + layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); diff --git a/contrib/mobile/Android/src/org/geuz/onelab/mGLSurfaceView.java b/contrib/mobile/Android/src/org/geuz/onelab/mGLSurfaceView.java index 5f8d0cd119..f22f26b09c 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/mGLSurfaceView.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/mGLSurfaceView.java @@ -15,6 +15,8 @@ class mGLSurfaceView extends GLSurfaceView { private GestureDetector gesture; private ScaleGestureDetector scaleGesture; private GLESRender _renderer; + private boolean _rotate; + public mGLSurfaceView(Context context, GLESRender renderer) { super(context); _renderer = renderer; @@ -43,32 +45,8 @@ class mGLSurfaceView extends GLSurfaceView { @Override public boolean onTouchEvent(MotionEvent event) { - if(event.getPointerCount() >= 3){ - scaleGesture.onTouchEvent(MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0,0, 0)); - - final float x = event.getX(1); - final float y = event.getY(1); - - int action = event.getActionMasked(); - - if(action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_1_DOWN){ - _renderer.startInteraction(x,y); - } - else if(action == MotionEvent.ACTION_MOVE){ - _renderer.rotateModel(x, y); - requestRender(); - } - else if(action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_1_UP){ - _renderer.endInteraction(x, y); - } - - return true; - } - else { - scaleGesture.onTouchEvent(event); - return gesture.onTouchEvent(event); - } - + scaleGesture.onTouchEvent(event); + return gesture.onTouchEvent(event); } private class GestureListener implements OnGestureListener, OnDoubleTapListener{ @@ -91,7 +69,10 @@ class mGLSurfaceView extends GLSurfaceView { public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if(e1.getPointerCount() > 1 || e2.getPointerCount() > 1) return false; - _renderer.translateModel(e2.getX(), e2.getY()); + if(_rotate) + _renderer.rotateModel(e2.getX(), e2.getY()); + else + _renderer.translateModel(e2.getX(), e2.getY()); requestRender(); return true; } @@ -121,6 +102,8 @@ class mGLSurfaceView extends GLSurfaceView { } } + public boolean getRotate() {return _rotate;} + public void setRotate(boolean r) {_rotate = r;} public void resetScale(){ scaleFactor = 1f; _renderer.scaleModel(scaleFactor); -- GitLab