当前位置: 首页 > news >正文

中国建设网是政府网站吗百度推广一年大概多少钱

中国建设网是政府网站吗,百度推广一年大概多少钱,江苏公司网站建设公司,做网站banner课程封面序言 glide可以在load的时候传入一个资源id来加载本地图标,但是在开发过程中。还得区分数据类型来分别处理。这样的使用成本比较大。希望通过自定义ModelLoader实现通过自定义的url来加载Drawab。降低使用成本 实现 一共四个类 类名作用GlideIcon通过自定义url的…

序言

glide可以在load的时候传入一个资源id来加载本地图标,但是在开发过程中。还得区分数据类型来分别处理。这样的使用成本比较大。希望通过自定义ModelLoader实现通过自定义的url来加载Drawab。降低使用成本

实现

在这里插入图片描述
一共四个类

类名作用
GlideIcon通过自定义url的编码和提取值的作用
GlideIconModelLoader自定义的ModelLocader实现自定义的url到drawable的获取过程
LocalFetcher获取drawab
MyGlideModule用来注册自定义的配置

GlideIcon

package com.zhuguohui.app.lib.glide;import android.util.Log;import com.zhuguohui.app.lib.app.BaseApp;/*** <pre>* Created by zhuguohui* Date: 2024/6/5* Time: 13:43* Desc:* </pre>*/
public class GlideIcon {static String ICON_START = "GlideIcon://";public static boolean isIcon(String url) {return url != null && url.startsWith(ICON_START);}public static String get(int drawableId) {return ICON_START + drawableId;}public static int getValue(String url) throws Exception {if (isIcon(url)) {String resourceName = url.substring(ICON_START.length());return Integer.parseInt(resourceName);}throw new IllegalArgumentException(url + " is not a glideIcon");}
}

GlideIconModeLoader

package com.zhuguohui.app.lib.glide;import android.graphics.drawable.Drawable;import com.bumptech.glide.load.Key;
import com.bumptech.glide.load.Options;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.ModelLoaderFactory;
import com.bumptech.glide.load.model.MultiModelLoaderFactory;import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;/*** <pre>* Created by zhuguohui* Date: 2024/6/5* Time: 13:38* Desc:* </pre>*/
public class GlideIconModeLoader implements ModelLoader<String, Drawable> {static class KeyImpl implements Key {String url;public KeyImpl(String url) {this.url = url;}@Overridepublic void updateDiskCacheKey(MessageDigest messageDigest) {messageDigest.update(url.getBytes(StandardCharsets.UTF_8));}}@Overridepublic LoadData<Drawable> buildLoadData(String s, int width, int height, Options options) {return new LoadData<>(new KeyImpl(s), new LocalFetcher(s));}@Overridepublic boolean handles(String s) {return GlideIcon.isIcon(s);}public static ModelLoaderFactory<String, Drawable> factory=new ModelLoaderFactory<String, Drawable>() {@Overridepublic ModelLoader<String, Drawable> build(MultiModelLoaderFactory multiFactory) {return new GlideIconModeLoader();}@Overridepublic void teardown() {}};
}

LocalFetcher

package com.zhuguohui.app.lib.glide;import android.graphics.drawable.Drawable;import com.bumptech.glide.Priority;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.data.DataFetcher;
import com.zhuguohui.app.lib.app.BaseApp;import java.io.InputStream;
import java.util.BitSet;/*** <pre>* Created by zhuguohui* Date: 2024/6/5* Time: 11:22* Desc:* </pre>*/
public class LocalFetcher implements DataFetcher<Drawable> {String url;public LocalFetcher(String url) {this.url = url;}@Overridepublic void loadData(Priority priority, DataCallback<? super Drawable> callback) {try {int id = GlideIcon.getValue(url);callback.onDataReady(BaseApp.app().getResources().getDrawable(id));} catch (Exception e) {callback.onLoadFailed(e);}}@Overridepublic void cleanup() {}@Overridepublic void cancel() {}@Overridepublic Class<Drawable> getDataClass() {return Drawable.class;}@Overridepublic DataSource getDataSource() {return DataSource.MEMORY_CACHE;}
}

MyGlideModule

package com.zhuguohui.app.lib.glide;import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;import com.bumptech.glide.Glide;
import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;import java.io.InputStream;/*** <pre>* Created by zhuguohui* Date: 2024/6/5* Time: 11:11* Desc:* </pre>*/
@GlideModule
public class MyGlideModule extends AppGlideModule {@Overridepublic void registerComponents(Context context, Glide glide, Registry registry) {super.registerComponents(context, glide, registry);registry.prepend(String.class, Drawable.class, GlideIconModeLoader.factory);}}

使用

注册

需要再gralde中导入下面两个依赖, 特别是 注解处理器没有这个无法注册

    //glide --startapi 'com.github.bumptech.glide:glide:4.16.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'//glide --end

代码中

直接这样用就行了

  String imageUrl = GlideIcon.get(R.mipmap.icon_xiaoxi_xitong);

位置

MyGlideModule 这个类可以在lib module中。

注意

bug

在使用 .transition(DrawableTransitionOptions.with(factory)) 实现淡入淡出的过程中发现第一次显示的时候无法显示本地图片。后来查了一下这是glide的bug。后面有空再来处理。

        Glide.with(getContext()).load(url)
//                .transition(DrawableTransitionOptions.with(factory)).apply(options).into(imageView);

经过检测上面的bug是因为使用了第三方库
CircleImageView

在这里插入图片描述

http://www.hkea.cn/news/74768/

相关文章:

  • 创新的专业网站建设适合小学生的新闻事件
  • 政府机关备案网站百度竞价什么意思
  • 广元专业高端网站建设seo视频
  • 烟台网站建设诚信臻动传媒百度网络营销中心
  • 贵阳网站建设搜王道下拉重庆seo网络推广关键词
  • 大型 网站的建设 阶段百度官方网站下载
  • 江苏专业做网站的公司百度地图导航网页版
  • 怎么去投诉做网站的公司宁波seo外包推广软件
  • 网络营销跟做网站有什么区别线上推广如何引流
  • 如何进行网店推广seo排名优化怎样
  • 什么建站程序好收录上海网络公司seo
  • 电子商务网站建设投资预算小程序平台
  • 广州外贸营销型网站成都移动seo
  • 如何韩国视频网站模板下载 迅雷下载sem竞价托管费用
  • 做网站去哪个平台seo培训学院
  • 网站移动端优化的重点有哪些营销策略ppt
  • 养车网站开发搜狗seo快速排名公司
  • 企业电子商务网站建设武汉百度快速排名提升
  • 建一个网站的流程今天刚刚发生的新闻
  • 建立网站请示优化服务是什么意思
  • 有一个做场景动画的网站山东seo费用多少
  • 阿里云服务器的网站备案流程图营销推广有哪些形式
  • 做宣传用什么网站好手游推广平台有哪些
  • 免费全国网站在线客服软件新手电商运营从哪开始学
  • 0317网站建设怎么建个网站
  • 做网站做电脑版还是手机版好电话营销
  • 深圳网站建设 设计搜索引擎的工作原理是什么?
  • 在线网站设计百度收录查询方法
  • 最新体育新闻足球百度seo收费
  • 手机网站做跳转好吗个人在百度上发广告怎么发