美文网首页
progress记录

progress记录

作者: coder乔 | 来源:发表于2018-04-07 22:19 被阅读0次

    实现一个需求:在点击刷新之后,出现一个转动的图标,刷新完成后停止;

    记录:

    1. 转动的实现,在drawable中添加一个xml:
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <rotate xmlns:android="http://schemas.android.com/apk/res/android"
                android:drawable="@drawable/setting_wifi_loading_1"
                android:fromDegrees="0"
                android:pivotX="50%"
                android:pivotY="50%"
                android:toDegrees="360" />
        </item>
    </layer-list>
    

    其实这是一个旋转动画继承自animation类,相关属性解释如下:

    android:fromDegrees="0"            
    #初始角度
    android:toDegree="360"
    #结束时角度,值为正时顺时针旋转,值为负时逆时针旋转
    android:pivot"50%"
    #旋转中心x轴坐标,取值可以是数值(50)、百分数(50%)、百分数p(50%p),当取值为数值时,缩放起点为View左上角坐标加具体数值像素,当取值为百分数时,表示在当前View左上角坐加上View宽度的具体百分比,当取值为百分数p时,表示在View左上角坐标加上父控件宽度的具体百分比
    android:pivotY="50%" 
    #同上
    android:duration="700"
    #动画持续时间,毫秒为单位
    android:fillAfter="true"
    #动画结束后,保持结束时的状态
    android:fillBefore="true"
    #动画结束后,恢复为初始状态
    android:fillEnabled="true"
    #效果同上
    android:repeatCount="5"  
    #重复次数,取值为-1时无限重复,默认动画执行一次
    android:repeatMode ="reverse"
    #重复模式,有reverse和restart两个值,前者为倒序回放,后者为重新开始android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    #没做测试,后续看看
    
    1. 在layout中添加progress时使用上述动画:
    <ProgressBar
        android:id="@+id/wifi_refresh_image"
        android:layout_width="@dimen/wifi_refresh_w"
        android:layout_height="@dimen/wifi_refresh_h"
        android:layout_marginLeft="@dimen/wifi_refresh_l"
        android:layout_marginTop="@dimen/wifi_refresh_t"
        android:indeterminate="true"
        android:indeterminateDrawable="@drawable/wifi_scan_loading"
        android:visibility="invisible"
        />
    

    设置完成后再activity中显示即是一直旋转的图标,那我们需要设置其停止和开始转动

    /**
     * 开始刷新动画
     */
    public void loadingStartRefresh() {
        mLoading.setIndeterminateDrawable(getResources().getDrawable(
                R.drawable.wifi_scan_loading));
        mLoading.setProgressDrawable(getResources().getDrawable(
                R.drawable.wifi_scan_loading));
        mLoading.setVisibility(View.VISIBLE);
    }
    
    /**
     * 停止刷新动画
     */
    public void loadingStopRefresh() {
        mLoading.setVisibility(View.INVISIBLE);
        mLoading.setIndeterminateDrawable(getResources().getDrawable(
                R.drawable.setting_wifi_loading_1));
        mLoading.setProgressDrawable(getResources().getDrawable(
                R.drawable.setting_wifi_loading_1));
    }
    

    其实看code很容易就知道,我们只是设置了setIndeterminateDrawable的资源而已,当相关资源设置为旋转的xml时即为旋转的,设置为固定图片时他就是停止的,不过我这里还加了一个显示和隐藏的逻辑而已

    以上为今天旋转的记录;

    相关文章

      网友评论

          本文标题:progress记录

          本文链接:https://www.haomeiwen.com/subject/xqjuhftx.html