progress记录

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

记录:

  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时即为旋转的,设置为固定图片时他就是停止的,不过我这里还加了一个显示和隐藏的逻辑而已

以上为今天旋转的记录;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,441评论 25 708
  • 不知道是不是年纪大了,大前天下了夜班怎么都缓不过来,只好在家躺了两天,结果躺得腰酸背痛的,走起路来两腿打颤,感觉有...
    飞雪_飘渺阅读 422评论 0 1
  • 我就是那个32岁的男人,李梓赫。 从毕业到现在,我从事了近10年的高端管理培训工作。从招生老师到项目经理,我经历过...
    李梓赫阅读 1,119评论 0 0
  • 下班回来打开空调,温度显示17,暖意很快袭来,不由得自嘲:为何前些日子冻成冰棍儿就没想到用空调呢,哈,智力低下哦…...
    醒着的木头阅读 187评论 0 0
  • 没有经历过,做出选择,也就不会有如果 的概念。 我们做了很多错误的决定,有些能假以挽回,有些却只能殊途同归,在如果...
    然后呢JC阅读 427评论 0 0