Android图像透明度 - 替代已弃用的setAlpha for API< 11

时间:2014-01-11 15:13:06

标签: android transparency

我想在背景图片上设置透明度。我在xml中尝试了android:alpha,但它什么也没做。我使用setAlpha(int alpha),并且运行良好,但它已弃用,所以我想要另一个解决方案(因为它可能会在将来被删除)。有setImageAlpha和setAlpha(float alpha),但这些在api lvl 10中不可用(这是我的目标)。所以我的问题是: 对于API为10或更低的设备,setAlpha(int alpha)的替代是什么(我只想提一下,超过1/4的所有设备都使用API​​ 10或更低版本)。当我检查stackoverflow时,大多数人仍然建议setAlpha(int alpha),但正如我所说 - 它已被弃用...

5 个答案:

答案 0 :(得分:6)

ImageView setAlpha在API级别16之前未被弃用。处理这种情况的正确方法是继续使用它,直到您可以定位最低SDK级别16,然后只需切换到{{1} } setAlpha。

弃用只是意味着如果您有替代方案,不要在新开发中使用。由于谷歌没有提供替代方案(即通过兼容性库),他们肯定不会删除它并打破手机上已有的无数应用程序。

考虑到自己很幸运,你正在处理ImageView,因为它有一个你可以使用的setAlpha!

答案 1 :(得分:1)

ImageView iv_object;

void updateAlpha(View v)
{

  v.setAlpha(1);
}

我修改了updateAlpha(iv_object)的弃用问题,因为View不会弃用setAlpha()。如果我错了任何一点,请纠正我。优点是将任何View类对象传递给该方法。

答案 2 :(得分:1)

您应该在API中使用ImageView.setAlpha(int)< API 16+中的16和ImageView.setImageAlpha(int)。它们是相同的方法。

ImageView.setAlpha(int)已重命名为ImageView.setImageAlpha(int),以避免与View.setAlpha(float)混淆,后者不会做同样的事情。前者在绘制时更改源图像的alpha(这是一个相对便宜的操作),而后者更改整个视图的alpha,这需要分配一个临时缓冲区来绘制视图并将alpha应用于该缓冲区。

答案 3 :(得分:0)

这对我来说很好用:

  

public void setAlpha(float alpha)在API级别11中添加

     

设置视图的不透明度。这是一个从0到1的值,其中0   表示视图完全透明,1表示视图   完全不透明。

答案 4 :(得分:-1)

使用:     yourImage.setVisibility(View.INVISIBLE);

0 ==隐身。