怎样更改Glide的缓存路径

怎样更改Glide的缓存路径,第1张

在图一中右键单击所要修改的包。

然后单击 Refactor --> Rename。

d出对话框,单击 Rename Package。

d出对话框,输入新的包名,单击 Refactor。

5

然后,就可以看到步骤一中单击的包的名称已经改变了。但是AndroidManifest文件中的包名却没改变(小编当时 *** 作是这样的),重新打开项目之后就好了。

APP首页用的是Fragment,然后用开源库Banner来实现轮播图,加载用的是Glide,然而一张都出不来。

使用Glide的依赖为

Glide40以上需要自定义一个类

build之后会生成一个GlideApp这样就可以使用了。

如果你添加的依赖为

build的时候会报错,此时你需要在gradle的defaultconfig添加下面这句

这样就可以build成功。

在使用banner的时候需要设置加载器:

其中ImageLoader是banner中封装好的,我们只需要继承一下即可。

在这里需要注意的是glide中的上下文如果使用的是displayImage中的context,也可能导致加载不出来。从网上资料查阅得,Glide获取容器生命周期的机制与其他开源框架产生了冲突,故而导致加载失效

解决的方法有两种:

1、上下文需要填

2、换用其他的第三方加载

在这里使用的是ImageLoader。

依赖为:

在Application中初始化

然后再banner中设置

还有一种是90的系统导致显示不出来,因此需要在

设置android:usesCleartextTraffic="true"即可

截图软件全接触

截图,不就是Print Screen吗?非也非也!这绝不是一招制胜的法宝。如果要想达到更好的效果,可不能指望它。更何况你还要截取不同格式、形状、不同窗口下的图像。想了解五彩缤纷的截图世界吗?跟我来吧!截图?其实很简单——新手上路篇截图?只需要十秒钟,不信吗?好,找到〔Print Screen〕键,别犹豫,按下去!咦,什么也没有发生?别急,打开〔开始〕→〔程序〕→〔附件〕→〔画图〕,点选〔编辑〕→〔粘贴〕,剩下的就只是存盘了。最基本的截图方法——初级使用篇上面所说的截图方法,可以说是“最原始”的了,事实上很少人如此截图的,因为这样做既不方便,效率也不高。通常我们还是借助于专用截图软件。最常见的截图方式是截取全屏画面、单个窗口或局部画面,下面就以HyperSnap-DX为例,分别介绍一下。在截取之前,请先打开HyperSnap-DX的菜单“Options”菜单,执行“Activate Hot Keys”命令,激活默认的截图热键。在接下来的 *** 作中,你会体会到使用热键的好处(如图1)! 截取全屏画面最小化HyperSnap-DX,按下热键〔Ctrl+Shift+F〕,软件旋即d出截图预览窗口,当前桌面已经被截取下来了,存盘即可。截取当前窗口按下热键〔Ctrl+Shift+W〕,这时桌面上显示出一个闪烁的黑色边框,黑框随鼠标的移动而移动,将之移至需要截取的窗口中,点击一下即可。如果按下热键〔Ctrl+Shift+A〕,可以快速地截取当前活动窗口,即处于活动状态的那个窗口。截取局部画面截取局部画面也称之为“区域截图”,意即截取当前屏幕的部分区域,由你自行定义,因此灵活性很大。按下热键〔Ctrl+Shift+R〕,这时屏幕上出现一个十字状的坐标,用鼠标拖出起点与终点,然后点击一下,由起点与终点组成的区域就被截取下来了!截出“眩”的效果——高级应用篇截图也有特效?当然有了!因为有些效果通过正常途径是无法截取的,必须使用特殊方法。而众多的截图软件,几乎每种都有自己的看家本领——独特的功能。

静态图像截取

视频静态画面的截取

大家有没有这样的经历,在播放VCD 或DVD 时,很想把美丽的镜头截取下来欣赏,按下〔Print Screen〕键,得到的是一个黑乎乎的画面;即便用HyperSnap-DX的热键〔Ctrl+Shift+W〕截取,结果如出一辙。

其实HyperSnap-DX是完全可以胜任的,不过必须先做准备工作:

打开菜单〔Capture 〕→〔Enable Special Capture(DirectX ,Glide )

……〕,在设置对话窗口,选中所有选项,将“Gamma Correction Fact ”

