Android并为(图像)视图Alpha设置Alpha


Answers:


195

没有,没有,看怎么样“相关的XML属性”部分丢失了在ImageView.setAlpha(INT)文档。替代方法是使用View.setAlpha(float),XML对应项android:alpha。它的取值范围是0.0到1.0,而不是0到255。

<ImageView android:alpha="0.4">

但是,后者仅在API级别11起可用。


7
即使我只是在这里重复一遍:ImageView.setAlpha(int)花了int一段android:alpha时间才花时间,所以严格来说,后者并不是前者的确切XML对应物,而是与的对应物View.setAlpha(float)。并且正如这里已经多次提到的,android:alpha/ View.setAlpha(float)仅从API级别11开始可用。
sschuberth

区别在于,浮点数1的可接受范围为整数1,浮点数1的可接受范围为0-255。
ataulm

232

它比其他响应要容易。有一个alpha采用双精度值的xml 值。

android:alpha="0.0" 多数民众赞成在看不见

android:alpha="0.5" 透视

android:alpha="1.0" 完全可见

就是这样。


15
setAlpha(float)android:alpha只有自API 11(Android 3.0的)。以前的API 11必须使用代码来设置图像的Alpha。正如sschuberth在前面的分析中所述。
Salw

@Antonio为什么?该答案不会在我的顶部添加任何信息,相反,它的完整性较差。
sschuberth '16

@sschuberth您的答案是完全正确的,但是缺少示例可能会使此答案比您的注意更多。尽管您的答案提供了更多信息,但是此答案提供了更接近我真正需要的解决方案。请添加一些示例以使用您所解释的内容,这绝对有帮助!
Antonio

@Antonio完成。我现在就回答了超级
-duper

53

我不确定XML,但是可以通过以下方式通过代码来实现。

ImageView myImageView = new ImageView(this);
myImageView.setAlpha(xxx);

在API 11之前的版本中:

  • 范围从0到255(含),0是透明的,而255是不透明的。

在API 11+中:

  • 范围是从0f到1f(含),0f是透明的,而1f是不透明的。

2
是的,我知道。(我希望这在问题中是隐含的。)XML的要点是剥离一些代码。对于我来说,alpha在各种大小和位置都没有XML属性的情况下,为什么没有XML对应物是没有意义的。
SK9

我想知道:为什么不推荐使用它?是因为现在它们有一个float参数吗?
Android开发人员

是的,你可以使用imageView.setAlpha(1.0F),但需要API级别11
贝Ceralva

12

也许是纯色背景的有用替代方法:

LinearLayout放在ImageView上,然后将LinearLayout用作不透明度滤镜。在下面的一个带有黑色背景的小示例中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_stop_big" />

    <LinearLayout
        android:id="@+id/opacityFilter"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#CC000000"
        android:orientation="vertical" >
    </LinearLayout>
</RelativeLayout>

#00000000(完全透明)和#FF000000(完全不透明)之间改变LinearLayoutandroid:background属性。


1
解决图像的Alpha问题并不是最好的方法,尤其是在电话设备上。
Prakash Nadar

当您只想使背景透明而不是其子背景时,此方法非常有用。在父容器上使用Alpha,也使其所有子容器也透明
Noni

8

现在有一个XML替代方法:

        <ImageView
        android:id="@+id/example"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/example"
        android:alpha="0.7" />

它是:android:alpha =“ 0.7”

值从0(透明)到1(不透明)。



4

setAlpha(int)从API开始不推荐使用16Android 4.1

setImageAlpha(int)改用


3

使用此形式可转换为android的古代版本。

ImageView myImageView;
myImageView = (ImageView) findViewById(R.id.img);

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha);

0

可以使用以下十六进制格式#ARGB或#AARRGGBB设置Alpha和颜色。参见http://developer.android.com/guide/topics/resources/color-list-resource.html


我想使用XML属性设置图像的Alpha值。这有帮助吗?
SK9

我正在使用它在具有背景图像的布局上覆盖布局,您肯定会在图像本身中设置图像的Alpha吗?
格兰特(Grant)

您在图像本身中是什么意思?在XML内?可能是一个疏忽,但是没有alpha XML属性。
SK9

我的意思是,当您创建图像时,您将添加一个透明层并将图像的不透明度设置为50或您需要的任何值。
格兰特(Grant)

我对android:tint没有任何作用感到非常惊讶。它允许使用alpha值...但是对白色图像没有影响:-(((((
Someone Somewhere
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.