Android 设置图片透明度
我了解的比较快捷的ImageView设置图片的透明度的方法有:
setAlpha();
setImageAlpha();
getDrawable().setAlpha()。
其中setAlpha()已经不提倡使用了。通过看源码,我们发现setImageAlpha()的方法,实际就是setAlpha(),两者完全一样。
关于第三中方式,是先获取drawable对象,在设置该对象的透明度。需要说明的是,如果还有其他ImageView对象使用了相同的图片资源,那么第三中方式会影响所有使用该资源的ImageView的显示的图片的透明度。要想消除这种影响,可以使用如下方式:
ImageView iv1 = (ImageView)findViewById(R.id.iv1);
ImageView iv2 = (ImageView)findViewById(R.id.iv2);
Drawable drawable = getResources().getDrawable(R.drawable.ic_launcher);
Drawable drawable2 = getResources().getDrawable(R.drawable.ic_launcher); drawable.mutate().setAlpha();
iv1.setImageDrawable(drawable); drawable2.mutate().setAlpha();
iv2.setImageDrawable(drawable2);
实际上,setAlpha()方式设置透明度,之所以不会影响其他ImageView的显示,是因为内部也调用了mutate()方法。
以下是引用的一段话:
Resources缓存的并不是个Drawable,而是Drawable中的State(比如BitmapDrawable的BitmapState)。是这个State起了一个share的作用,导致不同的Drawable产生了关联。而mutate就是重新创建一个State以避免共享。所以当要修改alpha时,只要mutate()后再修改即可。
Android 设置图片透明度的更多相关文章
- android设置view透明度的效果
android设置view透明度的效果 推荐textView.setBackgroundColor(Color.TRANSPARENT); 第一种方法:在xml文件中设置背景颜色. andro ...
- Android设置图片内存溢出(OOM)问题——Android开发进阶之路6
ImageView设置图片必备常识技术: Android设备会给每个应用分配16M的内存空间,如果你设置的图片的比较大且同一个页面有多个时,经常会报OOM错误导致程序奔溃.所以在这种情况下我们必须要对 ...
- Android 设置图片 Bitmap任意透明度
两种思路,第一种思路是通过对Bitmap进行操作,将Bitmap的像素值get到一个int[]数组里,因为在android里Bitmap通常是ARGB8888格式,所以最高位就是A通道的值,对齐进行改 ...
- Android 设置背景透明度
一些时候,我们须要为UI页面设置背景色,例如以下图所看到的: 上图已注: 背景颜色为#000000,透明度为40%: 那么.怎样在代码中表示呢? 首先须要了解: 颜色和不透明度 (alpha) 值以十 ...
- android设置图片变化的四种效果代码
activity代码如下: package com.example.chapter12_graphic_animation; import android.os.Bundle; import andr ...
- C#设置图片透明度
逐个像素进行Alpha值的设置,网上其他的代码不能处理有透明背景的图片,因此要对Alpha.R.G.B均为0的透明色进行特殊处理,不做转换. private Bitmap SetImageOpacit ...
- android设置图片自适应控件大小
在XML文件的ImageView属性中加上:android:scaleType="fitXY"
- android设置组件透明度
textremind.setBackgroundColor(Color.argb(178, 0, 0, 0)); //背景透明度 textremind.setTextColor(Color.argb ...
- Android 设置图片倒影效果
首先,贴出效果图: 1.布局文件main.xml <?xml version="1.0" encoding="utf-8"?> <Linear ...
随机推荐
- 2018-8-10 模拟赛T3(可持久化线段树)
出题人说:正解离线按DFS序排序线段维护区间和 但是对于树上每个点都有一个区间和一个值,两个点之间求1~m的区间和,这不就是用可持久化线段树吗. 只不过这个线段树需要区间修改,不过不需要标记下传,询问 ...
- spring-data-redis 使用
以前使用过Jedis,后面因项目需要使用spring-data-redis,设置一个键值及其过期时间后怎么都不对. 源代码: redisTemplate.opsForValue().set(key, ...
- 【CS Round #43 D】Bad Triplet
[链接]点击打开链接 [题意] 给你n个点m条边的无权无向联通图; 让你找3个点A,B,C 使得A->B=B->C=A->C 这里X->Y表示点X到点Y的最短路长度. [题解] ...
- [Angular] Use Angular’s @HostBinding and :host(...) to add styling to the component itself
One thing that we can do is to add styles directly to HTML elements that live within our component. ...
- Javascript和jquery事件--鼠标事件的小结
1.鼠标事件的主要事件应该是mouseup, mousedown, mousewheel, mousemove, mouseover, moveout. <1>其中mouseup和mous ...
- report_timing_requirement
report_timing_requirement -ignored 会报告set_faults_paths,set_multi_path等
- 驱动学习3-make
在向内核中添加驱动的时候要完成3项工作 (1)在Kconfig中添加新代码对应项目的编译条件(下面Makefile文件中需要用到它定义的的宏变量) (2)将驱动源码添加到对应的目录中 (3)在目录Ma ...
- uva_658_It's not a Bug, it's a Feature!(最短路)
It's not a Bug, it's a Feature! Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & ...
- 设计模式--单例模式之Lock
1.为什么用Lock及关键知识 当我们使用线程的时候,效率最高的方式当然是异步,即个个线程同时运行,其间互不依赖和等待.当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进 ...
- 6.1、Android硬件访问服务之框架
1.通过前面led点亮的例子,其流程如下 Android app(java)(通过loadLibrary)——>C library(C库做如下事情)——>1.JNI_Onload 2.jn ...