【问题标题】:Android and setting alpha for (image) view alphaAndroid 并为(图像)视图 alpha 设置 alpha
【发布时间】:2011-06-23 07:07:50
【问题描述】:

真的没有与setAlpha(int) 对应的 XML 属性吗?

如果没有,有什么替代方案?

【问题讨论】:

    标签: android xml android-layout android-imageview alpha


    【解决方案1】:

    要降低 XML Android 中任何内容的不透明度,请使用 Alpha 属性。 示例:

    android:alpha="0.6"
    

    您必须输入介于 0.0 到 1.0 之间的值,以磅为单位。

    【讨论】:

      【解决方案2】:

      setAlpha(int) 自 API 起已弃用 16: Android 4.1

      请改用setImageAlpha(int)

      【讨论】:

        【解决方案3】:

        不,没有,请参阅ImageView.setAlpha(int) 文档中的“相关 XML 属性”部分是如何缺失的。另一种方法是使用View.setAlpha(float),其XML counterpartandroid:alpha。它的范围是 0.0 到 1.0 而不是 0 到 255。使用它,例如喜欢

        <ImageView android:alpha="0.4">
        

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

        【讨论】:

        • 即使我只是在这里重复自己:ImageView.setAlpha(int) 采用 intandroid:alpha 采用浮动,所以严格来说后者不是前者的确切 XML 对应, 但它是 View.setAlpha(float) 的对应物。正如这里多次提到的,android:alpha / View.setAlpha(float) 仅在 API 级别 11 中可用。
        • 不同之处在于,float 的可接受范围是 0-1,int 的可接受范围是 0-255。
        【解决方案4】:

        使用 android:alpha=0.5 来实现 50% 的不透明度,并将 Android Material 图标从黑色变为灰色。

        【讨论】:

          【解决方案5】:

          我不确定 XML,但您可以通过以下方式通过代码来完成。

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

          在 API 11 之前的版本中:

          • 范围是 0 到 255(含),0 表示透明,255 表示不透明。

          在 API 11+ 中:

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

          【讨论】:

          • 是的,我知道。 (我希望这在问题中是隐含的。) XML 的一个要点是去除其中的一些代码。对我来说,为什么 alpha 在各种尺寸、位置都有对应的 XML 属性时没有意义。
          • 我想知道:为什么它被弃用了?是因为现在他们有一个浮点参数吗?
          • 是的,您可以使用 imageView.setAlpha(1.0f),但需要 API 级别 11。
          【解决方案6】:

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

          android:alpha="0.0" 那是不可见的

          android:alpha="0.5"透视

          android:alpha="1.0" 完全可见

          这就是它的工作原理。

          【讨论】:

          • 只有在 API 11 (Android 3.0) 之后才有 setAlpha(float)android:alpha。之前的 API 11 必须使用代码来设置图像的 alpha。正如 sschuberth 在上面的 anser 中所说的那样。
          • @Antonio 为什么?这个答案并没有在我的上面添加任何信息,相反不够完整。
          • @sschuberth 你的答案是完全正确的,但缺乏一个例子可能会使这个答案比你的更受关注。尽管您的答案提供了更多信息,但此答案提供了更接近我真正需要的解决方案。请添加一些示例以使用您所解释的内容,这绝对会有所帮助!
          • @Antonio 完成。我现在的回答过于冗长了 ;-)
          【解决方案7】:

          现在有一个 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(不透明)的值。

          【讨论】:

            【解决方案8】:

            在古版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);
            

            【讨论】:

              【解决方案9】:

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

              ImageView 上放置一个 LinearLayout 并使用 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 属性(完全不透明)。

              【讨论】:

              • 解决图像问题的 alpha 问题,尤其是在手机设备上并不是最好的方法。
              • 当您只想使背景透明而不是其子元素时,这非常有用。在父容器上使用 alpha,使其所有子容器也透明
              【解决方案10】:

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

              【讨论】:

              • 我想使用 XML 属性设置图像的 alpha。这有帮助吗?
              • 我用这个来在带有背景图像的布局上混合布局,你肯定会在图像本身中设置图像的 alpha 吗?
              • “在图像本身”是什么意思?在 XML 中?可能是疏忽,但没有 alpha XML 属性。
              • 我的意思是,当您创建图像时,您将添加一个透明层并将图像的不透明度设置为 50 或您需要的任何值。
              • 我很惊讶 android:tint 没有效果。它允许一个 alpha 值......但它对白色图像没有影响:-(((((
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2018-05-28
              • 2012-03-24
              • 2020-09-19
              • 2011-02-19
              • 1970-01-01
              • 2021-11-05
              • 1970-01-01
              相关资源
              最近更新 更多