Android 使用动画设置ProgressBar进度

来源:互联网 发布:淘宝店铺怎么查排名 编辑:程序博客网 时间:2024/05/21 06:43

需求场景:当我们在使用ProgressBar的时候,希望有进度加载的效果,此时我们传统的做法是使用Thread线程来实现,下面我们用属性动画来实现,简单粗暴。。哈哈哈

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.yhx.app.progressbardemo.MainActivity">    <ProgressBar        android:layout_marginTop="20dp"        android:id="@+id/bar"        android:layout_width="match_parent"        android:layout_height="8dp"        style="?android:attr/progressBarStyleHorizontal"        android:progress="10"        android:max="100">    </ProgressBar      >    <Button        android:hint="开始"       android:onClick="show"        android:layout_marginTop="50dp"        android:layout_width="match_parent"        android:layout_height="50dp"/>    <TextView        android:id="@+id/tv_bar"        android:layout_marginTop="20dp"        android:layout_width="100dp"        android:text="0"        android:gravity="center"        android:textSize="38dp"        android:layout_gravity="center"        android:layout_height="100dp"/>    <Button        android:hint="开始"        android:onClick="tvshow"        android:layout_marginTop="50dp"        android:layout_width="match_parent"        android:layout_height="50dp"/></LinearLayout>

Activity:

public class MainActivity extends AppCompatActivity {    private ProgressBar mProgressBar;    TextView mtv_bar;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mProgressBar = (ProgressBar) findViewById(R.id.bar);        mtv_bar = (TextView) findViewById(R.id.tv_bar);        setAnimation(mProgressBar, 100);    }    private void setAnimation(final ProgressBar view, final int mProgressBar) {        ValueAnimator animator = ValueAnimator.ofInt(0, mProgressBar).setDuration(5000);        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator valueAnimator) {                view.setProgress((int) valueAnimator.getAnimatedValue());            }        });        animator.start();    }    private void setTvAnimation(final TextView view, final int mProgressBar) {        ValueAnimator animator = ValueAnimator.ofInt(0, mProgressBar).setDuration(5000);        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator valueAnimator) {                view.setText(String.valueOf(valueAnimator.getAnimatedValue()));            }        });        animator.start();    }    public void show(View view) {        setAnimation(mProgressBar, 100);    }    public  void tvshow(View view){        setTvAnimation(mtv_bar,240);    }}

效果图:
这里写图片描述

原创粉丝点击