设置为“1 ”,按下〔OK〕确定(如图2 )。

按下截取热键〔Scroll Lock 〕(注意这个键,与普通截图的热键完全不同!),可以看到,视频画面似乎“暂停”了一下,然后你心爱的画面就出现了。

这里有一个小技巧,当画面比较暗时,可将“Gamma Correction Fact ”的设置值提高,然后再截取,这样截出来的画面亮一些。

通常的视频播放软件如《超解解霸》、《东方影都》、《金山影霸》、《WinDVD》等等,这类软件自身也提供了截取视频影像的功能(窗口上的相机状的按钮),同样可以获得很好的效果,具体的使用方法我们将在A42 版介绍。

从程序文件中截图

我们所熟悉的可执行文件EXE 与动态链接文件DLL 中,都包含有!位图、图标和鼠标箭头一个也不能少。通过SnagIt可以将这些从中提取出来!呵呵,很神奇吧?

打开软件SnagIt,点击主界面中的“Image Capture ”图标,依次选择菜单〔Input 〕→〔vanced〕→〔Program File〕,再选取菜单〔Output〕→〔File〕。设置完毕,按SnagIt默认的截图热键〔Ctrl+Shift+P〕,出现一截取画面,点击“Browse……”选择程序文件,就以SnagIt的程序文件SnagIt32exe为例(如图3 ),分别点击“Bitmaps ”、“Icons ”和“Cursors ”标签,可以看到程序文件中的位图、图标与鼠标箭头已被截取出来了!选中需要截取的,点击图中的〔Capture 〕就可以了。

轻松截取子菜单或按钮

我们如果想截取某个菜单下的子菜单或是某个按钮,一般情况下是截取当前的窗口,然后再剪切。其实有更好的办法啦。

先看截取子菜单,用的软件是SnagIt 点击主界面中的“Image Capture ”

图标,再依次点击菜单〔Input 〕→〔Menu〕。然后将鼠标移至需要截取的子菜单中,按下热键〔Ctrl+Shift+P〕就可以了。

再看截取按钮,用的软件是HyperSnap-DX 首先将鼠标移至按钮上,这时按钮会凸起,表示已选定该按钮,按下按钮专用截取热键〔Ctrl+Shift+B〕,就是这样轻松。

现在你明白截取菜单、按钮是多么轻松了吧。

同时截取多个画面区域

这种截图方式就是将若干个相邻或不相邻的区域同时截取下来,这在截取多个连续的子菜单或不相邻的工具栏时特别有用。

以HyperSnap-DX为例。打开Word中的某个多级菜单,将鼠标指向其中最低一级的子菜单,按下热键〔Ctrl+Shift+M〕,子菜单四周出现一个闪烁的黑色边框,点击一下鼠标,该子菜单即刻反黑显示,表明已被选定;同理,依次选定其他的子菜单,全部选定后按下回车键,则整个菜单就被截取下来了(如图4 )。

这种截取方式的好处在于我们无需做任何处理,即可将各级菜单一次性截取下来,而且菜单与菜单之间为空白。若采用其他方式截取,菜单与菜单之间的部分必须要另作处理,不如这种方式来得直接与方便。

若使用SnagIt作多个区域的截图测试,会发现它提供的功能更强大,因为它允许你定义截取的范围,而HyperSnap-DX仅限定于截取窗口与工具栏。打开SnagIt,点击主界面中的“Image Capture ”图标,然后选择“Input ”菜单中的“Region”

与“Multiple Area ”。截图时按下热键〔Ctrl+Shift+P〕,此时鼠标变为手状,在屏幕上拖出一块区域,该区域以黑色显示;接着再拖出另一块区域,选中所有你想截取的区域。最后按右键选择“Finish”,得到的截图是所有区域的交集(如图5 )。

截取网页

这是SnagIt的一项独有的功能,它的作用是可以将网页中的一次性截取(其实就是下载)完毕,免得一张张地“另存”,相当麻烦。

打开SnagIt,点击主面板中的“Web Capture ”,开启网页截图功能。这一步一定要做,要不然以下的步骤可能继续不了。打开菜单〔Input 〕→〔FixedAddress 〕→〔Properties〕,在“Web page address”中输入目标地址。

