2014-12-31 2 views
1

У меня есть что-то вроде этого, я хочу рисовать path в android на холсте, и для этого я разработал код. Это класс представления.Рисуем путь в android постепенно

public class MyView extends View { 
public MyView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

    public MyView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public MyView(Context context) { 
     super(context); 
    } 


    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 

     Paint paint = new Paint(); 

     paint.setColor(Color.BLACK); 

     paint.setStrokeWidth(3); 

     paint.setStyle(Paint.Style.STROKE); 

     Path path = new Path(); 

     path.moveTo(100, 100); 
     path.lineTo(200, 200); 
     path.lineTo(200, 500); 
     path.lineTo(400, 500); 
     path.lineTo(400, 200); 
     path.lineTo(600, 200); 
     canvas.drawPath(path, paint); 

    } 

} 

Это работает очень хорошо, и я получаю тропинку, как я хочу. Теперь есть небольшая настройка, я хочу, чтобы дорожка рисования постепенно становилась прогрессивным способом (скажем, например, эффект, который будет иметь катящийся шар, если он рисует линию, пока он катится слева направо, его постепенный и медленный, но не пауза и рисование).

Я попытался реализовать Timertask, чтобы аннулировать представление и нарисовать новый вид, но это просто делает паузу и рисует, а не то, что я хочу.

Я думаю, мне нужно добавить ObjectAnimator или ValueAnimator в свой код. Но я не уверен, как это достичь. Пожалуйста, помогите

ответ

0

Я как-то понял, как этого достичь. Я, однако, не мог напрямую рисовать линию холста с анимацией, но обнаружил, что работает, и это действительно сработало для меня. Вместо этого я использовал горизонтальный индикатор выполнения с незначительной высотой, которая будет выглядеть как линия, а затем добавлена ​​объектная анимация, которая будет постепенно заполнять линию на основе установленного мною времени. Я поделюсь кодом для всех.

In my xml file, I used this, 

<ProgressBar 
     android:id="@+id/progressBar1" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="200dp" 
     android:progressDrawable="@drawable/custom_progress" 
     android:layout_height="2dp" 
     android:layout_below="@+id/button1" 
     android:layout_centerHorizontal="true" 
     android:max="100" 
     android:progress="0" 
     android:layout_marginTop="50dp" 
     /> 

And in my Java file , I used this code 

    pbr = (ProgressBar)findViewById(R.id.progressBar1); 

    animation = ObjectAnimator.ofInt(pbr, "progress", 100); 
    animation.setDuration(2000); 
    animation.start(); 

В некотором смысле, это дает мне эффект, как линия рисует постепенно. Вы можете попробовать это и проверить

Смежные вопросы