美文网首页Android开源项目Android知识Android开发
Glide-使用动态图作为正在加载占位图

Glide-使用动态图作为正在加载占位图

作者: Passon_Fang | 来源:发表于2016-11-15 21:20 被阅读4095次

完整的例子

布局

ImageView

<ImageView
    android:id="@+id/iv_main"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentBottom="true"
    android:scaleType="fitXY"
    />

创建一个 drawable

R.drawable.rotate_pro

<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/group_1"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360"/>

Activity 中代码

ImageView img = (ImageView) findViewById(R.id.iv_main);

final ObjectAnimator anim = ObjectAnimator.ofInt(img, "ImageLevel", 0, 10000);
anim.setDuration(800);
anim.setRepeatCount(ObjectAnimator.INFINITE);
anim.start();

Glide.with(this)
        .load(path)
        .placeholder(R.drawable.rotate_pro)
        .crossFade()
        .listener(new RequestListener<String, GlideDrawable>() {
            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                anim.cancel();
                Log.d(TAG, "onException: ");
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                anim.cancel();
                Log.d(TAG, "onResourceReady: ");
                return false;
            }
        })
        .into(img);

最终效果:

占位图

水平loading动画

替换上面使用的 drawable 即可

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <clip
            android:clipOrientation="horizontal"
            android:drawable="@drawable/rectangle"
            >

        </clip>
    </item>

</layer-list>

效果:

占位图

相关文章

网友评论

  • 小孩程序员:图片能分享一下 吗
  • 高清马里奥:刚看了下源码,ImageView的setImageLevel()方法会调用Drawable的setLevel()方法,而setLevel这个方法的参数有这样的说明:@IntRange(from=0,to=10000) int level,所以MAX_LEVEL就是这个Drawable的最大Level=10000.
  • 细雨蒙情:楼主@drawable/group_1这个资源在哪?
    Passon_Fang: @细雨蒙情 这是一个加载菊花图,你可以随意找个图片先看效果

本文标题:Glide-使用动态图作为正在加载占位图

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