A simple animated step view for Android

Overview

StepView

A simple animated step view for Android. Backward and forward animations is supported.

Usage

  1. Add jcenter() to repositories block in your gradle file.
  2. Add implementation 'com.shuhart.stepview:stepview:1.5.1' to your dependencies.
  3. Add StepView into your layouts or view hierarchy.

Supported animations:

Name Preview
ANIMATION_LINE animation_line
ANIMATION_CIRCLE animation_circle
ANIMATION_ALL animation_all
ANIMATION_NONE animation_none
ANIMATION_ALL and all next circles enabled animation_circles

In ANIMATION_CIRCLE and ANIMATION_NONE examples the line color remains the same. You can achieve this by specifying: app:doneStepLineColor="@color/stepview_line_next"

Usage:

Specify steps with xml attribute:

	app:steps="@array/steps"
	stepView.setSteps(List<String> steps);

Or Specify numbers of steps so that only circles with step number are shown:

	app:stepsNumber="4"
	stepView.setStepsNumber(4);

Styling:

<com.shuhart.stepview.StepView
	android:id="@+id/step_view"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:padding="16dp"
	app:sv_selectedCircleColor="@color/colorAccent"
	app:sv_selectedTextColor="@color/colorAccent"
	app:sv_stepLineWidth="1dp"
	app:sv_stepPadding="4dp"
    app:sv_nextTextColor="@color/colorAccent"
	app:sv_nextStepLineColor="@color/colorAccent"
	app:sv_doneCircleColor="@color/colorAccent"
	app:sv_doneStepLineColor="@color/colorAccent"
	app:sv_doneCircleRadius="12dp"
	app:sv_selectedCircleRadius="12dp"
	app:sv_selectedStepNumberColor="@color/colorPrimary"
	app:sv_stepViewStyle="@style/StepView"
	app:sv_doneStepMarkColor="@color/colorPrimary"
	app:sv_stepNumberTextSize="12sp"
	app:sv_animationType="Line"
  app:sv_typeface="@font/roboto_italic"/>

or instantiate and setup it in runtime with handy state builder:

    stepView.getState()
            .selectedTextColor(ContextCompat.getColor(this, R.color.colorAccent))
            .animationType(StepView.ANIMATION_CIRCLE)
            .selectedCircleColor(ContextCompat.getColor(this, R.color.colorAccent))
            .selectedCircleRadius(getResources().getDimensionPixelSize(R.dimen.dp14))
            .selectedStepNumberColor(ContextCompat.getColor(this, R.color.colorPrimary))
            // You should specify only stepsNumber or steps array of strings.
            // In case you specify both steps array is chosen.
            .steps(new ArrayList<String>() {{
                add("First step");
                add("Second step");
                add("Third step");
            }})
            // You should specify only steps number or steps array of strings.
            // In case you specify both steps array is chosen.
            .stepsNumber(4)
            .animationDuration(getResources().getInteger(android.R.integer.config_shortAnimTime))
            .stepLineWidth(getResources().getDimensionPixelSize(R.dimen.dp1))
            .textSize(getResources().getDimensionPixelSize(R.dimen.sp14))
            .stepNumberTextSize(getResources().getDimensionPixelSize(R.dimen.sp16))
            .typeface(ResourcesCompat.getFont(context, R.font.roboto_italic))
            // other state methods are equal to the corresponding xml attributes
            .commit();

Change a step:

    // Passing 'true' triggers an animation if enabled.
    // Animation would run if a difference between current and next is 1.
    stepView.go(step, true);

If you want to mark last step with a done mark:

	stepView.done(true);

If you want to allow going back after that, you should unmark the done state:

	stepView.done(false)

You can set a step click listener:

    stepView.setOnStepClickListener(new StepView.OnStepClickListener() {
        @Override
        public void onStepClick(int step) {
            // 0 is the first step
        }
    });

See the sample for additional details.

If you want a custom typeface you should add font files to the resource folder "font" and reference any in xml layout. Alternatively you can specify typeface using the state builder in your code. Look into the sample for additional details on that.

You can enable view to draw remained step circles with a specified color. In xml:

<com.shuhart.stepview.StepView
	android:id="@+id/step_view"
	android:layout_width="match_parent"
	android:layout_height="wrap_content"
	android:padding="16dp"
	app:sv_nextStepCircleEnabled="true"
	app:sv_nextStepCircleColor="@color/gray"/>

