Update
Please review this sample project as well as GIF to give an overview.

You can customize the following according to your requirements.

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.os.Bundle; import android.os.Parcelable; import android.util.AttributeSet; import android.view.View; public class NumberProgressBar extends View { private Context mContext; private int mMax = 100; private int mProgress = 0; private int mReachedBarColor; private int mUnreachedBarColor; private int mTextColor; private float mTextSize; private float mReachedBarHeight; private float mUnreachedBarHeight; private String mSuffix = "%"; private String mPrefix = ""; private final int default_text_color = Color.rgb(66, 145, 241); private final int default_reached_color = Color.rgb(66,145,241); private final int default_unreached_color = Color.rgb(204, 204, 204); private final float default_progress_text_offset; private final float default_text_size; private final float default_reached_bar_height; private final float default_unreached_bar_height; private static final String INSTANCE_STATE = "saved_instance"; private static final String INSTANCE_TEXT_COLOR = "text_color"; private static final String INSTANCE_TEXT_SIZE = "text_size"; private static final String INSTANCE_REACHED_BAR_HEIGHT = "reached_bar_height"; private static final String INSTANCE_REACHED_BAR_COLOR = "reached_bar_color"; private static final String INSTANCE_UNREACHED_BAR_HEIGHT = "unreached_bar_height"; private static final String INSTANCE_UNREACHED_BAR_COLOR = "unreached_bar_color"; private static final String INSTANCE_MAX = "max"; private static final String INSTANCE_PROGRESS = "progress"; private static final String INSTANCE_SUFFIX = "suffix"; private static final String INSTANCE_PREFIX = "prefix"; private static final String INSTANCE_TEXT_VISBILITY = "text_visibility"; private static final int PROGRESS_TEXT_VISIBLE = 0; private static final int PROGRESS_TEXT_INVISIBLE = 1; private float mDrawTextWidth; private float mDrawTextStart; private float mDrawTextEnd; private String mCurrentDrawText; private Paint mReachedBarPaint; private Paint mUnreachedBarPaint; private Paint mTextPaint; private RectF mUnreachedRectF = new RectF(0,0,0,0); private RectF mReachedRectF = new RectF(0,0,0,0); private float mOffset; private boolean mDrawUnreachedBar = true; private boolean mDrawReachedBar = true; private boolean mIfDrawText = true; public enum ProgressTextVisibility{ Visible,Invisible }; public NumberProgressBar(Context context) { this(context, null); } public NumberProgressBar(Context context, AttributeSet attrs) { this(context, attrs, R.attr.numberProgressBarStyle); } public NumberProgressBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mContext = context; default_reached_bar_height = dp2px(1.5f); default_unreached_bar_height = dp2px(1.0f); default_text_size = sp2px(10); default_progress_text_offset = dp2px(3.0f);
Link 1
Link 2
Link 3
Link 4
Link 5
Link 6
You can also do this with a linear layout. I made a simple example, just a simple example.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ll_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:background="@drawable/layout" > <ImageView android:id="@+id/ImageView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="14dp" android:src="@drawable/bg_1" /> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="38dp" android:layout_marginTop="14dp" android:src="@drawable/bg_1" /> <ImageView android:id="@+id/imageView12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="35dp" android:layout_marginTop="14dp" android:src="@drawable/bg_1" /> </LinearLayout> </RelativeLayout>



MainActivity.java
import java.util.concurrent.TimeUnit; import android.app.Activity; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; import android.os.Bundle; import android.os.Handler; import android.widget.ImageView; import android.widget.LinearLayout; public class MainActivity extends Activity { LinearLayout llProgress; Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); llProgress = (LinearLayout) findViewById(R.id.ll_progress); handler = new Handler(getMainLooper()); startTransition(); } int prevChild = 0; private void startTransition() {


source share