接着打开菜单“Output”,选择“Catalog ”,意即将所截将保存至某目录中,目录路径请在〔Output〕→〔Properties〕→〔Catalog Browser 〕中指定。

再接下来设置网页过滤,打开菜单“Filters ”中的“Properties”选项,d出如图6 所示的对话框。

设置完毕后按〔OK〕键确认,继续按截图热键〔Ctrl+Shift+P〕,SnagIt自动连接至该网页,执行截图任务。并出现一个下载进度界面,当进度条达到100%时,会出现一个报告窗口“Web Capture Summary ”,紧接着便会d出“SnagItCapture Preview ”窗口,所有已抓的链接清单、的格式、详细的网址路径等等信息一目了然,若有不需要的,将前面的勾去掉(如图7 )。

最后点击上图窗口工具栏中的〔Finish〕按钮,截取的所有会按照刚才设定的“Catalog ”路径保存起来。同时SnagIt会自动打开“SnagIt Catalog Browser”

浏览器,很方便吧?

如果你想从互联网上搜集或是下载库,这种截图方式最合适不过了!

截取DOS 窗口

这里指的是截取Windows 环境下DOS 程序的界面,可以利用SnagIt来实现。

点击[Image Capture] 按钮,然后选择[Input] →[Advanced]→[Full-screenDOS],接着在Windows 的DOS 模式下执行一个程序,截取时按快捷键[Print Screen]就行啦(如图8 )。

动态画面截取

截取并输出为GIF 动画

向大家介绍一个小软件GifgIfgiF ,顾名思义,这是与动态图像格式GIF有关的软件。它可以将所选区域的动态画面截取下来并保存为GIF 动画(如图9 )!

这个软件几乎不需要设置就可使用:先点击〔Select Area 〕按钮,用鼠标在桌面上选择截取区域,选定后按下〔Start 〕,软件倒计时三秒后自动截取。

不过,如果指定的区域内没有动作发生,会自动停止截取。结束时按〔Stop〕按钮,这时会显示所截的动画帧数与生成文件的大小。最后选择菜单〔File〕→〔Save〕将之保存为GIF 文件就可以了。

此外,软件提供“Edit”菜单,可截取动画进行编辑。但是未注册的版本不能使用该菜单。

这个软件最大的好处在于可以直接生成GIF 文件,且生成的文件较小,便于在网络上传输或直接引用。

截取并输出为AVI 动画

截取动态画面并非高不可攀,常用的截图软件SnagIt就提供了这样的功能。

不信?那我们就来看看!

看到SnagIt主面板上的“Video Capture ”图标了吗?按下去!接着点击“Input ”菜单,选择“Region”。其实选其他的也行,但选“Region”便于选择截取动态画面的区域。按热键〔Ctrl+Shift+P〕,这时鼠标变成手状,按住不动,拖出一个选取区域,该区域以红色线条显示,松开鼠标,即变为斜线边框。

同时出现如图10所示的“SnagIt Video Capture”窗口,点击〔Start 〕开始截取。

在截图的过程中,斜线边框变为纯黑边框,且不停地闪烁,同时SysTray 中出现一个闪动的摄像机的图标,表明正在录制动态图像。截取完毕仍旧按〔Ctrl+Shift+P〕,仍旧出现“SnagIt Video Capture”窗口,不过这次需要按〔Stop〕停止。

此时黑框消失,重新变为斜线边框。d出一个预览窗口,可以播放所截动画,满意的话按〔Finish〕按钮存盘,保存的格式为AVI (如图10)。

大家知道AVI 是一种视频影像格式,如果你希望在截取的AVI 动态文件中添加声音,可以在截取前点击SnagIt的“Input ”菜单,将“Record Audio”选上即可。

另外还有两款更强大的动态图像截取工具可截取生成AVI 格式的动画,且具备编辑功能,它们是HyperCam和Camtasia,。

截取并输出为SWF 动画

Flash Cam 可以将捕捉到的单独影像帧连起来成为一个SWF 文件,还可以插入标题文字、录制旁白声音、自定义鼠标轨迹,并生成HTML+SWF文件预览在网页中的效果!

软件的安装自不必多说,运行Flash Cam ,出现主界面,软件采用了向导的方式帮助新手。截取前打开菜单〔Options 〕→〔Recording Options 〕,在出现的窗口中,选中全部选项,按〔Save〕确定(如图11)。