In java:

    stepView.getState()
        .nextStepCircleEnabled(isChecked)
        .nextStepCircleColor(Color.GRAY)
        .commit();

License

Copyright 2017 Bogdan Kornev.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Null Pointer Exception when         stepView.go(1, true); only for 1...not in any other position

    Null Pointer Exception when stepView.go(1, true); only for 1...not in any other position

                java.lang.RuntimeException: Unable to start activity ComponentInfo{com.e_commerce_app.rahil.e_commerce/com.e_commerce_app.rahil.e_commerce.Order_Detail}: java.lang.NullPointerException
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:135)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:136)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                                                         at dalvik.system.NativeStart.main(Native Method)
                                                                                      Caused by: java.lang.NullPointerException
                                                                                         at com.shuhart.stepview.StepView.getAnimator(StepView.java:272)
                                                                                         at com.shuhart.stepview.StepView.animate(StepView.java:242)
                                                                                         at com.shuhart.stepview.StepView.go(StepView.java:219)
                                                                                         at com.e_commerce_app.rahil.e_commerce.Order_Detail.onCreate(Order_Detail.java:47)
                                                                                         at android.app.Activity.performCreate(Activity.java:5231)
                                                                                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
                                                                                         at android.app.ActivityThread.access$800(ActivityThread.java:135) 
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                         at android.os.Looper.loop(Looper.java:136) 
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5017) 
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
                                                                                         at dalvik.system.NativeStart.main(Native Method) 
    

    HERE IS MY ARRAY from resourse Processing Shipped Delivery

    opened by RahilRK 9
  • Last Circle cut in half if only using Number of Steps (no text from string array)

    Last Circle cut in half if only using Number of Steps (no text from string array)

    If only using circles by setting number of steps (not using string array of text labels), the last circle is not drawn completely. The last circle is only half drawn.

    opened by ghost 8
  • Content is not allowed

    Content is not allowed

    when i add gradle file i get this StepViewExample/app/src/main/res/font/iran_sans_mobile.ttf Error:Execution failed for task ':app:mergeDebugResources'.

    StepViewExample/app/src/main/res/font/iran_sans_mobile.ttf:1:1: Error: Content is not allowed in prolog.

    opened by rademoh 7
  • Gradle 5.6.4 migration issue

    Gradle 5.6.4 migration issue

    I keep getting these 3 errors after upgrading to gradle 5.6.4

    AAPT: error: style attribute 'attr/sv_animationDuration (aka com.comcast.optek.xm.clouddev:attr/sv_animationDuration)' not found.

    AAPT: error: resource attr/sv_background (aka com.comcast.optek.xm.clouddev:attr/sv_background) not found.

    AAPT: error: resource attr/sv_animationDuration (aka com.comcast.optek.xm.clouddev:attr/sv_animationDuration) not found.

    bug 
    opened by rwendelboe 4
  • Showing step hints on Top and Bottom of circle

    Showing step hints on Top and Bottom of circle

    When all step hints shows on bottom of step circles, sometimes hints overlap each other, for solving this problem you can add an option to StepView that show every other hint on top of the circle. This can prevent overlapping the hints.

    opened by majidkabir 4
  • Crash on One Plus device

    Crash on One Plus device

    Device Info: Android: 6.0.1 Android Build: MHC19Q Manufacturer: OnePlus Model: A0001 Thread: main-1

    App trace: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at com.shuhart.stepview.StepView.getCirclePositions(StepView.java:258) at com.shuhart.stepview.StepView.measureAttributes(StepView.java:242) at com.shuhart.stepview.StepView.onMeasure(StepView.java:191) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1081) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1458) at android.widget.LinearLayout.measureVertical(LinearLayout.java:746) at android.widget.LinearLayout.onMeasure(LinearLayout.java:629) at android.view.View.measure(View.java:18799) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) at android.widget.FrameLayout.onMeasure(FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2899) at android.view.View.measure(View.java:18799) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2108) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1224) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1460) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5461) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

    opened by navinilavarasan 4
  • Not able to add step list to stepview. App crashes

    Not able to add step list to stepview. App crashes

    <com.shuhart.stepview.StepView android:id="@+id/step_view" android:layout_width="match_parent" android:layout_height="100dp" android:background="#003d5c" android:padding="16dp" app:sv_animationType="All" app:sv_stepPadding="4dp" />

    Code: final StepView stepView = findViewById(R.id.step_view); List stepList = new ArrayList<>(); stepList.add("Step 1"); stepList.add("Step 2"); stepList.add("Step 3"); stepList.add("Step 4"); stepList.add("Step 5"); stepView.setSteps(stepList);

        stepView.go(1, true);
        stepView.setOnStepClickListener(new StepView.OnStepClickListener() {
            @Override
            public void onStepClick(int step) {
                Toast.makeText(DetailsActivity.this, "Step " + step, Toast.LENGTH_SHORT).show();
                stepView.done(true);
                stepView.go(step+1, true);
            }
        });
    

    java.lang.NullPointerException: Attempt to read from null array at com.shuhart.stepview.StepView.drawText(StepView.java:643) at com.shuhart.stepview.StepView.drawStep(StepView.java:589) at com.shuhart.stepview.StepView.onDraw(StepView.java:528) at android.view.View.draw(View.java:20207) at android.view.View.updateDisplayListIfDirty(View.java:19082) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.updateDisplayListIfDirty(View.java:19073) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.draw(View.java:20210) at android.widget.ScrollView.draw(ScrollView.java:1739) at android.view.View.updateDisplayListIfDirty(View.java:19082) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.updateDisplayListIfDirty(View.java:19073) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.updateDisplayListIfDirty(View.java:19073) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.updateDisplayListIfDirty(View.java:19073) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.updateDisplayListIfDirty(View.java:19073) at android.view.View.draw(View.java:19935) at android.view.ViewGroup.drawChild(ViewGroup.java:4333) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4112) at android.view.View.draw(View.java:20210) at com.android.internal.policy.DecorView.draw(DecorView.java:780) at android.view.View.updateDisplayListIfDirty(View.java:19082) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:801) at android.view.ViewRootImpl.draw(ViewRootImpl.java:3311) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3115) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2484) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949) at android.view.Choreographer.doCallbacks(Choreographer.java:761) at android.view.Choreographer.doFrame(Choreographer.java:696) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

    opened by JibuVarghese 3
  • not working and visible inside ScrollView....

    not working and visible inside ScrollView....

    <android.support.v7.widget.Toolbar
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimaryDark"
        android:theme="@style/ToolbarStyle">
    
    
    </android.support.v7.widget.Toolbar>
    
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:padding="20dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <com.shuhart.stepview.StepView
            android:id="@+id/step_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            app:sv_selectedCircleColor="@color/colorAccent"
            app:sv_selectedTextColor="@color/colorAccent"
            app:sv_stepLineWidth="1dp"
            app:sv_stepPadding="4dp"
            app:sv_nextTextColor="@color/colorAccent"
            app:sv_nextStepLineColor="@color/colorAccent"
            app:sv_doneCircleColor="@color/colorAccent"
            app:sv_doneStepLineColor="@color/colorAccent"
            app:sv_doneCircleRadius="12dp"
            app:sv_selectedCircleRadius="12dp"
            app:sv_selectedStepNumberColor="@color/colorPrimary"
            app:sv_stepViewStyle="@style/StepView"
            app:sv_doneStepMarkColor="@color/colorPrimary"
            app:sv_stepNumberTextSize="12sp"
            app:sv_animationType="All"
            app:sv_steps="@array/steps"
            app:sv_stepsNumber="4"/>
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="2.5dp"
        android:paddingRight="2.5dp"
        android:layout_marginTop="10dp"
        android:orientation="vertical"
        android:background="@color/white"
        >
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/order_item_detail_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/trackorderbtid"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/border2"
            android:text="Track"
            android:layout_marginTop="10dp"
            android:layout_marginRight="5dp"
            android:textColor="@color/lightmaroon" />
    
        <Button
            android:id="@+id/cancelorderbtid"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:background="@drawable/border2"
            android:text="Cancel"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="5dp"
            android:textColor="@color/lightmaroon" />
    
    
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:layout_marginTop="10dp"
        android:padding="5dp"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="15dp"
            android:textColor="@color/black"
            android:text="ORDER SUMMARY"/>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">
    
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Sub Total"/>
    
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="0.5"
                android:gravity="center"
                android:layout_height="wrap_content">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rs 800"
                    android:textColor="@color/black_50"/>
    
    
            </LinearLayout>
    
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:gravity="end"
    
            android:layout_marginTop="10dp">
    
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Shipping"/>
    
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="0.5"
                android:gravity="center"
                android:layout_height="wrap_content">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rs 200"
                    android:textColor="@color/black_50"/>
    
    
            </LinearLayout>
    
    
    
    
        </LinearLayout>
    
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="10dp">
    
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Total Payable"
                android:textStyle="bold"/>
    
    
            <LinearLayout
                android:layout_width="0dp"
                android:layout_weight="0.5"
                android:gravity="center"
                android:layout_height="wrap_content">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rs 1000"
                    android:textStyle="bold"
                    android:textColor="@color/black_50"/>
    
    
            </LinearLayout>
    
    
        </LinearLayout>
    
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:layout_marginTop="10dp"
        android:padding="5dp"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="15dp"
            android:textColor="@color/black"
            android:text="Payment Mode"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="5dp"
            android:layout_marginTop="10dp">
    
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="COD"
                android:textStyle="bold"/>
    
        </LinearLayout>
    
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/border"
        android:layout_marginTop="10dp"
        android:padding="5dp"
        android:orientation="vertical">
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="15dp"
            android:textColor="@color/black"
            android:text="Shipping Address"/>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:padding="5dp"
            android:layout_marginTop="10dp">
    
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="A-19, Silver Complex, Daman."
                android:textStyle="bold"/>
    
        </LinearLayout>
    
    
    
    </LinearLayout>
        </LinearLayout>
    </ScrollView>
    
    opened by RahilRK 3
  • Crash - Attempt to read from null array

    Crash - Attempt to read from null array

    it suddenly started crashing.. on "go( .... , true)" method

    E/AndroidRuntime: FATAL EXCEPTION: Data Initializing Thread
                                                                  
    java.lang.NullPointerException: Attempt to read from null array
    at com.shuhart.stepview.StepView.getAnimator(StepView.java:276)
    at com.shuhart.stepview.StepView.animate(StepView.java:241)
    at com.shuhart.stepview.StepView.go(StepView.java:218)
    at MyActivity$2.run(MyActivity.java:60)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.os.HandlerThread.run(HandlerThread.java:65)
    
    opened by Somnium99 3
  • Migration from JCenter

    Migration from JCenter

    In may this library won't be available from JCenter: https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/

    Please migrate this library to some other repository

    opened by jakoss 2
  • how to change next step circle color

    how to change next step circle color

    I working on a design in which I need a different color for select and done circles ... I can set value for done circle but ... unfortunately could not find attribute to set the color for next circle. how do I do that ... here is my current setting

    <com.shuhart.stepview.StepView android:id="@+id/step_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:layout_marginTop="130dp" android:background="@android:color/transparent" app:sv_selectedCircleColor="@color/colorPrimary" app:sv_selectedTextColor="@android:color/white" app:sv_stepLineWidth="5dp" android:layout_gravity="center_vertical" app:sv_stepPadding="0dp" app:sv_nextTextColor="@android:color/black" app:sv_nextStepLineColor="@color/colorLightRed" app:sv_doneCircleColor="@color/colorPrimary" app:sv_doneStepLineColor="@color/colorPrimary" app:sv_doneTextColor="@color/colorPrimary" app:sv_doneCircleRadius="12dp" app:sv_selectedCircleRadius="12dp" app:sv_selectedStepNumberColor="@color/colorAccent" app:sv_stepViewStyle="@style/StepView" app:sv_doneStepMarkColor="@android:color/white" app:sv_stepNumberTextSize="12sp" app:sv_animationType="All" app:sv_typeface="@font/sfuitextmedium"/>

    enhancement 
    opened by NasarIqbal 2
  • Make previous step not checked / not done yet

    Make previous step not checked / not done yet

    Hi, It's more like a feature enhancement request. Can you guide how to set/make the previous step not checked? in case the user not opened yet the previous page.

    opened by meylingtjan 0
  • Adding onStepChangeListener and new method to change specific step text.

    Adding onStepChangeListener and new method to change specific step text.

    I was discovered this library at android-arsenal, after to add it to my project I found the need to change specific step text and trigger and specific action when the step change. So, I reviewed the code, then I added this new funtionalities. I'll expect your feedback.

    opened by Esvux 0
