2017-02-20 12 views
1

Я пытаюсь создать анимацию, которая получает процентное значение (0-100) и растягивает толстую линию на кривой в соответствии со значением, где 100% - полный круг, 50% - половина круга и т. Д. ,Как создать анимацию Circle в Android?

Я добавил вид, что моя стартовая линия:

<View 
    android:id="@+id/testAnimationView" 
    android:layout_width="30dp" 
    android:layout_height="50dp" 
    android:layout_gravity="center" 
    android:background="#FF000000" /> 

Я попытался создать ScaleAnimation на View, но я, кажется, только удастся сделать «прямую линию» анимации, где X и Y растягиваются, чтобы создать большую площадь, но это не то, что мне нужно.

Как создать анимацию, которая начинается с очень тонкой линии и растягивает ее до круга с процентным значением?

+0

так что в основном вы хотите круговой индикатор ? –

+0

Что-то вроде этого, но не всегда вращается, как обычный индикатор выполнения, но тот, который будет анимироваться от текущего текущего местоположения до заданного процентного значения (например, от 33% до 50%), а затем останавливается. –

+0

см. Это https://android-arsenal.com/details/1/4326 –

ответ

1

, как Аджай Венугопал сказал, что вы можете использовать CircularProgressBar.java из https://github.com/lopspower/CircularProgressBar/blob/master/circularprogressbar/src/main/java/com/mikhaellopez/circularprogressbar/CircularProgressBar.java

Единственное изменение, которое вы должны сделать в CircularProgressBar.java:

Линия 64:

foregroundPaint.setStyle(Paint.Style.FILL); 

Линия 75:

canvas.drawArc(rectF, startAngle, angle, true, foregroundPaint); 

в макете

<CircularProgressBar 
     style="?android:attr/progressBarStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:cpb_background_progressbar_color="#b6bbd8" 
     app:cpb_background_progressbar_width="10dp" 
     app:cpb_progressbar_color="#3f51b5" 
     app:cpb_progressbar_width="20dp" 
     android:id="@+id/progressBar" /> 

затем в вашем MainActivity.java

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     final CircularProgressBar circularProgressBar = (CircularProgressBar) findViewById(R.id.progressBar); 
     circularProgressBar.setProgressWithAnimation(65, 4000); 

}