Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class IV extends ImageView {
- Drawable marker;
- ScaleGestureDetector sgd;
- GestureDetector gd;
- Bitmap bitmap;
- public IV(Context context) {
- super(context);
- /*
- // R.drawable.ic_marker
- <vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp" android:height="24dp"
- android:viewportWidth="16.0" android:viewportHeight="16.0"
- >
- <path android:fillColor="#b3b3b3" android:pathData="M7,0h2v3h-2z"/>
- <path android:fillColor="#b3b3b3" android:pathData="M7,12 L8,9 9,12 9,16 7,16z"/>
- <path android:fillColor="#b3b3b3" android:pathData="M16,7 L16,9 12,9 9,8 12,7z"/>
- <path android:fillColor="#b3b3b3" android:pathData="M4,7 L7,8 4,9 0,9 0,7z"/>
- <path android:fillColor="#008000" android:pathData="M8,3C5.239,3 3,5.239 3,8C3,10.761 5.239,13 8,13C10.761,13 13,10.761 13,8C13,5.239 10.761,3 8,3zM8,5C9.657,5 11,6.343 11,8C11,9.657 9.657,11 8,11C6.343,11 5,9.657 5,8C5,6.343 6.343,5 8,5z"/>
- </vector>
- */
- marker = VectorDrawableCompat.create(getResources(), R.drawable.ic_marker, null);
- bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.chrome);
- setImageBitmap(bitmap);
- setScaleType(ScaleType.MATRIX);
- sgd = new ScaleGestureDetector(context, listener1);
- gd = new GestureDetector(context, listener2);
- }
- @Override
- protected void onSizeChanged(int w, int h, int oldw, int oldh) {
- int size = w / 4;
- marker.setBounds(0, 0, size, size);
- Matrix m = new Matrix();
- RectF src = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
- RectF dst = new RectF(0, 0, w, h);
- m.setRectToRect(src, dst, Matrix.ScaleToFit.CENTER);
- setImageMatrix(m);
- }
- ScaleGestureDetector.OnScaleGestureListener listener1 = new ScaleGestureDetector.SimpleOnScaleGestureListener() {
- @Override
- public boolean onScale(ScaleGestureDetector detector) {
- Matrix m = getImageMatrix();
- float scale = detector.getScaleFactor();
- m.postScale(scale, scale, detector.getFocusX(), detector.getFocusY());
- invalidate();
- return true;
- }
- };
- GestureDetector.OnGestureListener listener2 = new GestureDetector.SimpleOnGestureListener() {
- @Override
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
- Matrix m = getImageMatrix();
- m.postTranslate(-distanceX, -distanceY);
- invalidate();
- return true;
- }
- };
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- sgd.onTouchEvent(event);
- gd.onTouchEvent(event);
- return true;
- }
- @Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- // draw your markers here by calling:
- // Drawable#draw(Canvas);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement