OSDN Git Service

タッチ位置の補正を入れる。
authorMRSa <mrsa@myad.jp>
Thu, 31 Aug 2017 15:32:51 +0000 (00:32 +0900)
committerMRSa <mrsa@myad.jp>
Thu, 31 Aug 2017 15:32:51 +0000 (00:32 +0900)
app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlyCameraFocusControl.java
app/src/main/java/net/osdn/gokigen/a01d/liveview/CameraLiveImageView.java
app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewClickTouchListener.java
app/src/main/java/net/osdn/gokigen/a01d/liveview/LiveViewFragment.java

index c08a30b..23f0111 100644 (file)
@@ -32,7 +32,7 @@ public class OlyCameraFocusControl implements IFocusingControl
         {
             return (false);
         }
-        Log.v(TAG, "motionEvent() : pointOnView [" + Math.ceil(motionEvent.getX()) + "," + Math.ceil(motionEvent.getY()) + "] ");
+
         if (frameDisplay != null)
         {
             Thread thread = new Thread(new Runnable() {
index 7b17748..c7a69be 100644 (file)
@@ -150,6 +150,7 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
         return getIntrinsicContentSizeHeight();
     }
 
+
     private float getIntrinsicContentSizeWidth()
     {
         if (imageBitmap == null)
@@ -175,8 +176,7 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
      * @param data     A image of live-view.
      * @param metadata A metadata of the image.
      */
-    public void setImageData(byte[] data, Map<String, Object> metadata)
-    {
+    public void setImageData(byte[] data, Map<String, Object> metadata) {
         Bitmap bitmap;
         int rotationDegrees;
 
@@ -214,6 +214,7 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
             imageBitmap = bitmap;
             imageRotationDegrees = rotationDegrees;
         }
+
         refreshCanvas();
     }
 
@@ -230,21 +231,17 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
             return null;
         }
 
-        PointF pointOnView = new PointF(event.getX(), event.getY());
+        PointF pointOnView = new PointF(event.getX() - getX(), event.getY() - getY()); // Viewの表示位置に補正
         PointF pointOnImage = convertPointFromViewArea(pointOnView);
         float imageWidth;
         float imageHeight;
         if (imageRotationDegrees == 0 || imageRotationDegrees == 180) {
             imageWidth = imageBitmap.getWidth();
             imageHeight = imageBitmap.getHeight();
-            //imageWidth = this.getWidth();
-            //imageHeight = this.getHeight();
         } else {
             imageWidth = imageBitmap.getHeight();
             imageHeight = imageBitmap.getWidth();
-            //imageWidth = this.getHeight();
-            //imageHeight = this.getWidth();
-        }
+         }
         return (OLYCamera.convertPointOnLiveImageIntoViewfinder(pointOnImage, imageWidth, imageHeight, imageRotationDegrees));
     }
 
@@ -819,20 +816,17 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
             imageSizeWidth = imageBitmap.getHeight();
             imageSizeHeight = imageBitmap.getWidth();
         }
-
         float viewSizeWidth = this.getWidth();
         float viewSizeHeight = this.getHeight();
         float ratioX = viewSizeWidth / imageSizeWidth;
         float ratioY = viewSizeHeight / imageSizeHeight;
         float scale = 1.0f;
 
-        switch (imageScaleType)
-        {
+        switch (imageScaleType) {
             case FIT_XY:
                 imagePointX /= ratioX;
                 imagePointY /= ratioY;
                 break;
-
             case FIT_CENTER:   // go to next label.
             case CENTER_INSIDE:
                 scale = Math.min(ratioX, ratioY);
@@ -841,7 +835,6 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
                 imagePointX = imagePointX / scale;
                 imagePointY = imagePointY / scale;
                 break;
-
             case CENTER_CROP:
                 scale = Math.max(ratioX, ratioY);
                 imagePointX -= (viewSizeWidth  - imageSizeWidth  * scale) / 2.0f;
@@ -849,17 +842,15 @@ public class CameraLiveImageView extends View implements CameraLiveViewListenerI
                 imagePointX /= scale;
                 imagePointY /= scale;
                 break;
-
             case CENTER:
                 imagePointX -= (viewSizeWidth - imageSizeWidth)  / 2.0f;
                 imagePointY -= (viewSizeHeight - imageSizeHeight) / 2.0f;
                 break;
-
             default:
                 break;
         }
-        //return new PointF((imagePointX / scale), (imagePointY / scale));
-        return new PointF((imagePointX), (imagePointY));
+
+        return new PointF(imagePointX, imagePointY);
     }
 
     /**
index 88781da..acc278a 100644 (file)
@@ -36,7 +36,7 @@ class LiveViewClickTouchListener implements View.OnClickListener, View.OnTouchLi
     public void onClick(View view)
     {
         int id = view.getId();
-        Log.v(TAG, "onClick() " + id);
+        //Log.v(TAG, "onClick() : " + id);
         try
         {
             switch (id)
@@ -81,7 +81,7 @@ class LiveViewClickTouchListener implements View.OnClickListener, View.OnTouchLi
     public boolean onTouch(View view, MotionEvent motionEvent)
     {
         int id = view.getId();
-        Log.v(TAG, "onTouch() : " + id);
+        //Log.v(TAG, "onTouch() : " + id + " (" + motionEvent.getX() + "," + motionEvent.getY() + ")");
         return ((id == R.id.cameraLiveImageView)&&(focusingControl.driveAutoFocus(motionEvent)));
     }
 }
index 6406a43..82b3303 100644 (file)
@@ -137,7 +137,7 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
         imageViewCreated = true;
         try
         {
-           imageView = view.findViewById(R.id.cameraLiveImageView);
+            imageView = view.findViewById(R.id.cameraLiveImageView);
             if (interfaceInjector != null)
             {
                 interfaceInjector.injectOlympusDisplay(imageView, imageView);
@@ -146,10 +146,10 @@ public class LiveViewFragment extends Fragment implements IStatusViewDrawer
             {
                 focusingControl = interfaceProvider.getFocusingControl();
             }
-           if (onClickTouchListener == null)
-           {
-               onClickTouchListener = new LiveViewClickTouchListener(imageView, this, changeScene, focusingControl);
-           }
+            if (onClickTouchListener == null)
+            {
+                onClickTouchListener = new LiveViewClickTouchListener(imageView, this, changeScene, focusingControl);
+            }
             imageView.setOnClickListener(onClickTouchListener);
             imageView.setOnTouchListener(onClickTouchListener);