精华内容
下载资源
问答
  • 2021-03-28 22:22:24

    1、sdk build版本必须为>=27,必须保证所有的support 的版本为相同并且为27.1.0

    compile 'com.android.support:support-v4:27.1.0'
    compile 'com.android.support:recyclerview-v7:27.1.0'
    

    2、我用的是Glide版本是4.7.1

    implementation 'com.github.bumptech.glide:glide:4.7.1'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
    

    3、官方说明了,如若要使用GlideApp需要做的是:

    ①自定义一个类extends AppGlideModule
    ②为这个类加入注解@GlideModule
    然后就可以在项目中可以使用GlideApp

    @GlideModule
    public final class CustomAppGlideModule extends AppGlideModule {
    
    }
    

    这个类放在任何位置都可以

    最后Builde——make project一下,就可以使用GlideApp了

    参考
    GlideApp无法生成问题解决
    Glide4.6.1 GlideApp无法生成的问题的解决

    更多相关内容
  • 本篇文章主要介绍了Glide4.6.1 GlideApp 无法生成的问题的解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • GlideApp 简短的描述性应用程序,介绍最佳实践,了解我在使用开发期间遇到的问题。 阅读更多。 通过缓存加载的图像上的灰色/绿色背景 我在通过滑行缓存加载的白色图像上观察到了灰色/绿色背景。 在滑动目标...
  • 现在,Glide的版本也进行了几个大的升级,目前,最新的版本是4.8.0,提供了很多的新的特性,GlideAPP就是其中一个,唯一不足的就是,还没有引入对AndroidX的支持,不过听说是在5.0之后开始对AndroidX支持,让我们拭目以待吧,...
  • Android 使用Glide图片加载 GlideApp工具类
    /**
     * @author  yimin Zhang
     * @time    2022/5/19
     * @desc    GlideApp工具类
     */
    class GlideAppUtils {
    
        companion object {
    
    
            /**
             * 加载图片
             */
            fun loadImage(context: Context, url: String, imageView: ImageView) {
                GlideApp.with(context).load(url).into(imageView)
            }
    
            /**
             * 加载图片--中间裁剪
             */
            fun loadImageCenterCrop(context: Context, url: String, imageView: ImageView) {
                GlideApp.with(context).load(url).centerCrop().into(imageView)
            }
    
            /**
             * 加载图片--圆形
             */
            fun loadImageCircleCrop(context: Context, url: String, imageView: ImageView) {
                GlideApp.with(context).load(url).circleCrop().into(imageView)
            }
    
            /**
             * 加载图片--圆形带边框(可自定义边框宽度和颜色)
             */
            fun loadImageCropCircleWithBorder(
                context: Context,
                url: String,
                imageView: ImageView,
                borderSize: Int,
                borderColor: Int
            ) {
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(
                            CropCircleWithBorderTransformation(
                                borderSize,
                                borderColor
                            )
                        )
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
    
            /**
             * 加载图片--圆角--四边全圆角 (自定义弧度半径和边距)
             */
            fun loadImageRound(
                context: Context,
                url: String,
                imageView: ImageView,
                radius: Int,
                margin: Int
            ) {
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(RoundedCornersTransformation(radius, margin))
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
    
            /**
             * 加载图片--圆角--指定圆角(上下左右可任意指定) (自定义弧度半径和边距)
             */
            fun loadImageRound(
                context: Context,
                url: String,
                imageView: ImageView,
                radius: Int,
                margin: Int,
                cornerType: RoundedCornersTransformation.CornerType
            ) {
    
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(RoundedCornersTransformation(radius, margin, cornerType))
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
    
            /**
             * 加载图片--灰度-黑白
             */
            fun loadImageGrayscale(
                context: Context,
                url: String,
                imageView: ImageView
            ) {
    
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(GrayscaleTransformation())
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
    
            /**
             * 加载图片--模糊效果(毛玻璃效果)
             */
            fun loadImageBlur(
                context: Context,
                url: String,
                imageView: ImageView
            ) {
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(BlurTransformation())
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
    
            /**
             * 加载图片--颜色滤镜
             */
            fun loadImageColorFilter(
                context: Context,
                url: String,
                imageView: ImageView,
                color: Int
            ) {
                val options =
                    RequestOptions()
                        .centerCrop()
                        .transform(ColorFilterTransformation(color))
                GlideApp.with(context).load(url).apply(options).into(imageView)
            }
        }
    }

    关于Glide的配置相关在我的另外一个博客上:

    Android图片加载 : Glide全局配置 GlideApp 及使用_温柔而以的博客-CSDN博客

    展开全文
  • 升级到Glide 4.x后,使用Generated API时,怎么都没有生成GlideApp,以下可能会帮助到你首先,注意 annotationProcessor。使用annotationProcessor时,一定要去掉apt 的配制我原来使用的butterknife 是用的apt形式。...

    升级到Glide 4.x后,使用Generated API时,怎么都没有生成GlideApp,以下可能会帮助到你

    首先,注意 annotationProcessor。使用annotationProcessor时,一定要去掉apt 的配制

    我原来使用的butterknife 是用的apt形式。所以一直生成不了GlideApp 下面我们一步步来解决

    第一步:在最外层的builde.grade 去掉classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

    dependencies {

    classpath'com.android.tools.build:gradle:2.3.3'

    classpath'com.jakewharton:butterknife-gradle-plugin:8.5.1' 这个是要去掉

    }

    一定要去掉 classpath'com.jakewharton:butterknife-gradle-plugin:8.5.1'

    去掉后

    dependencies {

    classpath'com.android.tools.build:gradle:2.3.3'

    }

    第二步:在app的builde.grade 中 apply plugin: 'android-apt' 也要去掉

    第三步:在app的builde.grade 中 dependencies 如果使用了apt,

    如:

    dependencies {

    compile 'com.jakewharton:butterknife:8.4.0'

    apt 'com.jakewharton:butterknife-compiler:8.4.0'

    }

    把apt 改成 annotationProcessor的形式

    dependencies {

    compile 'com.jakewharton:butterknife:8.4.0'

    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

    }

    然后 添加Glide,具体的按Glide 要求

    dependencies {

    compile fileTree(include: ['*.jar'],dir:'libs')

    androidTestCompile(librarys.espresso, {

    excludegroup:'com.android.support',module:'support-annotations'

    })

    compile 'com.jakewharton:butterknife:8.4.0'

    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

    compile 'com.github.bumptech.glide:glide:4.1.1'

    annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

    }

    添加完Glide引用后,自定义自己的 AppGlideModule

    @GlideModule

    public final class MyAppGlide Module extends AppGlideModule{}

    在自己项目根目录中,也就是包名下,不要放到什么二级三级目录中,放到最外层的根目录中

    重新 build -> Make Project

    估计差不多了,我刚开始弄的时候,忽略apt  annotationProcessor

    当你看到这里的时候,你应该明白了,这。。无非是引用方法配制不对的问题,我还废话这么多。。。。

    展开全文
  • GlideApp:滑行源研究

    2021-04-27 18:49:33
    GlideApp 学习Glide代码使用的工程. 维护了一个可以直接编译运行的glide项目, 与官方glide工程不同的是: 把所有的第三方库级annotation库合并到了一起, 方便调试. 目前已经与4.7.1版本代码同步.
  • 前言 在上一篇文章中我们体验了Glide-4.0的强大,以及更加简便的API,很多童鞋已经开始迁移了,那么...GlideApp.with(this) .load(R.raw.large_giphy_logo) .into(giphyLogoView); 就这么简简单单的一句代码,其实G

    前言

    在上一篇文章中我们体验了Glide-4.0的强大,以及更加简便的API,很多童鞋已经开始迁移了,那么接下来我们一起探索一下他的神奇之处:

    首先我们来看一下4.0的基本用法:

    GlideApp.with(this)
            .load(R.raw.large_giphy_logo)
            .into(giphyLogoView);
    

    就这么简简单单的一句代码,其实Glide在背后帮我们做了成吨的事情。所以为了解开大家的好奇,一起来解析一下Glide-4.0源码。

    准备

    想要阅读源码那么久需要先下载源码,
    GitHub地址:
    https://github.com/bumptech/glide
    我们这一篇是基于4.1.0讲解的,后续如果想查看这个版本的代码可以通过下面的链接:
    https://github.com/bumptech/glide/tree/v4.1.1
    剩下的应该不用说了吧,直接
    git clone https://github.com/bumptech/glide.git

    下载好源码之后我们可以看到里面有五个demo,我们可以运行一下看看效果,这里就不给大家挨着展示了。
    这里写图片描述

    到这里我们即将开启我们的源码之旅。
    可能我们最大的疑惑就是glide为什么就用了简单的一句代码就可以实现图片的加载。
    GlideApp.with(this).load(R.raw.large_giphy_logo).into(giphyLogoView);

    首先,先说一下今天的解读思路:
    Glide基本的加载步骤是三步那么我们就分别解读这三步with()load()into()到底是如何实现的,以及GlideApp是什么鬼?
    今天这篇文章先讲述一下 GlideAppwith()背后的故事。

    GlideApp如何诞生?

    1、 @GlideModule注解做了什么事情?

    /**
     *在编译时,为AppGlideModules和LibraryGlideModules提供注入。
     *
     *替换掉  AndroidManifest.xml 中value="GlideModule" 的 <meta-data /> 。
     *这里需要注意后续需要用到<meta-data />这个标签,先记住此处
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.SOURCE)
    public @interface GlideModule {
      /**
       *此处返回的name就是你在使用时的class name。
       *
       *eg:将GlideApp改为GlideAppX
       *那么通过注解生成的类就是GlideAppX
       *那么你使用时候就会是 GlideAppX.with(this)
       */
      String glideName() default "GlideApp";
    }
    

    注视已经详细介绍了这个类的作用,后面我们来看一下生成的GlideApp。

    2、GlideApp能做啥?

    GlideApp这个类事通过上面的注解获得到的,是不容许被修改的,是Glide在应用中的入口,做一些初始化,获取图片存储路径之类的,非常简单,注释也非常清楚,就不详细叙述了。
    此处省略中间代码,

    public final class GlideApp {
      private GlideApp() {
      }
    
      /**
       * @see Glide#getPhotoCacheDir(Context)
       */
      @Nullable
      public static File getPhotoCacheDir(Context context) {
        return Glide.getPhotoCacheDir(context);
      }
    
      ...
      ... 省略
      ...
    
      /**
       * @see Glide#with(View)
       */
      public static GlideRequests with(View view) {
        return (GlideRequests) Glide.with(view);
      }
    }
    

    那么到了这里我们已经知道了GlideAPP是如何诞生的以及GlideApp都有哪些方法。

    接下来我们就详细看一下AppGlideModule做什么了,为啥要继承AppGlideModule?

    3.为什么继承AppGlideModule?

    我们先来看一下***AppGlideModule***的API
    Class AppGlideModule

    这里写图片描述

    (1)isManifestParsingEnabled

    我们先来看一下isManifestParsingEnabled()
    用途:是否检测AndroidManifest里面的GlideModule
    该方法,默认返回true。
    但是如果我们通过上面的注解和继承AppGlideModule生成自己的module时,官方要求我们实现这个方法,返回并且false,这样避免AndroidManifest加载两次。

    下面是注释原文:

    Implementations should return false after they and their dependencies have migrated to Glide's annotation processor.
    

    我之前的文章对这个方法也有讲解可以去了解一下:

    (2)applyOptions

    在Glide被创建之前,对GlideBuilder进行设置。
    方案非常多就不详细叙述了,如下图所示:
    这里写图片描述

    ⚠️:这个方法只调用一次。

    开始阅读—with()背后的故事!

    1.GlideApp.with()方法干啥了?

      /**
       * @see Glide#with(Context)
       */
      public static GlideRequests with(Context context) {
        return (GlideRequests) Glide.with(context);
      }
    
      ...
      ... 入参不同省略
      ...
    
      /**
       * @see Glide#with(View)
       */
      public static GlideRequests with(View view) {
        return (GlideRequests) Glide.with(view);
      }
    

    从上面的代码中可以看到我们使用GlideApp.with()其实还是在使用Glide.with()方法。
    那么我们这里直接研究Glide.with()方法:

    2.Glide.with()方法究竟做啥了?

    with()方法是Glide中的一组静态方法,有好几个重载方法,如下所示:

    public static RequestManager with(Context context) {
       return getRetriever(context).get(context);
     }
    
     public static RequestManager with(Activity activity) {
       return getRetriever(activity).get(activity);
     }
    
     public static RequestManager with(FragmentActivity activity) {
       return getRetriever(activity).get(activity);
     }
    
     public static RequestManager with(android.app.Fragment fragment) {
       return getRetriever(fragment.getActivity()).get(fragment);
     }
    
     public static RequestManager with(Fragment fragment) {
       return getRetriever(fragment.getActivity()).get(fragment);
     }
    
     public static RequestManager with(View view) {
       return getRetriever(view.getContext()).get(view);
     }
    

    可以看到,with()方法的重载种类非常多,如下:

    with(android.app.Activity)
    with(android.app.Fragment)
    with(android.support.v4.app.Fragment)
    with(android.support.v4.app.FragmentActivity)
    with(android.view)

    每一个with()方法重载的代码都非常简单,都是调用调用getRetriever(activity).get(activity),返回一个RequestManager对象。

    那么我们先来看一下getRetriever(...).get(...)做了什么事情?

    3.getRetriever(…).get(…)做了什么事情?

    1、getRetriever(…)做了什么事情?

    如下图,这里是一个静态方法,返回RequestManagerRetriever,
    这里写图片描述
    这里官方已经帮我们做了判空处理,注释非常详细,这里就不再介绍了。
    这里我们获得了RequestManagerRetriever,接下来看些.get(...)方法做了什么?

    2、getRetriever(…).get(…)做了什么事情?

    第一步我们获得了RequestManagerRetriever,那么接下来我们详细看一下里面的get()方法。

    RequestManagerRetriever是一个用静态方法的集合,这些方法包括新建RequestManager或者从Activity/Fragment检索出现有的。
    API:RequestManagerRetriever
    这里写图片描述

    源代码如下:

    public class RequestManagerRetriever implements Handler.Callback {
      public RequestManager get(Context context) {
          if (context == null) {
            throw new IllegalArgumentException("You cannot start a load on a null Context");
          } else if (Util.isOnMainThread() && !(context instanceof Application)) {
            if (context instanceof FragmentActivity) {
              return get((FragmentActivity) context);
            } else if (context instanceof Activity) {
              return get((Activity) context);
            } else if (context instanceof ContextWrapper) {
              return get(((ContextWrapper) context).getBaseContext());
            }
          }
    
          return getApplicationManager(context);
        }
    
        public RequestManager get(FragmentActivity activity) {
          if (Util.isOnBackgroundThread()) {
            return get(activity.getApplicationContext());
          } else {
            assertNotDestroyed(activity);
            FragmentManager fm = activity.getSupportFragmentManager();
            return supportFragmentGet(activity, fm, null /*parentHint*/);
          }
        }
    
        public RequestManager get(Fragment fragment) {
          Preconditions.checkNotNull(fragment.getActivity(),
                "You cannot start a load on a fragment before it is attached or after it is destroyed");
          if (Util.isOnBackgroundThread()) {
            return get(fragment.getActivity().getApplicationContext());
          } else {
            FragmentManager fm = fragment.getChildFragmentManager();
            return supportFragmentGet(fragment.getActivity(), fm, fragment);
          }
        }
    
        public RequestManager get(Activity activity) {
          if (Util.isOnBackgroundThread()) {
            return get(activity.getApplicationContext());
          } else {
            assertNotDestroyed(activity);
            android.app.FragmentManager fm = activity.getFragmentManager();
            return fragmentGet(activity, fm, null /*parentHint*/);
          }
        }
    
        public RequestManager get(View view) {
          if (Util.isOnBackgroundThread()) {
            return get(view.getContext().getApplicationContext());
          }
    
          Preconditions.checkNotNull(view);
          Preconditions.checkNotNull(view.getContext(),
              "Unable to obtain a request manager for a view without a Context");
          Activity activity = findActivity(view.getContext());
          // The view might be somewhere else, like a service.
          if (activity == null) {
            return get(view.getContext().getApplicationContext());
          }
    
          // Support Fragments.
          if (activity instanceof FragmentActivity) {
            Fragment fragment = findSupportFragment(view, (FragmentActivity) activity);
            if (fragment == null) {
              return get(activity);
            }
            return get(fragment);
          }
    
          // Standard Fragments.
          android.app.Fragment fragment = findFragment(view, activity);
          if (fragment == null) {
            return get(activity);
          }
          return get(fragment);
        } 
    }
    

    这里我们挨着对上面代码进行解析:在这里我们将入参分为两类,一类是Application,
    一类是非Application

    (1)当传入Application时:
    如果在Glide.with()方法中传入的是一个Application对象,那么这里就会调用上面的get()方法重载,最后来获取一个RequestManager对象。其实这是最简单的一种情况,因为Application对象的生命周期即应用程序的生命周期,因此Glide并不需要做什么特殊的处理,它自动就是和应用程序的生命周期是同步的,如果应用程序关闭的话,Glide的加载也会同时终止。

    public RequestManager get(Context context) {
        if (context == null) {
          throw new IllegalArgumentException("You cannot start a load on a null Context");
        } else if (Util.isOnMainThread() && !(context instanceof Application)) {
          if (context instanceof FragmentActivity) {
            return get((FragmentActivity) context);
          } else if (context instanceof Activity) {
            return get((Activity) context);
          } else if (context instanceof ContextWrapper) {
            return get(((ContextWrapper) context).getBaseContext());
          }
        }
        return getApplicationManager(context);
      }
    

    对ContextWrapper不熟悉的童鞋,可以参考这篇文章 Android源码装饰模式—ContextWrapper

    (2)当传入的是非Application时:
    这里写图片描述

    ⚠️:上图中可以看出来,如果在子线程,默认当application处理!!!

    通过上图我们会发现不论传入Activity、FragmentActivity、Fragment最终都会调用图中红框中的方法,而这两个方法最终流程都是一致的就是那就是会向当前的Activity当中添加一个隐藏的Fragment。
    下面是两个方法的具体代码: 对应的app包和v4包下的两种Fragment的情况。

    接下来我们看fragmentGet()supportFragmentGet()两个方法。

    fragmentGet()方法

    private RequestManager fragmentGet(Context context, android.app.FragmentManager fm,
          android.app.Fragment parentHint) {
        RequestManagerFragment current = getRequestManagerFragment(fm, parentHint);
        RequestManager requestManager = current.getRequestManager();
        if (requestManager == null) {
          // TODO(b/27524013): Factor out this Glide.get() call.
          Glide glide = Glide.get(context);
          requestManager =
              factory.build(glide, current.getGlideLifecycle(), current.getRequestManagerTreeNode());
          current.setRequestManager(requestManager);
        }
        return requestManager;
      }
    

    supportFragmentGet()方法

      private RequestManager supportFragmentGet(Context context, FragmentManager fm,
          Fragment parentHint) {
        SupportRequestManagerFragment current = getSupportRequestManagerFragment(fm, parentHint);
        RequestManager requestManager = current.getRequestManager();
        if (requestManager == null) {
          // TODO(b/27524013): Factor out this Glide.get() call.
          Glide glide = Glide.get(context);
          requestManager =
              factory.build(glide, current.getGlideLifecycle(), current.getRequestManagerTreeNode());
          current.setRequestManager(requestManager);
        }
        return requestManager;
      }
    

    为什么使用Glide需要support-v4包??

    ⚠️:注意啦!
    答:应该有童鞋遇到过下面的问题,引入Glide需要导入v4包,他在思考自己没有用到啊,其实是glide这里用到了,需要引入com.android.support:support-v4

    是不是发现看了源码之后明白了为啥要添加v4包了!!!~~~~

    那么这里为什么要添加一个隐藏的Fragment呢?

    ⚠️:注意啦!
    答:因为Glide需要知道加载的生命周期。很简单的一个道理,如果你在某个Activity上正在加载着一张图片,结果图片还没加载出来,这时候Activity被用户关掉了,那么图片就应该取消加载,可是Glide并不知道Activity的生命周期,怎么办呢?
    于是Glide就使用了添加隐藏Fragment的这种小技巧,因为Fragment的生命周期和Activity是同步的,如果Activity被销毁了,Fragment是可以监听到的,这样Glide就可以捕获这个事件并停止图片加载了。
    RxPermissions也用到了这种技巧。

    既然有了Application,为什么不用registerActivityLifecycleCallbacks而是用隐藏的Fragment?

    ⚠️:注意啦!
    答:registerActivityLifecycleCallbacks是可以实现,并且我的小伙伴在自己的某些工程中也在使用,但是个人理解是这样的:
    registerActivityLifecycleCallbacks监控所有的Activity生命周期,然而当你使用Glide加载图片时,并不是所有的Activity都会用到Glide加载图片(大多数情况),所以呢,使用registerActivityLifecycleCallbacks存在资源浪费的现象。不仅如此,你监控了所有的activity怎么和Glide想要监控的Activity关联到一块去,虽然可以实现,但是这个办法真心不实用,既然Glide给了我们这么完美的解决方案我们就要学以致用,以后尽力用到自己的工程中去。

    GlideAPP()with()方法到这里就结束了,以上为个人见解,有不同理解的小伙伴可以扫码左侧二维码,参与讨论哦!!!欢迎你来技术交流,无bb,不朋友!!

    童鞋们期待着下一期的Glide源码分析吧!!!

    扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

    公众号回复“资料获取”,获取更多干货哦~

    有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

    展开全文
  • 但是编译不过,没有生成GlideApp,导致类中应用的GlideApp的各种方法都不能引用,错误如图: 参考了一位网友的修改方法(链接:...
  • GlideApp 引入不了问题

    2019-04-08 17:00:33
    使用GlideApp 不用忘记创建 MyAppGlideModule 集成 AppGlideModule 我的项目中使用如下 @GlideModule public class MyAppGlideModule extends AppGlideModule { @Override public void applyOptions(@NonNull...
  • GlideApp报红

    2019-09-28 07:17:13
    按照菜单上操作即可; 上来这里报错,注释掉就行: /** * hide toolbar */ private void hideToolBar(){ //getSupportActionBar().hide(); }   转载于:...
  • 第一步 implementation 'com.github.bumptech.glide:glide:4.9.0' ... 第二步 apply plugin: 'kotlin-kapt' //在build.gradle中添加插件 第三部 @GlideModule class CustomAppGlideModule : AppGlideModule() { ... *
  • 如题,我看4.0以后的版本大家普遍都是使用glideApp,可我感觉用glide好像也没那么糟糕吧,也没什么问题啊,想大佬帮忙解答一下这个疑惑
  • Androidstudio 编译,GlideApp 找不到报错,网上找了资源,记录一下。 1.clean project 2.rebuild project 3.以上尝试多次未解决,可能是xml文件有错导致,检查布局文件,AndroidManifest是否有报错,解决后重新...
  • 假设你已经完成Android Glide加载网络的svg图片_jChenys的博客-CSDN博客_glide加载svg,仍然不能加载svg,那么可能的原因之一有: 使用了Kotlin开发,但是没有把annotationProcessor换成 kapt ...
  • Android Glide 4.0编译找不到GlideApp

    千次阅读 2018-12-20 15:31:45
    Glide官方文档: Android Studio 在大多数时候都可以正确地处理注解处理器 (annotation processor) 和 generated API。然而,当你第一次添加你的 AppGlideModule 或做了某些类型的修改后,你可能需要重新构建 ...
  • // 加载图片 GlideApp.with(BaseApplication.getInstance()) .load(url) .placeholder(placeholderResId) .diskCacheStrategy(DiskCacheStrategy.ALL) .apply(options) .into(imageView); } else { // 加载图片 ...
  • 今天遇到一个GlideApp一直无法生成的BUG,已经按照官方指引写好了类和注解了。 @GlideModule class OkHttpGlideModule: AppGlideModule() { override fun registerComponents(context: Context, glide: Glide, ...
  • 使用Glide时 错误: 找不到符号 符号: 类 GlideApp解决方案 简雨山舍 2019-05-24 15:29:59 1132 收藏 展开 场景: 编译时提示找不到符号 符号: 类 GlideApp 问题: 如何解决找不到类 GlideApp的问题? 解决方案: ...
  • GlideApp .with(context) .load(youImageAddress) .apply(options) .centerCrop() .into(viewHolder.img_resource); apply(options) 这个的代码如下: RequestOptions options = new RequestOptions() ...
  • Kotlin编程开发之Glide V4 Generated API,解决不能引用GlideApp问题。
  • Glide V4 找不到 GlideApp

    千次阅读 2018-10-17 17:14:27
    Glide V4 找不到 GlideApp java 1.添加依赖到项目 repositories { mavenCentral() } dependencies { annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0' } 2.创建自定类继承 AppGlideModule ...
  • kotlin-kapt插件支持Android的注解处理 1、配置kotlin-kapt插件 apply plugin: 'kotlin-kapt' 2、替换注解依赖 implementation 'com.github.bumptech.glide:glide:4.9.0' kapt '......
  • Android glide 4.x找不到GlideApp

    千次阅读 2018-06-20 17:26:29
    Android glide 4.x找不到GlideApp 配置glide 4.x以上的版本 Glide官网配置介绍 dependencies { implementation 'com.github.bumptech.glide:glide:4.7.1' annotationProcessor '...
  • 错误: 找不到符号 符号: 类 GlideApp

    千次阅读 2018-12-03 10:06:25
    错误: 找不到符号 符号: 类 GlideApp 我确定Glide都已经配置成功了,但是突然爆出这个错误 还是挺令人费解 开始一直以为是自己的Glide是不是哪里出问题了,结果找了半天没找到,后来发现是因为项目中使用了...
  • 标准的流程如官方文档,不做解释:https://muyangmin.github.io/glide-docs-cn/doc/generatedapi.html 但仍有无法自动生成,前一秒没问题,稍稍改了代码就不行了呢?...后来就annotationProcessor自动生成了GlideApp

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 933
精华内容 373
关键字:

GlideApp