diff --git a/README.md b/README.md index 3ded28d..71ebe86 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Advance android:visibility="visible" //visible or gone app:indicatorName="BallPulseIndicator"//Indicator Name app:indicatorColor="your color" + app:animationDuration="desired duration" // Animation duration in milliseconds. Use this to control animation speed. /> ``` diff --git a/app/src/main/java/com/wang/avi/sample/IndicatorActivity.java b/app/src/main/java/com/wang/avi/sample/IndicatorActivity.java index 94073c6..5e6e78d 100644 --- a/app/src/main/java/com/wang/avi/sample/IndicatorActivity.java +++ b/app/src/main/java/com/wang/avi/sample/IndicatorActivity.java @@ -1,9 +1,15 @@ package com.wang.avi.sample; +import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; +import android.text.InputFilter; +import android.text.InputType; +import android.util.TypedValue; import android.view.View; +import android.widget.EditText; import com.wang.avi.AVLoadingIndicatorView; @@ -21,8 +27,11 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { setContentView(R.layout.activity_indicator); String indicator=getIntent().getStringExtra("indicator"); + int duration = getIntent().getIntExtra("duration", 0); avi= (AVLoadingIndicatorView) findViewById(R.id.avi); + avi.setAnimationDuration(duration); avi.setIndicator(indicator); + setUpDialog(); } public void hideClick(View view) { @@ -34,4 +43,36 @@ public void showClick(View view) { avi.show(); // or avi.smoothToShow(); } + + public void durationClick(View view) { + dialog.show(); + } + + private EditText editText; + private AlertDialog dialog; + private void setUpDialog(){ + editText = new EditText(this); + editText.setInputType(InputType.TYPE_CLASS_NUMBER); + editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)}); + int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, + getResources().getDisplayMetrics()); + dialog = new AlertDialog.Builder(this) + .setTitle("Animation duration") + .setMessage("Enter desired animation duration in milliseconds.") + .setView(editText, padding, padding, padding, padding) + .setPositiveButton("APPLY", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String duration = editText.getText().toString().trim(); + if (!duration.isEmpty()) { + setIntent(getIntent().putExtra("duration", Integer.parseInt(duration))); + recreate(); + } + } + }) + .setNegativeButton("CANCEL", null) + .create(); + + } + } diff --git a/app/src/main/java/com/wang/avi/sample/MyCustomIndicator.java b/app/src/main/java/com/wang/avi/sample/MyCustomIndicator.java index 56fe1a0..11d5604 100644 --- a/app/src/main/java/com/wang/avi/sample/MyCustomIndicator.java +++ b/app/src/main/java/com/wang/avi/sample/MyCustomIndicator.java @@ -51,7 +51,7 @@ public ArrayList onCreateAnimators() { ValueAnimator scaleAnim=ValueAnimator.ofFloat(1,0.3f,1); - scaleAnim.setDuration(750); + scaleAnim.setDuration(getDuration()); scaleAnim.setRepeatCount(-1); scaleAnim.setStartDelay(delays[i]); @@ -68,5 +68,8 @@ public void onAnimationUpdate(ValueAnimator animation) { return animators; } - + @Override + public int getDefaultDuration() { + return 750; + } } diff --git a/app/src/main/res/layout/activity_indicator.xml b/app/src/main/res/layout/activity_indicator.xml index 7c87600..7b613f1 100644 --- a/app/src/main/res/layout/activity_indicator.xml +++ b/app/src/main/res/layout/activity_indicator.xml @@ -34,6 +34,14 @@ android:onClick="showClick" /> +