android实现加载过程动画
时间: 2023-07-21 16:14:02 浏览: 75
在Android中实现加载过程动画可以使用ProgressBar或者自定义View来实现。以下是两种实现方式:
1. 使用ProgressBar
ProgressBar是Android系统自带的控件,可以实现加载过程动画。可以通过以下代码实现:
```
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:indeterminate="true" />
```
其中,android:indeterminate="true"表示ProgressBar是一个不确定进度的动画。
2. 自定义View
可以通过自定义View来实现更加个性化的加载过程动画。以下是一个简单的示例代码:
```
public class LoadingView extends View {
private Paint mPaint;
private RectF mRectF;
private float mStartAngle = 0;
private float mSweepAngle = 45;
private int mWidth;
private int mHeight;
public LoadingView(Context context) {
super(context);
init();
}
public LoadingView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public LoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint();
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(10);
mPaint.setAntiAlias(true);
mRectF = new RectF();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mRectF.set(0, 0, mWidth, mHeight);
canvas.drawArc(mRectF, mStartAngle, mSweepAngle, false, mPaint);
mStartAngle += 5;
if (mStartAngle >= 360) {
mStartAngle = 0;
}
postInvalidateDelayed(10);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mWidth = MeasureSpec.getSize(widthMeasureSpec);
mHeight = MeasureSpec.getSize(heightMeasureSpec);
}
}
```
该自定义View会绘制一个旋转的圆弧,可以通过改变mStartAngle和mSweepAngle的值来改变动画效果。在使用时,直接将该View加入布局即可:
```
<com.example.myapplication.LoadingView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true" />
```