【Android】カスタムProgressView-プログレスバーアニメーション
3285 ワード
先日、会社の需要があって、进度条のアニメーションを実现して、もともとネット上で似たようなものがあるかどうかを探して使って、サボってもだめです.
Githubプロジェクトアドレス
アニメーションのプレビュー社内プロジェクト効果プレビュー を使用簡潔効果プレビュー コード実装
アニメーションの効果はとても简単で、
コードを見るのが王道だカスタム コード使用コード
意見のフィードバック
問題や良いアドバイスがあれば、issue、[email protected]または[email protected]
あなたに役に立つと思ったら、いいですね.
View
プログレスバーアニメーションを簡単にカスタマイズします.実現は簡単だ.Githubプロジェクトアドレス
アニメーションのプレビュー
アニメーションの効果はとても简単で、
ObjectAnimator
の属性のアニメーションを使って実现して、この公式はいくつかApiの使用を提供して、具体的に公式のドキュメントを见ることができます.この例では、後でより複雑なアニメーションを実装する必要がある場合にカスタマイズできます.ここでは、コード注釈について、ベースカスタムView
アニメーションについて簡単に説明します.必要な効果が私と似ている場合は、ProgressViewファイルを直接コピーして使用することができます.必要なプロパティが足りない場合は、直接中で追加を変更することができます.コードを見るのが王道だ
View
-ProgressView
コード(プライマリコードのみ表示)public class ProgressView extends View {
private void initView() {
//
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
animator = new ObjectAnimator();
//
animator.setPropertyName("progress");
// View
animator.setTarget(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//
paint.setAntiAlias(true); //
paint.setColor(color); //
paint.setStyle(Paint.Style.FILL);
paint.setStrokeWidth(1);
//
RectF rectF = new RectF(0, 0, progress, getHeight());
canvas.drawRoundRect(rectF, radius, radius, paint);
}
public void startAnim() {
if (animator.isRunning()) animator.end();
// , 0 - max
animator.setFloatValues(0, progress);
//
animator.setDuration(duration);
//
animator.start();
}
}
xml
追加コード "@+id/progressview"
android:layout_width="wrap_content"
android:layout_height="30dp"/>
//
progressview.setColor(getResources().getColor(R.color.colorAccent));
//
progressview.setRadius(6);
// px
progressview.setProgress(500);
//
progressview.setDuration(500);
//
progressview.startAnim();
//
progressview.getAnimator().addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
//
}
@Override
public void onAnimationEnd(Animator animation) {
//
}
@Override
public void onAnimationCancel(Animator animation) {
//
}
@Override
public void onAnimationRepeat(Animator animation) {
//
}
});
意見のフィードバック
問題や良いアドバイスがあれば、issue、[email protected]または[email protected]
あなたに役に立つと思ったら、いいですね.