List of usage examples for android.graphics PointF set
public final void set(float x, float y)
From source file:com.bluetech.gallery5.ui.ImageDetailFragment.java
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { /*//from w w w. ja v a 2 s. com // Inflate and locate the main ImageView final View v = inflater.inflate(R.layout.image_detail_fragment, container, false); mImageView = (ImageView) v.findViewById(R.id.imageRecycView); return v; */ final View v = inflater.inflate(R.layout.image_detail_fragment, container, false); mImageView = (ImageView) v.findViewById(R.id.imageRecycView); //ImageView img = new ImageView(getActivity()); mImageView.setPadding(6, 6, 6, 6); // mImageView.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)) ; //ImageViewHelperURL.setUrlDrawable((ImageView) img, url, R.drawable.no_image) ; mImageView.setOnTouchListener(new View.OnTouchListener() { private static final String TAG = "SlideImageView"; // These matrices will be used to move and zoom image Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix(); // We can be in one of these 3 states static final int NONE = 0; static final int DRAG = 1; static final int ZOOM = 2; int mode = NONE; // Remember some things for zooming PointF start = new PointF(); PointF mid = new PointF(); float oldDist = 1f; @Override public boolean onTouch(View v, MotionEvent event) { ImageView view = (ImageView) v; // Dump touch event to log dumpEvent(event); // Handle touch events here... switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: savedMatrix.set(matrix); start.set(event.getX(), event.getY()); Log.d(TAG, "mode=DRAG"); mode = DRAG; break; case MotionEvent.ACTION_POINTER_DOWN: oldDist = spacing(event); Log.d(TAG, "oldDist=" + oldDist); if (oldDist > 10f) { savedMatrix.set(matrix); midPoint(mid, event); mode = ZOOM; Log.d(TAG, "mode=ZOOM"); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: mode = NONE; Log.d(TAG, "mode=NONE"); break; case MotionEvent.ACTION_MOVE: if (mode == DRAG) { // ... matrix.set(savedMatrix); matrix.postTranslate(event.getX() - start.x, event.getY() - start.y); } else if (mode == ZOOM) { float newDist = spacing(event); Log.d(TAG, "newDist=" + newDist); if (newDist > 10f) { matrix.set(savedMatrix); float scale = newDist / oldDist; Log.d(TAG, "ZOOOOOOOM: " + scale); matrix.postScale(scale, scale, mid.x, mid.y); } } break; } view.setImageMatrix(matrix); return true; // indicate event was handled } /** Show an event in the LogCat view, for debugging */ private void dumpEvent(MotionEvent event) { String names[] = { "DOWN", "UP", "MOVE", "CANCEL", "OUTSIDE", "POINTER_DOWN", "POINTER_UP", "7?", "8?", "9?" }; StringBuilder sb = new StringBuilder(); int action = event.getAction(); int actionCode = action & MotionEvent.ACTION_MASK; sb.append("event ACTION_").append(names[actionCode]); if (actionCode == MotionEvent.ACTION_POINTER_DOWN || actionCode == MotionEvent.ACTION_POINTER_UP) { sb.append("(pid ").append(action >> MotionEvent.ACTION_POINTER_ID_SHIFT); sb.append(")"); } sb.append("["); for (int i = 0; i < event.getPointerCount(); i++) { sb.append("#").append(i); sb.append("(pid ").append(event.getPointerId(i)); sb.append(")=").append((int) event.getX(i)); sb.append(",").append((int) event.getY(i)); if (i + 1 < event.getPointerCount()) sb.append(";"); } sb.append("]"); Log.d(TAG, sb.toString()); } /** Determine the space between the first two fingers */ private float spacing(MotionEvent event) { float x = event.getX(0) - event.getX(1); float y = event.getY(0) - event.getY(1); return (float) Math.sqrt(x * x + y * y); } /** Calculate the mid point of the first two fingers */ private void midPoint(PointF point, MotionEvent event) { float x = event.getX(0) + event.getX(1); float y = event.getY(0) + event.getY(1); point.set(x / 2, y / 2); } }); return v; }
From source file:io.mattcarroll.hover.defaulthovermenu.window.WindowHoverMenu.java
public WindowHoverMenu(@NonNull Context context, @NonNull WindowManager windowManager, @Nullable Navigator navigator, @Nullable String savedVisualState) { mWindowViewController = new WindowViewController(windowManager); InWindowDragger inWindowDragger = new InWindowDragger(context, mWindowViewController, ViewConfiguration.get(context).getScaledTouchSlop()); PointF anchorState = new PointF(2, 0.5f); // Default to right side, half way down. See CollapsedMenuAnchor. if (null != savedVisualState) { try {//from w ww . j a v a2s. c o m VisualStateMemento visualStateMemento = VisualStateMemento.fromJsonString(savedVisualState); anchorState.set(visualStateMemento.getAnchorSide(), visualStateMemento.getNormalizedPositionY()); } catch (JSONException e) { e.printStackTrace(); } } mHoverMenuView = new HoverMenuView(context, navigator, inWindowDragger, anchorState); mHoverMenuView.setHoverMenuExitRequestListener(mMenuExitRequestListener); }
From source file:com.google.android.apps.muzei.util.PanScaleProxyView.java
/** * Finds the chart point (i.e. within the chart's domain and range) represented by the * given pixel coordinates. The "dest" argument is set to the point and * this function returns true.//from ww w . j av a 2 s. c o m */ private void hitTest(float x, float y, PointF dest) { dest.set(mCurrentViewport.left + mCurrentViewport.width() * x / mWidth, mCurrentViewport.top + mCurrentViewport.height() * y / mHeight); }
From source file:org.que.activities.fragments.MapImageFragment.java
/** * Calculates the middle point between the first and second touch event. * /*www . j a v a2 s . c o m*/ * @param p the first touch event * @param event the current touch event * @return the mid point between both touch events */ private PointF calcMidPoint(PointF p, MotionEvent event) { float px = Math.abs(event.getX() - p.x) / 2; float py = Math.abs(event.getY() - p.y) / 2; float newx = event.getX() > p.x ? p.x + px : event.getX() + px; float newy = event.getY() > p.y ? p.y + py : event.getY() + py; p.set(newx, newy); return p; }
From source file:com.pseudosurface.levels.template.SimulatorActivity.java
@Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); // Remember some things for zooming PointF start = new PointF(); PointF mid = new PointF(); switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: start.set(event.getX(), event.getY()); // Log.d(TAG, "mode=DRAG"); break;/*w w w. j av a2s. co m*/ case MotionEvent.ACTION_POINTER_DOWN: oldDist = spacing(event); if (oldDist > 10f) { midPoint(mid, event); mode = ZOOM; // Log.d(TAG, "mode=ZOOM"); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: mode = NONE; oldDist = -1; // Log.d(TAG, "mode=NONE"); break; case MotionEvent.ACTION_MOVE: if (mode == ZOOM) { float newDist = spacing(event); if (newDist > simulation.minZoom && oldDist != -1) { simulation.zoom -= (newDist - oldDist) * .05; } oldDist = newDist; } else { float dz = x - mPreviousX; float dy = y - mPreviousY; float r = (float) Math.sqrt(dz * dz + dy * dy); double theta = Math.atan2(dy, dz) + Math.PI + SimulatorActivity.angleLR; try { simulation.world.objects[simulation.world.getPlayerIndex()].omega[0] += .05f * r * Math.cos(theta); simulation.world.objects[simulation.world.getPlayerIndex()].omega[2] += .05f * r * Math.sin(theta); } catch (Exception e) { } //MainActivity.angleLR += dx*.01; //simulation.zoom += dy*.01; } break; } mPreviousX = x; mPreviousY = y; gestureDetector.onTouchEvent(event); return true; // indicate event was handled }
From source file:com.appunite.scroll.ScaleImageView.java
private void getTranslation(PointF realTranslation, PointF outTranslation) { outTranslation.set(realTranslation.x / mContentRect.width(), realTranslation.y / mContentRect.height()); }
From source file:com.appunite.scroll.ScaleImageView.java
private void getRealTranslation(PointF translation, PointF outRealTranslation) { outRealTranslation.set(mContentRect.width() * translation.x, mContentRect.height() * translation.y); }
From source file:cn.androidy.androiddevelopmentpatterns.interactivechart.InteractiveLineGraphView.java
/** * Finds the chart point (i.e. within the chart's domain and range) represented by the * given pixel coordinates, if that pixel is within the chart region described by * {@link #mContentRect}. If the point is found, the "dest" argument is set to the point and * this function returns true. Otherwise, this function returns false and "dest" is unchanged. *//*from w w w . j a va 2 s .com*/ private boolean hitTest(float x, float y, PointF dest) { if (!mContentRect.contains((int) x, (int) y)) { return false; } dest.set(mCurrentViewport.left + mCurrentViewport.width() * (x - mContentRect.left) / mContentRect.width(), mCurrentViewport.top + mCurrentViewport.height() * (y - mContentRect.bottom) / -mContentRect.height()); return true; }
From source file:com.hippo.largeimageview.LargeImageView.java
private void transformPoint(PointF p) { switch (mOrientation) { case ORIENTATION_0: break;//w ww. ja v a 2 s .c o m case ORIENTATION_90: p.set(p.y, getWidth() - p.x); break; case ORIENTATION_180: p.set(getWidth() - p.x, getHeight() - p.y); break; case ORIENTATION_270: p.set(getHeight() - p.y, p.x); break; default: throw new IllegalStateException("Unknown orientation: " + mOrientation); } }
From source file:com.hippo.largeimageview.LargeImageView.java
private void transformDistance(PointF p) { switch (mOrientation) { case ORIENTATION_0: break;//from w w w.j a va 2 s.co m case ORIENTATION_90: p.set(p.y, -p.x); break; case ORIENTATION_180: p.set(-p.x, -p.y); break; case ORIENTATION_270: p.set(-p.y, p.x); break; default: throw new IllegalStateException("Unknown orientation: " + mOrientation); } }