知乎图片选择框架Matisse的完整使用(1)

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

choose是选择的内容,countable()是否显示选中数量,maxSelectable()最大选择数,addFilter()添加一个过滤器,是在我们选择的类型上进一步过滤。gridExpectedSize()缩略图展示的大小,thumbnailScale(0.87f)缩略图的清晰程度(与内存占用有关)。imageEngine()是我们自定义加载图片框架。

Filter接口有两个方法,第一个方法返回需要过滤的数据类型,第二个方法决定是否过滤,过滤的话就return new IncapableCause(“宽度超过500px”); 填入过滤的原因即可。 在上述中我们过滤了宽度大于500的图片。

接收:

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { if (resultCode == RESULT_OK) { String path = Matisse.obtainPathResult(data).get(0); if (uri != null) { Glide.with(this) .asBitmap() // some .jpeg files are actually gif .load(uri) .apply(new RequestOptions() {{ override(Target.SIZE_ORIGINAL); }}) .into(imageView); } else Toast.makeText(this, "uri为null", Toast.LENGTH_SHORT).show(); }

}

}

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

通过onActivityResult接收数据,当然解析全都交给了Matisse,通过 Matisse.obtainPathResult(data)即可得到选择的图片path,最后通过Glide加载即可。

这里写图片描述

官方提供了两种主题:

R.style.Matisse_Zhihu (light mode)

R.style.Matisse_Dracula (dark mode)

在上述加上 **.theme(R.style.Matisse_Dracula)**即可切换默认主题。

imageEngine()中我们自定义了一个GlideLoadEngine类,看它的实现:

public class GlideLoadEngine implements ImageEngine{

/**

  • Load thumbnail of a static image resource.

  • @param context Context

  • @param resize Desired size of the origin image

  • @param placeholder Placeholder drawable when image is not loaded yet

  • @param imageView ImageView widget

  • @param uri Uri of the loaded image

*/

@Override

public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {

Glide.with(context)

.asBitmap() // some .jpeg files are actually gif

.load(uri)

.apply(new RequestOptions()

.override(resize, resize)

.placeholder(placeholder)

.centerCrop())

.into(imageView);

}

@Override

public void loadGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView,

Uri uri) {

Glide.with(context)

.asBitmap() // some .jpeg files are actually gif

.load(uri)

.apply(new RequestOptions()

.override(resize, resize)

.placeholder(placeholder)

.centerCrop())

.into(imageView);

}

@Override

public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {

Glide.with(context)

.load(uri)

.apply(new RequestOptions()

.override(resizeX, resizeY)

.priority(Priority.HIGH)

.fitCenter())

.into(imageView);

}

@Override

public void loadGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {

Glide.with(context)

.asGif()

.load(uri)

.apply(new RequestOptions()

.override(resizeX, resizeY)

.priority(Priority.HIGH)

.fitCenter())

.into(imageView);

}

@Override

public boolean supportAnimatedGif() {

return true;

}

}

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 17

  • 18

  • 19

  • 20

  • 21

  • 22

  • 23

  • 24

  • 25

  • 26

  • 27

  • 28

  • 29

  • 30

  • 31

  • 32

  • 33

  • 34

  • 35

  • 36

  • 37

  • 38

  • 39

  • 40

  • 41

  • 42

  • 43

  • 44

  • 45

  • 46

  • 47

  • 48

  • 49

  • 50

  • 51

  • 52

  • 53

  • 54

  • 55

  • 56

  • 57

  • 58

  • 59

  • 60

  • 61

  • 62

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
gdVhtVg-1715345977840)]

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值