【问题标题】:Alpha-gradient on AndroidAndroid 上的 Alpha 渐变
【发布时间】:2013-01-15 19:59:33
【问题描述】:

我需要在 ImageView 的边缘创建一个 alpha 渐变。最好只使用 XML。

Image for example

【问题讨论】:

标签: android imageview gradient android-imageview alpha-transparency


【解决方案1】:

解决办法

图片如下图所示

代码

  • 准备可绘制的形状

res/drawable/gradient_shape.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
            android:startColor="#00FFFFFF"
            android:endColor="#FFFFFFFF"
            android:type="linear" />
</shape>

定义布局:activity_main.xml:

<ImageView
    android:id="@+id/photo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/photo"
    android:src="@drawable/gradient_shape" />

这里的drawable/photo只是drawables文件夹中的jpeg

编辑 有关详细信息,请参阅此 Tutorial

【讨论】:

  • @ffp27 这对你来说是正确的解决方案,与你的图像相同,要透明,请参考我的答案教程,希望对你有所帮助。
  • 不,这是一个错误的答案。这只是在图像上放置一个 alpha/白色渐变形状叠加。它不会以任何方式使原始图像的一部分透明。
  • 正确答案只需要更改开始和结束颜色
  • 但是如何在图像视图的每个边框中使用这种效果?
  • xml 没有“真实”的 alpha 渐变。添加另一层带有颜色的渐变(因为不幸的是,android 没有无色的纯 alpha 颜色代码)会污染渐变的颜色,在这种情况下是 FFFFFF。要实现无色渐变,您可能需要像这里提到的那样使用 ComposeShader:stackoverflow.com/a/40395350/3591480
【解决方案2】:
<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient
                android:startColor="#00FFFFFF"
                android:endColor="#FFFFFFFF"
                android:type="linear" />
    </shape>

完美的透明感。确保 View below 渐变实际上是在下面而不是仅仅触摸渐变形状视图。

如果您有主 RelativeLayout、 ListViewView(Background:Gradient )

确保 渐变视图 位于 ListView 的顶部,而不是一侧。如果您的 gradient 放在一边,它会被 RelativeLayout 背景颜色而不是 ListView 透明。

我希望你明白我想说什么。

【讨论】:

    【解决方案3】:

    为了透明度:

    android:startColor="@null"
    

    或者您可以使用 8 位十六进制颜色:

    android:startColor="#FF000000"
    

    前两个FF为颜色的alpha,00为全透明FF不透明

    【讨论】:

      【解决方案4】:

      如果您想要无色透明,则需要编写自定义 ImageView。

      如果您的背景是静态颜色,这是我首选的解决方法:

      <?xml version="1.0" encoding="utf-8"?>
      <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:drawable="@drawable/your_image"/>
      
          <item>
              <shape android:shape="rectangle">
                  <gradient android:startColor="#00efefef"
                      android:endColor="#ffefefef"
                      android:angle="270"
                      android:type="linear"/>
              </shape>
          </item>
      </layer-list>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-23
        • 2011-08-20
        • 2017-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-07
        • 1970-01-01
        相关资源
        最近更新 更多