Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ImmersiveModeCompatPromptBackground.java « tips « maps « mapswithme « com « src « android - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 47ebbde677763a9ea61727f308de4e18df384dd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.mapswithme.maps.tips;

import android.annotation.TargetApi;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Build;
import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import android.util.DisplayMetrics;
import android.view.WindowManager;

import com.mapswithme.util.Utils;
import uk.co.samuelwall.materialtaptargetprompt.extras.PromptBackground;
import uk.co.samuelwall.materialtaptargetprompt.extras.PromptOptions;
import uk.co.samuelwall.materialtaptargetprompt.extras.PromptUtils;

public class ImmersiveModeCompatPromptBackground extends PromptBackground
{
  @NonNull
  private final WindowManager mWindowManager;
  @NonNull
  private final RectF mBounds;
  @NonNull
  private final RectF mBaseBounds;
  @NonNull
  private final Paint mPaint;
  private int mBaseColourAlpha;
  @NonNull
  private final PointF mFocalCentre;
  @NonNull
  private final DisplayMetrics mBaseMetrics;

  ImmersiveModeCompatPromptBackground(@NonNull WindowManager windowManager)
  {
    mWindowManager = windowManager;
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mBounds = new RectF();
    mBaseBounds = new RectF();
    mFocalCentre = new PointF();
    mBaseMetrics = new DisplayMetrics();
  }

  @Override
  public void setColour(@ColorInt int colour)
  {
    mPaint.setColor(colour);
    mBaseColourAlpha = Color.alpha(colour);
    mPaint.setAlpha(mBaseColourAlpha);
  }

  @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
  @Override
  public void prepare(@NonNull final PromptOptions options, final boolean clipToBounds,
                      @NonNull Rect clipBounds)
  {
    final RectF focalBounds = options.getPromptFocal().getBounds();
    initDisplayMetrics();

    mBaseBounds.set(0, 0, mBaseMetrics.widthPixels, mBaseMetrics.heightPixels);
    mFocalCentre.x = focalBounds.centerX();
    mFocalCentre.y = focalBounds.centerY();
  }

  @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
  private void initDisplayMetrics()
  {
    if (Utils.isJellyBeanOrLater())
      mWindowManager.getDefaultDisplay().getRealMetrics(mBaseMetrics);
    else
      mWindowManager.getDefaultDisplay().getMetrics(mBaseMetrics);
  }

  @Override
  public void update(@NonNull final PromptOptions prompt, float revealModifier,
                     float alphaModifier)
  {
    mPaint.setAlpha((int) (mBaseColourAlpha * alphaModifier));
    PromptUtils.scale(mFocalCentre, mBaseBounds, mBounds, revealModifier, false);
  }

  @Override
  public void draw(@NonNull Canvas canvas)
  {
    canvas.drawRect(mBounds, mPaint);
  }

  @Override
  public boolean contains(float x, float y)
  {
    return mBounds.contains(x, y);
  }
}