首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法对同一个ImageView使用多个源?

是的,可以对同一个ImageView使用多个源。在Android开发中,可以通过以下几种方式实现:

  1. 使用LayerDrawable:LayerDrawable是一个可以将多个Drawable叠加在一起显示的容器。你可以创建一个LayerDrawable对象,将多个Drawable添加到其中,并将该LayerDrawable对象设置为ImageView的源。每个Drawable可以通过指定不同的图像资源或颜色来显示不同的内容。
  2. 使用TransitionDrawable:TransitionDrawable是一个可以实现平滑过渡效果的Drawable。你可以创建一个TransitionDrawable对象,将多个Drawable添加到其中,并将该TransitionDrawable对象设置为ImageView的源。通过调用TransitionDrawable的startTransition()方法,你可以实现从一个Drawable过渡到另一个Drawable的效果。
  3. 使用Glide或Picasso等图片加载库:这些图片加载库提供了丰富的功能,包括加载网络图片、本地图片、缓存管理等。你可以使用它们加载多个图片资源,并将其设置为ImageView的源。这些库还提供了灵活的选项,如图片裁剪、缩放、圆角处理等。

需要注意的是,以上方法都是通过在代码中动态设置ImageView的源来实现的。如果你需要在布局文件中静态地指定多个源,可以考虑使用FrameLayout或ConstraintLayout等布局容器,将多个ImageView叠加在一起,并分别设置不同的图片资源。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift-图像的性能优化

->红的高亮(也就是多个半透明层的叠加,其中绿色代表比较好,红色则代表比较糟糕) 由于重绘的原因,混合GPU(Graphics Processing Unit->专门用来画图的)性能会有影响,同时也是滑动或者动画帧率下降的罪魁祸首之一...---- 为什么我们说这种方法设置图像效果不好 Color Misaligned Images(拉伸图像->检测图片有没有被拉伸) 创建一个自定义尺寸的ImageView,并设置图像 let image...如果有更好的改进办法欢迎给我提出。..., size: rect02.size, backColor: view.backgroundColor) view.addSubview(imageView02) } 由此可见,新方法CPU...解决办法是在开启图形上下文后,其做背景填充。 // 背景填充(在裁切之前做填充) backColor.setFill() UIRectFill(rect) 但黑线的原因暂时尚未查明。

