在我的代码中,View获得了新背景:
myView.setBackgroundResource(R.drawable.foo);
好吧,它一定不是“foo”,有十几种不同的Drawable可能。这引起了我的问题:后来我需要知道,实际显示了哪些Drawables。但是我无法找到resId的背景名称,也没有找到比较这些drawable的方法:
Drawable myDraw = myView.getBackground();
Drawable compareDraw = getResources().getDrawable(R.drawable.foo);
他们并不平等。嗯。如何找到当前的背景图像?
提前致谢
TIA 乔
答案 0 :(得分:2)
如果您设置背景,为什么不保留代表当前后台资源标识符的class member
int myBackground
。每次你做
myView.setBackgroundResource(R.id.myBack);
你也设置了:
myBackground=R.id.myBack;
以这种方式,您始终知道您的后台资源的ID。
答案 1 :(得分:0)
Drawable是一个抽象类,它可以采用多种形式。来自文档:
虽然应用程序通常看不到,但Drawables可能有多种形式:
- 位图:最简单的Drawable,PNG或JPEG图像。
- Nine Patch:an PNG格式的扩展允许它指定有关的信息 如何拉伸它并将东西放在里面。
- 形状:包含 简单的绘图命令而不是原始位图,允许它 在某些情况下,可以更好地调整大小。
- 图层:复合绘图,其中 将多个底层drawable绘制在彼此之上。
- 国家:a 复合drawable,基于选择一组drawable中的一个 它的国家。
- 级别:复合drawable,选择一组中的一个 基于其水平的drawables。
- 比例:一种可用于复合物的复合物 单个子drawable,其总体大小根据 目前的水平。
醇>
在内部我猜位图可能是相同的,但Drawable是另一种类型。