diff --git a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
index 44ab0d6259..307d726752 100644
--- a/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
+++ b/android/app/src/main/java/app/organicmaps/DownloadResourcesLegacyActivity.java
@@ -132,7 +132,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
public void onProgress(final int percent)
{
if (!isFinishing())
- mProgress.setProgress(percent);
+ mProgress.setProgressCompat(percent, true);
}
@Override
@@ -179,7 +179,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
@Override
public void onProgress(String countryId, long localSize, long remoteSize)
{
- mProgress.setProgress((int)localSize);
+ mProgress.setProgressCompat((int) localSize, true);
}
};
@@ -264,7 +264,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
setDownloadMessage(bytes);
mProgress.setMax(bytes);
- mProgress.setProgress(0);
+ mProgress.setProgressCompat(0, true);
}
else
finishFilesDownload(bytes);
@@ -380,7 +380,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
UiUtils.hide(mChbDownloadCountry);
mTvMessage.setText(getString(R.string.downloading_country_can_proceed, item.name));
mProgress.setMax((int)item.totalSize);
- mProgress.setProgress(0);
+ mProgress.setProgressCompat(0, true);
mCountryDownloadListenerSlot = MapManager.nativeSubscribe(mCountryDownloadListener);
MapManager.nativeDownload(mCurrentCountry);
diff --git a/android/app/src/main/java/app/organicmaps/widget/FlatProgressView.java b/android/app/src/main/java/app/organicmaps/widget/FlatProgressView.java
deleted file mode 100644
index e012770406..0000000000
--- a/android/app/src/main/java/app/organicmaps/widget/FlatProgressView.java
+++ /dev/null
@@ -1,202 +0,0 @@
-package app.organicmaps.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.RectF;
-import android.util.AttributeSet;
-import android.view.View;
-
-import app.organicmaps.R;
-
-public class FlatProgressView extends View
-{
- private int mThickness;
- private int mSecondaryThickness;
- private int mHeadRadius;
- private int mProgress;
-
- private final Paint mProgressPaint = new Paint();
- private final Paint mSecondaryProgressPaint = new Paint();
- private final Paint mHeadPaint = new Paint();
- private final RectF mHeadRect = new RectF();
-
- private boolean mReady;
-
-
- public FlatProgressView(Context context)
- {
- super(context);
- init(null, 0);
- }
-
- public FlatProgressView(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- init(attrs, 0);
- }
-
- public FlatProgressView(Context context, AttributeSet attrs, int defStyleAttr)
- {
- super(context, attrs, defStyleAttr);
- init(attrs, defStyleAttr);
- }
-
- private void init(AttributeSet attrs, int defStyleAttr)
- {
- if (isInEditMode())
- return;
-
- TypedArray ta = getContext().obtainStyledAttributes(attrs, R.styleable.FlatProgressView, defStyleAttr, 0);
- setThickness(ta.getDimensionPixelSize(R.styleable.FlatProgressView_progressThickness, 1));
- setSecondaryThickness(ta.getDimensionPixelSize(R.styleable.FlatProgressView_secondaryProgressThickness, 1));
- setHeadRadius(ta.getDimensionPixelSize(R.styleable.FlatProgressView_headRadius, 4));
- setProgress(ta.getInteger(R.styleable.FlatProgressView_progress, 0));
-
- int color = ta.getColor(R.styleable.FlatProgressView_progressColor, Color.BLUE);
- mProgressPaint.setColor(color);
- color = ta.getColor(R.styleable.FlatProgressView_secondaryProgressColor, Color.GRAY);
- mSecondaryProgressPaint.setColor(color);
- color = ta.getColor(R.styleable.FlatProgressView_headColor, Color.BLUE);
- mHeadPaint.setColor(color);
-
- ta.recycle();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
- {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- setMeasuredDimension(getMeasuredWidth(),
- Math.max(mSecondaryThickness, Math.max(mThickness, mHeadRadius * 2)) + getPaddingTop() + getPaddingBottom());
- }
-
- @Override
- protected void onDraw(Canvas canvas)
- {
- mReady = true;
- canvas.save();
-
- int intWidth = getWidth() - getPaddingStart() - getPaddingEnd();
- int intHeight = getHeight() - getPaddingTop() - getPaddingBottom();
- canvas.translate(getPaddingStart(), getPaddingTop());
-
- int progressWidth = (intWidth * mProgress / 100);
- if (progressWidth > 0)
- {
- int top = ((mHeadRadius * 2) > mThickness ? (mHeadRadius - mThickness / 2) : 0);
- canvas.drawRect(0, top, progressWidth, top + mThickness, mProgressPaint);
- }
-
- if (mProgress < 100)
- {
- int top = (intHeight - mSecondaryThickness) / 2;
- canvas.drawRect(progressWidth, top, intWidth, top + mSecondaryThickness, mSecondaryProgressPaint);
- }
-
- if (mHeadRadius > 0)
- {
- int top = ((mHeadRadius * 2) > mThickness ? 0 : (mThickness / 2 - mHeadRadius));
- canvas.translate(progressWidth - mHeadRadius, top);
- canvas.drawOval(mHeadRect, mHeadPaint);
- }
-
- canvas.restore();
- }
-
- public int getProgress()
- {
- return mProgress;
- }
-
- public void setProgress(int progress)
- {
- if (mProgress == progress)
- return;
-
- if (progress < 0 || progress > 100)
- throw new IllegalArgumentException("Progress must be within interval [0..100]");
-
- mProgress = progress;
- if (mReady)
- invalidate();
- }
-
- public int getThickness()
- {
- return mThickness;
- }
-
- public void setThickness(int thickness)
- {
- if (thickness == mThickness)
- return;
-
- mThickness = thickness;
- if (mReady)
- invalidate();
- }
-
- public int getHeadRadius()
- {
- return mHeadRadius;
- }
-
- public void setHeadRadius(int headRadius)
- {
- if (headRadius == mHeadRadius)
- return;
-
- mHeadRadius = headRadius;
- mHeadRect.set(0.0f, 0.0f, mHeadRadius * 2, mHeadRadius * 2);
- if (mReady)
- invalidate();
- }
-
- public void setProgressColor(int color)
- {
- if (color == mProgressPaint.getColor())
- return;
-
- mProgressPaint.setColor(color);
- if (mReady)
- invalidate();
- }
-
- public void setHeadColor(int color)
- {
- if (color == mHeadPaint.getColor())
- return;
-
- mHeadPaint.setColor(color);
- if (mReady)
- invalidate();
- }
-
- public void setSecondaryProgressColor(int color)
- {
- if (color == mSecondaryProgressPaint.getColor())
- return;
-
- mSecondaryProgressPaint.setColor(color);
- if (mReady)
- invalidate();
- }
-
- public void setSecondaryThickness(int secondaryThickness)
- {
- if (secondaryThickness == mSecondaryThickness)
- return;
-
- mSecondaryThickness = secondaryThickness;
- if (mReady)
- invalidate();
- }
-
- public int getSecondaryThickness()
- {
- return mSecondaryThickness;
- }
-}
diff --git a/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java b/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java
index 2059eab5a3..eb564c0aca 100644
--- a/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java
+++ b/android/app/src/main/java/app/organicmaps/widget/menu/NavMenu.java
@@ -14,10 +14,10 @@ import app.organicmaps.R;
import app.organicmaps.location.LocationHelper;
import app.organicmaps.routing.RoutingInfo;
import app.organicmaps.sound.TtsPlayer;
-import app.organicmaps.widget.FlatProgressView;
import app.organicmaps.util.Graphics;
import app.organicmaps.util.StringUtils;
import app.organicmaps.util.UiUtils;
+import com.google.android.material.progressindicator.LinearProgressIndicator;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -42,7 +42,7 @@ public class NavMenu
private final TextView mTimeEstimate;
private final TextView mDistanceValue;
private final TextView mDistanceUnits;
- private final FlatProgressView mRouteProgress;
+ private final LinearProgressIndicator mRouteProgress;
private final AppCompatActivity mActivity;
private final NavMenuListener mNavMenuListener;
@@ -229,7 +229,7 @@ public class NavMenu
updateTime(info.totalTimeInSeconds);
mDistanceValue.setText(info.distToTarget.mDistanceStr);
mDistanceUnits.setText(info.distToTarget.getUnitsStr(mActivity.getApplicationContext()));
- mRouteProgress.setProgress((int) info.completionPercent);
+ mRouteProgress.setProgressCompat((int) info.completionPercent, true);
}
public interface NavMenuListener
diff --git a/android/app/src/main/res/layout/button_with_progress.xml b/android/app/src/main/res/layout/button_with_progress.xml
index 4d3d4bb0d1..5f84eee241 100644
--- a/android/app/src/main/res/layout/button_with_progress.xml
+++ b/android/app/src/main/res/layout/button_with_progress.xml
@@ -25,7 +25,8 @@
android:layout_marginEnd="@dimen/margin_base_plus"
android:layout_marginBottom="@dimen/margin_base"
android:indeterminate="false"
- app:indicatorColor="?android:colorAccent"/>
+ app:indicatorColor="?android:colorAccent"
+ app:trackColor="@color/bg_routing_progress"/>
-
+ app:indicatorColor="?colorAccent"
+ app:trackCornerRadius="@dimen/nav_progress_head"
+ app:trackThickness="@dimen/nav_progress"
+ app:trackColor="@color/bg_routing_progress" />
-
-
-
-
-
-
-
-
-
-