Advertisement
Guest User

Untitled

a guest
Aug 14th, 2020
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.58 KB | None | 0 0
  1. package com.oliverstudio.fastlander.utils;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Canvas;
  5. import android.graphics.Paint;
  6. import android.graphics.PorterDuff;
  7. import android.graphics.PorterDuffXfermode;
  8. import android.util.AttributeSet;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11.  
  12. import androidx.annotation.NonNull;
  13.  
  14. import com.oliverstudio.fastlander.R;
  15.  
  16. public class FingerLineView extends View {
  17.  
  18.     private float startX;
  19.     private float startY;
  20.     private float endX;
  21.     private float endY;
  22.  
  23.     private MapView mMapView;
  24.  
  25.     private boolean mClearCanvas = false;
  26.  
  27.     public FingerLineView(Context context) {
  28.         this(context, null);
  29.  
  30.     }
  31.  
  32.     public FingerLineView(Context context, AttributeSet attrs) {
  33.         super(context, attrs);
  34.         setWillNotDraw(false);
  35.         setLayerType(LAYER_TYPE_HARDWARE, null);
  36.     }
  37.  
  38.     @Override
  39.     protected void onDraw(Canvas canvas) {
  40.         super.onDraw(canvas);
  41.  
  42.         Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
  43.         paint.setStyle(Paint.Style.STROKE);
  44.         paint.setStrokeWidth(13.0f);
  45.         paint.setColor(getResources().getColor(R.color.colorWhiteArrowLine));
  46.  
  47.         canvas.drawLine(startX, startY, endX, endY, paint);
  48.  
  49.         if (mClearCanvas) {
  50.             Paint transparentPaint = new Paint();
  51.             transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
  52.             canvas.drawRect(0, 0, getWidth(), getHeight(), transparentPaint);
  53.         }
  54.     }
  55.  
  56.     @Override
  57.     public boolean onTouchEvent(@NonNull MotionEvent event) {
  58.         switch (event.getAction()) {
  59.             case MotionEvent.ACTION_DOWN:
  60.  
  61.                 Utils.simulateTap(event.getX(), event.getY(), mMapView);
  62.  
  63.                 startX = event.getX();
  64.                 startY = event.getY();
  65.                 endX = event.getX();
  66.                 endY = event.getY();
  67.                 invalidate();
  68.                 break;
  69.             case MotionEvent.ACTION_MOVE:
  70.                 endX = event.getX();
  71.                 endY = event.getY();
  72.                 invalidate();
  73.                 break;
  74.             case MotionEvent.ACTION_UP:
  75.  
  76.                 Utils.simulateTap(event.getX(), event.getY(), mMapView);
  77.  
  78.                 endX = event.getX();
  79.                 endY = event.getY();
  80.  
  81.                 mClearCanvas = true;
  82.  
  83.                 invalidate();
  84.  
  85.                 setVisibility(View.GONE);
  86.                 break;
  87.         }
  88.         return true;
  89.     }
  90.  
  91.     public void attachMapView(MapView mapView) {
  92.         mMapView = mapView;
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement