【问题标题】:How to change the opacity of an image.如何更改图像的不透明度。
【发布时间】:2019-06-29 17:58:08
【问题描述】:

我将背景图像设置为ImageView,现在我想更改图像的不透明度,为此我编写此代码来更改 ImageView 的不透明度,但是当我这样做时,它会删除背景图像从图像视图中,所以我的问题是如何在不删除背景图像的情况下更改 ImageView 的不透明度。

我使用的代码是:

ImageView imageView = (ImageView) findViewById(R.id.image_view);

imageView.setBackgroundResource(R.drawable.theme1_page_header); // Set background image

int opacity = 100; // from 0 to 255
imageView.setBackgroundColor(opacity * 0x1000000); // change opacity of image

【问题讨论】:

    标签: android


    【解决方案1】:

    alpha 最重要的部分是值必须是十进制

    0 = 透明,1 = 可见

    所以 0.5 是一半可见

    在 XML 中你可以做

    <ImageView
            android:layout_width="30dp"
            android:layout_height="35dp"
            android:id="@+id/imageView"
            android:alpha="0.4" // <-----------------  this is the fun part
            android:layout_alignParentRight="false"
            android:background="@drawable/imagename"
            android:layout_alignParentLeft="false"
            android:layout_alignParentTop="false"
            android:layout_alignWithParentIfMissing="false"
            android:layout_marginLeft="100dp"
            android:layout_alignParentBottom="false"
            android:layout_alignParentStart="false"
            android:layout_alignTop="@+id/bar"
            android:layout_marginTop="30dp"/>
    

    【讨论】:

      【解决方案2】:

      你可以使用

      imageView.setAlpha(yourValue); //  some value 0-255 where 0 is fully transparent and 255 is fully opaque
      

      documentation

      【讨论】:

      • 感谢您的回答,但值不是0-255,它应该在0-1之间的范围内作为浮动
      【解决方案3】:
      ImageView imageView = (ImageView) findViewById(R.id.image_view);
      Drawable dPage_header= getResources().getDrawable(R.drawable.theme1_page_header);
      
      // setting the opacity (alpha)
      dPage_header.setAlpha(10);
      
      // setting the images on the ImageViews
      imageView.setImageDrawable(dPage_header);
      

      【讨论】:

      • 但这与您的第一个问题无关。你可以通过检查你的工作百分比来做到这一点。您可以创建一个返回 complatedWorkPercentage() 的方法并将此值提供给 dPage_header.setAlpha(complateWorkPercentage());
      • 我不知道工作是什么?你能给我发详细的电子邮件到 talhakosen@gmail.com
      • 嗨 talhakosen...我已经回复你的邮件了..你能检查一下吗
      【解决方案4】:

      对于 API >=16 。使用 setImageAlpha 作为您的练习,因为 setAlpha 将在未来被弃用。 `

      ImageView.setAlpha(int) 一直是 renamedImageView.setImageAlpha(int) 以避免混淆。见Detail Explanation here

      【讨论】:

        【解决方案5】:

        在布局 xml 中使用此选项可实现不透明度以及将 Android Material 图标从黑色变为灰色。 android:alpha=0.5

        【讨论】:

          【解决方案6】:

          在 Kotlin 中,我们可以像这样更改代码中的 alpha:

          myImageView.alpha = 0.5f
          

          将 alpha 值更改为 0.0f 到 1f 之间的任意值

          【讨论】:

            【解决方案7】:

            选项 1

            使用imageView.setAlpha(100)

            如果您使用的是 Android 2.3,则必须使用 Nineolddroids 对零长度动画进行可怕的修改。

            选项 2

            子类ImageView 并覆盖其onDraw() 方法以透明地绘制图像。

            选项 3

            实际使用get/setPixel()修改图像像素。不过这会很慢;可能有更快的方法来做到这一点(例如使用渲染脚本)。

            【讨论】:

              猜你喜欢
              • 2012-07-18
              • 1970-01-01
              • 2016-09-02
              • 1970-01-01
              • 2016-12-02
              • 2012-09-18
              • 2021-08-13
              相关资源
              最近更新 更多