【问题标题】:Android Image transparency - alternative for deprecated setAlpha for API < 11Android 图像透明度 - API < 11 的已弃用 setAlpha 的替代方案
【发布时间】:2014-01-11 15:13:05
【问题描述】:

我想在背景图片上设置透明度。我在 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),但正如我所说 - 它已被弃用......

【问题讨论】:

    标签: android transparency


    【解决方案1】:

    ImageView setAlpha 直到 API 级别 16 才被弃用。处理这种情况的正确方法是继续使用它,直到您可以针对最低 SDK 级别 16,然后只需切换到 View setAlpha。

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

    认为你正在处理 ImageView 是幸运的,因为它有一个你可以使用的 setAlpha!

    【讨论】:

    • 我接受这个答案。我为所有设备和 alny 视图找到了解决 setAlpha 的方法,而不仅仅是我的 ImageView:此方法应适用于所有 API 级别,甚至 API 级别 1:@SuppressLint("NewApi") public static void setAlpha(View view, float alpha){ if (Build.VERSION.SDK_INT &lt; 11) { final AlphaAnimation animation = new AlphaAnimation(alpha, alpha); animation.setDuration(0); animation.setFillAfter(true); view.startAnimation(animation); } else view.setAlpha(alpha); } 我在 stackoverflow 上找到了该解决方案,但我找不到源现在链接它,对不起。现在效果很好。
    【解决方案2】:
    ImageView iv_object;
    
    void updateAlpha(View v)
    {
    
      v.setAlpha(1);
    }
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        这对我来说很好用:

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

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

        【讨论】:

          【解决方案5】:

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

          0 == 不可见。

          【讨论】:

            猜你喜欢
            • 2022-05-02
            • 2019-07-05
            • 2020-03-05
            • 1970-01-01
            • 2020-04-15
            • 2012-04-16
            • 1970-01-01
            • 2016-01-08
            • 2020-11-07
            相关资源
            最近更新 更多