双击界面中的“New Movie ”图标,在d出的窗口中选择截取的区域范围,这里我们选“640 ×480 ”,按〔Advanced〕可做更多设定。

按下〔Next〕,背景中出现一个虚框,即刚才指定的区域范围,可移动虚框至合适的位置,或者按虚框右下角调节其大小。

点击虚框中的〔Record〕按钮,软件自动隐藏至系统工具栏中,缩成一个图标,同时截取任务开始执行,只要当前区域有鼠标活动,都能捕捉下来。

用鼠标单击系统工具栏中的Flash Cam 图标,结束截取任务,软件处理后会列出所截取的每一帧,对于不需要的可以删除,双击之可对之进行修改。

这是关键的一步,因为我们可以给帧做注释或添加链接。双击某一帧进入到帧修改模式,打开“Insert”菜单,共有四个选项,可以为当前帧添加文字注释(Caption )、高亮边框(Highlight Box )、点击按钮(Click Box )和图像(Image ),这些对象可移至帧中的任意位置(如图12)。

若想添加语音解说,单击[Frame] →[Audio] 命令,出现音频添加窗口(如图13),打开已存在的音频文件或现场录制语音注解。

修改完所有的帧之后,回到主界面中设置整个影片的属性,点击“Movie ”

菜单下“Preferences ”命令,可以对每一帧的文字注释的显示速度、鼠标动作速度、键盘动作速度、帧与帧之间的过渡速度以及图像的压缩率作个性化设置(如图14)。

设置片头与片尾:选择〔Movie 〕→〔Start and End 〕,在d出的窗口中点击〔Browse〕选择片头装载的文件,选中“Close Browse Window ”意即放映结束后关闭浏览器。

输出影片,选择〔File〕→〔Export〕,可以看出,Flash Cam 提供了多种输出方式,比如EXE 文件,Movie 、Word、Outlook 、FTP 等等。一般选择“Movie”,最终可生成含有SWF文件的HTML网页!想预览一下效果,可以点击主界面工具栏中的〔Preview 〕按钮(如图15)。

如此,一段Flash 截图就可生成了!利用Flash 格式截取动态图像的好处多多,首先是生成的文件小,其次是允许编辑关键帧,并且可以加入互动对象,如点击按钮与链接目标。最后,软件可自动生成播放控制条,大大方便了浏览者!

这么说罢,如果你想制作出相当棒的Flash 格式的教学影片,那么利用这款影像捕捉工具最合适不过了!

下载地址:>

  先很负责任的说一下,这个内容也是百度来的,但是很不负责任的是,当初只记录解决方案,忘了记录是查看的哪篇博客了,这里先对不知道借鉴的谁表示感谢。无法分享链接,就厚着脸皮把(转)字去掉了,请大家谅解。

  先提供一下 Android知识点——目录 的链接,然后让我们进入正题。

  实际上,这篇博客所说的内容并不是所有人都可以用到,毕竟大多数时候,我们只需要展示,而并不需要知道的宽高;有的时候我们只需要知道展示的宽高(即ImageView)的宽高,不需要知道资源的实际尺寸。

  但是需求千千万万嘛,以程序员的脑洞,怎么能想到产品的脑洞究竟有多大呢?我这里就遇到了一个需求,那就是需要在一个可缩放的上标注icon(类似地图上的marker)。这还不算完,毕竟在找到的缩放控件 PhotoView 中,我们点击到上后,是有点击点位在整个上的百分比坐标回调的。而多端通过百分比是很容易就能在中获取到相同的点位,并回显出对应的icon的(没办法,谁让我找的是方便计算百分比的呢),结果Web端优先做了这部分功能,使用的是在原图上的具体坐标。这样我百分比的计划自然就落空了,只能想办法计算出具体的点位。

  因此获取的原始尺寸就是一个必不可少的环节,我刚刚百度了一下,查到 wangke_king 的 Android获取的宽度和高度 中使用的方法是:

  我这里没有亲测过,不过应该是没有问题,但是很遗憾我们的需求是在网络上做测量,所以这个方法也无法使用,不过如果其他有类似本地需求的,不妨尝试一下。而我之前找到的解决方案为:

  首先说明,上述的方法是可以实现的尺寸测量的,只是有一个小小的问题,那就是想要计算出Drawable的宽高,需要必须等到加载完成之后,尝试了使用viewpost(),监听组件加载完成,但是并不是每次都能获取到Drawable的宽高,因此当初的解决方案是写了个两秒钟的定时器,每50毫秒测量一次,直到获取到值为止。这样的解决方案可谓是相当无脑了,而且还要消耗很多不必要的资源。

  还好皇天不负有心人啊,终于找到了通过Glide获取宽高的方式:

  这样我们就可以通过回调,在Glide将网络注入到对应的组件的时候,得到的Bitmap,然后在通过Bitmap来获取的宽高。但是需要注意的一点是,Bitmap的泛型是需要手动去设置的哦。

  另外SimpleTarget现在已经过时,暂时还没有查到。我搜索过SimpleTarget过时使用什么替换,有一些说法是使用BitmapImageViewTarget ,不过下面是实际测试结果。

