Glide图片框架使用详细介绍(四)自定义动画
来源:互联网 发布:数控编程方法有 编辑:程序博客网 时间:2024/04/29 09:36
1、动画基础
从图像到图像的平滑过渡是非常重要的。用户不喜欢在应用中出现突然的转变。这就是 Glide 要做的。Glide 中有一个标准动画去柔软的在你的 UI 中改变。我们在之前的博客 看了 .crossFade()。
但是这篇博客,我们要去看看除了 .crossFade() 的其他选择。Glide 提供了两个选项去设置一个动画。两个版本都是在 animate() 中,但传的参数并不同。
在我们之前代码,我们指出,动画仅仅用于不从缓存中加载的情况。如果图片被缓存过了,它的显示是非常快的,因此动画是没有必要的,并且不显示的。
从资源中的动画
回到代码,第一个选项是传一个 Android 资源 id,即动画的资源。一个简单的例子是每个 Android 系统都提供的:slide-in-left(从左滑入)动画,android.R.anim.slide_in_left。下面这段代码是这个动画的 XML 描述:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-50%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_mediumAnimTime" /></set>
当然你可以创建你自己的 XML 动画。比如一个小的缩放动画,图片刚开始小的,然后逐渐增大到原尺寸。
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true"> <scale android:duration="@android:integer/config_longAnimTime" android:fromXScale="0.1" android:fromYScale="0.1" android:pivotX="50%" android:pivotY="50%" android:toXScale="1" android:toYScale="1"/></set>
这两个动画都可以用到 Glide 建造者中:
Glide .with( context ) .load( eatFoodyImages[0] ) .animate( android.R.anim.slide_in_left ) // or R.anim.zoom_in .into( imageView1 );
在图片从网络加载完并准备好之后将从左边滑入。
通过自定义类实现动画
当你想加载到常规的 ImageView 中这是没问题的。但是如果 target 是一些自定义的呢,比如我们之前在这篇博客 里所谈论过的?所以另外一个选项就非常有用了。通过传递一个动画资源的引用,你实现的一个类有 ViewPropertyAnimation.Animator 接口。
这个很简单,你只需实现 void animate(View view) 方法。这个视图对象是整个 target 视图。如果它是一个自定义的视图,你要找到你的视图的子元素,并且做些必要的动画。
来看个简单的例子。假设你想要实现一个渐现动画,你得需要创建这样的动画对象:
ViewPropertyAnimation.Animator animationObject = new ViewPropertyAnimation.Animator() { @Override public void animate(View view) { // if it's a custom view class, cast it here // then find subviews and do the animations // here, we just use the entire view for the fade animation view.setAlpha( 0f ); ObjectAnimator fadeAnim = ObjectAnimator.ofFloat( view, "alpha", 0f, 1f ); fadeAnim.setDuration( 2500 ); fadeAnim.start(); }};
接下来,你需要在 Glide 请求中去设置这个动画:
Glide .with( context ) .load( eatFoodyImages[1] ) .animate( animationObject ) .into( imageView2 );
当然,在 animate(View view) 中你的动画对象方法中, 你可以做任何你想要对视图做的事情。自由的用你的动画创建吧。
如果你要在你的自定义视图中实现,你只需要创建这个视图对象,然后在你的自定义视图中创建你的自定义方法。
- Glide图片框架使用详细介绍(四)自定义动画
- Glide图片框架使用详细介绍(三)自定义glide以及图片处理自定义transform
- Glide图片框架使用详细介绍(一)
- Glide图片框架使用详细介绍(五)之Glide-源码详解
- Glide图片框架使用详细介绍(二)之缓存策略
- github图片加载框架glide使用介绍
- Glide图片框架使用
- goolge官方推荐图片加载框架glide使用介绍
- Android studio 图片加载框架Glide介绍及使用
- 图片加载框架简单介绍<三> Glide的基本使用
- Android--Glide图片加载框架的基本使用与介绍
- Android Glide图片框架使用
- Android图片加载框架Glide之Glide的自定义模块
- 自定义glide数据源,使用socket获取图片
- android glide 图片加载框架使用
- 图片加载框架Glide使用教程
- Android图片加载Glide框架使用详解
- 图片加载框架Glide使用详解
- Maxout网络学习
- 为什么不去学习
- SmartFrame
- 使用ffmpeg合并视频
- 进程间通信方法-共享内存
- Glide图片框架使用详细介绍(四)自定义动画
- 欢迎使用CSDN-markdown编辑器
- JS 日期相关使用总结
- 淘淘商城系列——Solr集群搭建
- c++ 11多线程例子 opencv读入视频设置滚动条
- BMP格式详解
- Linux 常用命令
- Microsoft.CSharp.RuntimeBinder.RuntimeBinderException处理办法
- history显示命令执行时间