1.7K70
  • ExpandableListView简单应用及listview模拟ExpandableListView

    final View v,   int groupPosition, final long id) {   return false;       }   上面实现起来比较简单.相信listview...布局文件:(后面多个隐藏text.) <?xml version="1.0" encoding="utf-8"?...效果: 上面模拟显示的孩子是一个textview(缺点:隐藏textview显示时候点击会影响到其父控件,大家尝试一下,不过肯定有解决办法的.), 下面我来介绍下,如果孩子是listview应该怎么办...第一:listview和listview嵌套,子listview只显示一个多一点点,不能正常显示,解决办法listview重新设置起高度....(相信同学们这个方法一点也不陌生.) /***      * 动态设置listview的高度      *       * @param listView      */ public

    1.2K70

    Android ViewPager导航小圆点实现无限循环效果

    之前用View Pager做了一个图片切换的推荐栏(就类似与淘宝、头条客户端顶端的推荐信息栏),利用View Pager很快就能实现,但是一次无意间使用淘宝APP的时候,突然发现它的效果和我做的还不一样...其实实现这个无限循环不难,只需要在数据的首尾各添加一张多余的图片,在onPagerChangeListener()中监听position<1和position (总数据条目-1)就可以了。...另外一点需要注意的是,这里的数据+2,而导航小圆点却比数据少2,这样在无限循环的时候,小圆点的切换就不好办了。...本人最开始也是写逻辑在onPageSelected()里面判断条件,总感觉挺麻烦的,有没有更好的实现方式呢。答案是肯定的。只需将小圆点也首尾各家一个,并设置为invisible不就好了?...以上就是本文的全部内容,希望大家的学习有所帮助。

    1.2K51

    安卓易学,爬坑不易——腾讯老司机的RecyclerView局部刷新爬坑之路

    1、对于第一种,我的做法是自己写了一个自定义的imageView,重写omMeasure方法,如下: ?...3、对于三种说法,我也去尝试了一下将glide加载改为: ? 然而得到的依然是一个失望的结果,依然没有解决闪动的问题,原因也不在此处。 4、那么,就剩下最后一个猜测了,那么会不会是它呢?...还是调试一下吧,新重载onBindViewHolder方法有没有被执行,一更代码,发现果然没有被执行! 那么,究竟是什么鬼?...需要重写这个动画,让永远返回true,已达到newHolder和olderHolder是同一个,然而,这真的就是我的救命稻草吗? 那么,是骡子是马,拉出来溜溜吧,然而,并不是马!!进源码看一看 ?...关于腾讯WeTest 腾讯WeTest是腾讯游戏官方推出的一站式游戏测试平台,用十年腾讯游戏测试经验帮助广大开发者游戏开发全生命周期进行质量保障。

    77620

    Android Studio preview 不固定及常见问题的解决办法

    办法如下: 点击preview,显示视图窗口; 点击菜单栏的window; 选中Active Tool Window; 选中Docked Mode; ?...这个问题的一个较为简单解决方案是在真机上测试,那时你有这些数据,但是这样Preview的意义就失去了。 ? 在这种情况下的问题是TextView和ImageView没有任何内容可供显示。...问题2:测试最大宽高 或者当您的布局旨在显示来自外部的一些内容时,它有时被要求具有一些最大宽度或/和高度(也就是使用了maxHeight属性),来确保您的布局看起来美观,即使外部发送大于预期或某些宽高比未被同意的图像...如下图所示,TextView覆盖在ImageView的上面: ? 您可以使用工具:tools:showIn=”layout”来显示使用它的一些其他现有布局内的布局的内容。...请注意,如果您在多个地方使用不同的父布局,则只能选择一个布局进行预览。

    3.7K30

    「Learn」开发记录

    开发App过程中遇到的一些问题和解决办法。临时记录一些解决方案。 音频 Android MediaPlayer基础。 在线音频播放,使用MediaPlayer。...Assets遍历文件 assets里存放着四千多个文件,红米6A遍历一次要2秒多。...由后台控制用户使用哪一个语音引擎。 下载文件 项目采用的是mvvm架构。有2个页面要用到同一个数据。把这个数据单独抽出来,设计监听器。 原框架的下载文件功能有一个bug。...现在渠道种类多了(比如二十多个),再一个个点击就很累。想要一键打包或者一行命令打包,有什么成熟好用的多渠道打包方式呢?...同一个服务器返回里装有相同结构的A,B,C对象。它们的名字不一样,GsonFormat的时候是分开成3个类的。 为了让代码更简洁,把这3个对象进行抽象。 一开始是做了一个抽象类,让这3个类继承。

    1.2K20

    深入理解CAS算法原理

    2、CAS算法理解 CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。...3.1、ABA问题 因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没有发生变化,但是实际上却变化了...解决方案CAS类似于乐观锁,即每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。...当多个线程竞争时,将粒度变小,将一个变量拆分为多个变量,达到多个线程访问多个资源的效果,最后再调用sum把它合起来。 如果JVM能支持处理器提供的pause指令,那么效率会有一定的提升。...3.3、只能保证一个共享变量的原子操作 当一个共享变量执行操作时,我们可以使用循环CAS的方式来保证原子操作,但是多个共享变量操作时,循环CAS就无法保证操作的原子性,这个时候就可以用锁,或者有一个取巧的办法

    55110

    Glide缓存探密Glide的缓存策略

    但Glide在缓存策略上,花费了很多心思,从而使得其在加载图片过程中,对内存的使用量非常小。 本文将分享Glide在缓存策略上使用的技巧。...但是,Bitmap还是存在于Java堆中,此时我们将失去这个Bitmap的任何控制。(此时,我们无法判断Bitmap是否还在显示)。...从MemoryCache到ActiveCache 当Glide需要加载一张图片时,它优先会在ActiveCache中寻找有没有相同的图片。...这一过程,通常有两种情景: ImageView需要显示其他图片 ImageView自身被销毁 ImageView需要显示其他图片 在ImageView需要显示其他图片时,Glide会去检查Bitmap的引用计数...Fragment不能直接从外部监听生命周期的变化,所以我们采用一种间接的办法。 我们新建一个没有界面的Fragment,称之ListenerFragment。

    1.3K21

    android图片加载库Glide

    Glide是一个非常成熟的图片加载库,他可以从多个加载图片,如:网路,本地,Uri等,更重要的是他内部封装了非常好的缓存机制并且在处理图片的时候能保持一个低的内存消耗。 Glide怎么使用?...如果你图片没有过高的要求,那么用默认的格式就可以,但是如果你图片质量要求较高,那么可以把图片的格式转换为ARGB8888,方法就是通过继承GlideMoudle,如下所示: public class...当我们调整imageview的大小时,Picasso会不管imageview大小是什么,总是直接缓存整张图片,而Glide就不一样了,它会为每个不同尺寸的Imageview缓存一张图片,也就是说不管你的这张图片有没有加载过...值得注意的是,在Android DEX file中的方法是有限制的,最大方法数为65535个,从这一点来说,Glide的方法确实不少,并且,混淆器也建议我们的项目进行混淆。...另外的一点小建议是,使用Glide的时候把图片的格式改为ARGB8888并且缓存全尺寸和其他尺寸的图片,这样使用可以让加载图片更好。

    1.9K60

    Swift多线程之Operation:异步加载CollectionView图片1. Operation 设置依赖关系2. 前置知识点内容3. CollectionView中图片进行异步加载

    优先级没有办法干这个事情。要是觉得设置优先级可以实现的,请回去看看俺上一篇文章。Swift多线程之Operation:按优先级加载图片 我们可以通过设置依赖关系,建立起先后的顺序。...所以没有办法直接使用这个属性。 2.1.3 取消操作的说明 operation不是说把属性isCancelled设置一下就好了。...image.png 有没有很神奇?一个数组,简简单单就变成了两个数组。 Swift是支持一门函数式编程的语言,Map是针对集合类型的操作。...简单的而说,就是使用圆括号把多个值组合成一个复合值。元组内的值可以使用任意类型,元组并不要求元组内的值具有相同的类型。...元组可以与Switch大牌进行复杂条件的判断;可以作为方法的返回值,来返回多个数值;可以假装成结构体使用; 3. CollectionView中图片进行异步加载 来看一下思维导图: ?

    1.4K70

    Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等

    一:你可学到 手机内依据Uri查看联系人 权限的添加 获取手机内任意一款应用的应用图标 图形的处理,如复制,为图片加上覆盖层–数字。...然后我们把得到的这个处理过的Bitmap放在我们在main.xml里定义的ImageView里展示就可以看到效果了....> 很简单,一个ImageView和一个TextView,用于显示提示的图标和文字。...四:小结和一点引申 这结的主要关键还是图片的处理,比如这里的加上数字,当时你也可以加上其他的东西,Canvas里有很多相应的函数可以使用。。...这里说的都是应用内、状态通知等一些显示处理后图片的办法,那么有没有方法处理手机主屏幕上的图标的办法,为他们加上数字呢。

    1.6K40

    Android 打造一个丝滑的自动轮播控件

    本文主要是总结自动轮播控件的实现过程,以及这类控件的一些优化的技巧。...一、如何实现 在开始进行我们的代码编程之前,我们先要思考一下,在 Google 提供的官方 Api 里面,有没有类似的控件实现了相似的功能,毕竟官方的控件大都经过了时间的考验,无论是稳定性还是性能方面都是非常不错的...但我们可以换一个思路,如果我们在 ViewPager 的 Adapter 里面,通过 getCount() 方法将 ViewPager 的大小设置为无限大,然后通过取余的方式来保证滑动的页面一直对应数据的那几个数据...2.1 通过缓存减少内存浪费 为了让 ViewPager 能实现无线轮播的功能,我们是使用了通过将 getCount() 的大小设置为无限大的方式来实现的,但这会产生一个问题,这样会使我们在 Adapter...ViewPager 进行切换速度的设置,所以我们需要通过反射的方式,使用 Scroller 来进行切换速度的设置,从而让我们的 Banner 更加的丝滑。

    50920

    android加载大图,防止oom

    这个技巧让我们可以在加载图片之前就获取到图片的长宽值和MIME类型,从而根据情况图片进行压缩。...int calculateInSampleSize(BitmapFactory.Options options,   int reqWidth, int reqHeight) {   // 图片的高度和宽度...这时重新去加载一遍刚刚加载过的图片无疑是性能的瓶颈,你需要想办法去避免这个情况的发生。 这个时候,使用内存缓存技术可以很好的解决这个问题,它可以让组件快速地重新加载和处理图片。...下面我们就来看一看如何使用内存缓存技术来图片进行缓存,从而让你的应用程序在加载很多图片的时候可以提高响应速度和流畅性。 内存缓存技术那些大量占用应用程序宝贵内存的图片提供了快速访问的方法。...如果有的话,你也许应该让一些图片常驻在内存当中,或者使用多个LruCache 对象来区分不同组的图片。 你能维持好数量和质量之间的平衡吗?

    1.3K90

    Android高效加载大图、多图解决方案,有效避免程序OOM

    static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { // 图片的高度和宽度...这时重新去加载一遍刚刚加载过的图片无疑是性能的瓶颈,你需要想办法去避免这个情况的发生。 这个时候,使用内存缓存技术可以很好的解决这个问题,它可以让组件快速地重新加载和处理图片。...下面我们就来看一看如何使用内存缓存技术来图片进行缓存,从而让你的应用程序在加载很多图片的时候可以提高响应速度和流畅性。 内存缓存技术那些大量占用应用程序宝贵内存的图片提供了快速访问的方法。...如果有的话,你也许应该让一些图片常驻在内存当中,或者使用多个LruCache 对象来区分不同组的图片。 你能维持好数量和质量之间的平衡吗?...还要把新加载的图片的键值放到缓存中。

    2.3K70

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    当一个应用启动其他应用中的活动时,比如:用户拍照以后把相片共享给QQ中的朋友,这时将打开QQ应用界面,这两个应用(拍照和QQ)的界面(活动)用户来说好像属于同一个应用程序;而在系统内部,任务与任务之间是相互独立的...通常将事件和事件监听器分离开。事件上发生的特定事件的具体信息,存放在Event对象中,并通过它传递给事件监听器。...但是,如果活动不在栈顶,又重复启动活动,返回栈仍然会存在重复的实例,那么有没有办法让系统中只有一个活动实例?Android通过singleTask启动模式来解决这个问题。...采用回调方式就是把事件监听器放置在事件上,比如在上面的例子中,按钮类就实现了触摸事件的处理。用户触发事件所产生的信息由事件(event对象)表示,它包含事件编码和事件本身携带的信息。...在按钮事件中,通过ofFloat函数获取ObjectAnimator对象,imageview对象执行旋转操作。

    15410

    Android图片加载框架最全解析(五),Glide强大的图片变换功能

    图片是正常加载出来了,不过大家有没有发现一个问题。...稍微Android有点了解的人应该都知道ImageView有scaleType这个属性,但是可能大多数人却不知道,如果在没有指定scaleType属性的情况下,ImageView默认的scaleType...最直白的一种办法就是看着源码来改。当ImageView的scaleType是CENTER_CROP、FIT_CENTER、FIT_START或FIT_END时不是会自动添加一个图片变换操作吗?...不过不得不说,Glide内置的图片变换接口功能十分单一且有限,完全没有办法满足我们平时的开发需求。因此,掌握自定义图片变换功能就显得尤为重要了。...而且我们还可以将多个图片变换效果组合在一起使用,比如同时执行模糊化和黑白化的变换: Glide.with(this) .load(url) .bitmapTransform(new

    1.8K101
    领券