链接:

百度-景色

测量结果:

信息:

如果不是我使用有误的话,BitmapImageViewTarget 是无法替换SimpleTarget ,实现测量原始宽高的功能的。

查找缓存使用

用完移除

源码中查看EngineKey-----相当于key,算法序列abcdsxxfaskldfjklf

源码中查看Source-----相当于value(Bitmap),调用系统转换成Bitmap

情景: 相册类的App经常需要同时展示大量的,这种情况下的质量可以低一点,因为加载速度优先于的质量。

解决办法: 我们可以设置译码的格式,在RequestOptions中加入encodeFormat(BitmapCompressFormatWEBP)encodeQuality(10))的选项,①encodeFormat的参数有BitmapCompressFormatPNG,BitmapCompressFormatJPEG,BitmapCompressFormatWEBP(质量从高到低);②encodeQuality设置的是0-100的int类型,一个质量百分比参数,越小质量越低。

情景: 大体的意思应该是同一个URL在不同的时间可能会指向不同的资源,所以同样需要实时更新。

解决办法相同

情景: 开发一款有头像的APP,我们修改了头像并且更新到了服务端,可是当我们大图时加载出来的还是原来的头像。

解决办法: 这是Glide强大的缓存带来的副作用,我们可以在RequestOptions中加入diskCacheStrategy(DiskCacheStrategyNONE)skipMemoryCache(true)的选项。那么缓存的功能就会全部关闭,从而使得每次都是从服务端加载,所以头像会是最新。

情景: 省流量模式的应用情景就是减少不必要的加载。

解决办法: 我们可以在RequestOptions中加入onlyRetrieveFromCache(true)的选项。那么就只会从缓存中读取,如果没有缓存则不加载,从而达到减少流量消耗的目的。

原来后端url地址是>

这里分两个部分:

ByteBufferWebpDecoder是最终webp动图资源解码器

先给出Glide加载webp动图的完整调用栈:

整个流程主要分三块:

load :通过RequestManager加载一个String 类型的model。

into:加载一个ImageView的目标控件作为target,然后通过RequestBuilder开始数据处理流程。

EngineJob以前的流程非常简单明确,这里着重看下DecodeJob部分的处理流程:

这里有个ModelLoader-LoadData-DataFetcher关系需要捋一下:

DecodeHelperjava

这里modelLoaders是在Registry中由ModelLoaderRegistry来获取所有的models。这里model对应ByteBufferFileLoader,由他执行buildLoadData。

ByteBufferFileLoaderjava

而LoadData是ModelLoader的内部类,它的属性包括一个DataFetcher,它就是最终加载数据的地方。

那么总结一下:首先是获取对应数据源类型的ModelLoader,ModelLoader初始化一个LoadData,然后LoadData通过内部关联的DataFetcher来正真去执行加载数据的 *** 作!

这里很显然对应的DataFetcher实例是LoadData初始化时传入的ByteBufferFetcher。回到SourceGenerator的startNext方法,最终调用ByteBufferFetcher的loadData。

当然这里数据获取的方式有很多种,有网络请求、有磁盘文件获取等等:

这里DataFetcher也可以自定义,举例:

Glide网络请求默认使用的是>

以上就是关于怎样更改Glide的缓存路径全部的内容,包括:怎样更改Glide的缓存路径、Fragment中使用开源banner用Glide加载网络图片显示不出来、定时自动截图并自动保存到指定路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9710395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存