找出哪个是当前背景Drawable

时间:2011-10-04 11:43:54

标签: android

在我的代码中,View获得了新背景:

myView.setBackgroundResource(R.drawable.foo);

好吧,它一定不是“foo”,有十几种不同的Drawable可能。这引起了我的问题:后来我需要知道,实际显示了哪些Drawables。但是我无法找到resId的背景名称,也没有找到比较这些drawable的方法:

Drawable myDraw = myView.getBackground();
Drawable compareDraw = getResources().getDrawable(R.drawable.foo);

他们并不平等。嗯。如何找到当前的背景图像?

提前致谢

TIA 乔

2 个答案:

答案 0 :(得分:2)

如果您设置背景,为什么不保留代表当前后台资源标识符的class member int myBackground。每次你做

  myView.setBackgroundResource(R.id.myBack);

你也设置了:

  myBackground=R.id.myBack;

以这种方式,您始终知道您的后台资源的ID。

答案 1 :(得分:0)

Drawable是一个抽象类,它可以采用多种形式。来自文档:

虽然应用程序通常看不到,但Drawables可能有多种形式:

  
      
  1. 位图:最简单的Drawable,PNG或JPEG图像。
  2.   
  3. Nine Patch:an   PNG格式的扩展允许它指定有关的信息   如何拉伸它并将东西放在里面。
  4.   
  5. 形状:包含   简单的绘图命令而不是原始位图,允许它   在某些情况下,可以更好地调整大小。
  6.   
  7. 图层:复合绘图,其中   将多个底层drawable绘制在彼此之上。
  8.   
  9. 国家:a   复合drawable,基于选择一组drawable中的一个   它的国家。
  10.   
  11. 级别:复合drawable,选择一组中的一个   基于其水平的drawables。
  12.   
  13. 比例:一种可用于复合物的复合物   单个子drawable,其总体大小根据   目前的水平。
  14.   

在内部我猜位图可能是相同的,但Drawable是另一种类型。