android 进度条上图片跟着进度走
时间: 2023-08-17 16:17:50 浏览: 154
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
在 Android 应用中,可以使用 ProgressBar 控件来实现进度条,同时使用 ImageView 控件来显示图片。要让图片跟着进度走,可以使用动画效果来实现。
首先,在布局文件中创建 ProgressBar 和 ImageView 控件,如下所示:
```xml
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="0" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" />
</RelativeLayout>
```
其中,ProgressBar 控件设置了最大值为 100,ImageView 控件设置了图片资源和位置。
然后,在代码中使用 ValueAnimator 来实现动画效果,让 ImageView 控件的位置随着进度条的变化而变化,代码如下所示:
```java
ProgressBar progressBar = findViewById(R.id.progressBar);
ImageView imageView = findViewById(R.id.imageView);
ValueAnimator animator = ValueAnimator.ofInt(0, 100);
animator.setDuration(2000);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int progress = (int) animation.getAnimatedValue();
progressBar.setProgress(progress);
float fraction = animation.getAnimatedFraction();
int width = progressBar.getWidth();
int offset = (int) (width * fraction);
imageView.setTranslationX(offset);
}
});
animator.start();
```
其中,ValueAnimator.ofInt(0, 100) 表示创建一个从 0 到 100 的动画,setDuration(2000) 表示动画持续时间为 2 秒。在 addUpdateListener 中,通过 animation.getAnimatedValue() 方法获取当前的进度值,并设置给 ProgressBar 控件;通过 animation.getAnimatedFraction() 方法获取当前动画的完成度,并计算出 ImageView 控件的偏移量,然后通过 imageView.setTranslationX(offset) 方法设置 ImageView 控件的水平偏移量。
这样,就可以实现 Android 进度条上图片跟着进度走的效果了。
阅读全文