Releases(v1.5.1)
Owner
Bogdan Kornev
Bogdan Kornev
Android animated recording view

AnimatedRecordingView Android animated recording view .中文版 Preview Gradle compile 'com.haozhang.libary:android-animated-recording-view:1.0' How to use

Hand Zhang 348 Nov 16, 2022
Custom-view-animated-file-downloader - Custom Views, Animations, Broadcast Receivers, Notifications

Downloader App Custom views , Drawing with Canvas, Animations (with motionlayout

null 2 Jun 24, 2022
Simple android library to present an animated ferris wheel

Ferris Wheel View Overview An Android Library used to implement an animated Ferris Wheel in android. API SDK 15+ Written in Kotlin Supports landscape

Igor Lashkov 318 Dec 7, 2022
Allows the easy creation of animated transition effects when the state of Android UI has changed

android-transition Android-Transition allows the easy creation of view transitions that reacts to user inputs. The library is designed to be general e

Kai 615 Nov 14, 2022
Android ImageViews animated by Ken Burns Effect

KenBurnsView Android library that provides an extension to ImageView that creates an immersive experience by animating its drawable using the Ken Burn

Flávio Faria 2.7k Jan 2, 2023
DuGuang 1k Dec 14, 2022
Extended Android Tab Layout with animated indicators that have continuous feedback.

Dachshund Tab Layout Introduction Boosted Android Tab Layout with custom animated indicators including "Dachshund" animation inspired by this. Sample

Andrii 859 Nov 10, 2022
How to improve the user experience using animated icons with vector drawables on Android

Android Animated Icons How to improve the user experience using animated icons with vector drawables on Android English version https://medium.com/@an

André Mion 116 Nov 25, 2022
💳 Bank Card View is a simple and elegant card view with Flip animation.

Visualização de cartão bancário ?? Bank Card View é uma visualização de cartão simples e elegante com animação Flip. Versões Selecione a língua : Engl

Geovani Amaral 10 Dec 12, 2022
💳 Bank Card View is a simple and elegant card view with Flip animation.

Visualização de cartão bancário ?? Bank Card View é uma visualização de cartão simples e elegante com animação Flip. Versões Selecione a língua : Engl

Geovani Amaral 9 Aug 26, 2022
This a demo application with animated SVG animation of Smiley

Animated-Smiley-Rating Animated Customer feedback and rating UI ?? License Copyright 2021 Aiman Muzafar Licensed under the Apache License, Version 2.0

Aiman Muzafar 12 Aug 12, 2021
🍭🚀💗 Tutorials about animations with Animators, Animated Vector Drawables, Shared Transitions, and more

?????? Tutorials about animations with Animators, Animated Vector Drawables, Shared Transitions, and more

Smart Tool Factory 696 Dec 28, 2022
Animated-splash-screen - Animate your Splash Screen using Lottie files.

Animated Splash Screen This small project shows how you can add animation into your android projects or create beautiful looking Splash Screen or Laun

Aashish Ace 0 Jan 2, 2022
Backarrow-animation-example - Animate back arrow to close button in Compose using animated drawables

Animate Back Arrow to Close Icon in Compose This is a simple demo for animated v

Jose Mateo 3 Feb 17, 2022
Animated LazyColumn/LazyRow

Animated LazyColumn/LazyRow POC of how you can animate LazyColumn/LazyRow insertions/deletions/moving Note, this is not production ready or a library,

Roudi Korkis Kanaan 33 Dec 24, 2022
A program that converts an SGF-file to an animated GIF a la Hayauchi Super Igo style.

sgf2gif A program that converts an SGF-file to an animated GIF. The animated GIF is highly inspired by the classic game Hayauchi Super Igo for NES. Us

null 12 Jul 6, 2022
A view pager indicator view to deal with a large amount of pages.

Attention I'm not going to support this anymore. Just use a better solution, e.g. this one Indefinite-Pager-Indicator BubblePagerIndicator A view page

Bogdan Kornev 134 Aug 18, 2022
Deprecated in favour of https://developer.android.com/reference/android/support/v4/view/animation/PathInterpolatorCompat.html

Deprecated: use https://developer.android.com/reference/android/support/v4/view/animation/PathInterpolatorCompat.html instead. android-cubic-bezier-in

Codesoup 161 Jan 1, 2023
Android view with both path from constructed path or from svg.

android-pathview You want to animate svg or normal Paths?<br> Change the color, pathWidth or add svg.<br> Animate the "procentage" property to make th

Georgi Eftimov 2.9k Dec 30, 2022