Android实现ProgressBar旋转菊花加载的动画


Android实现ProgressBar旋转菊花加载的动画

在一些常见到的加载中需要显示一个加载动画,如旋转的菊花这样的动画效果,开发中有两种方案,一种是直接让设计师给出一个gif图片,然后写入到布局,另外一种,使用Android动画,把一张静止的图片动起来,本例用后者实现。

写一个xml布局,把ProgressBar放进去:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <ProgressBar
        android:id="@+id/loading"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:indeterminateBehavior="repeat"
        android:indeterminateDrawable=
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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" /> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值