我正在开发android新闻应用程序,如何在顶部的imageview上使像下面的imageview,应该有任何库或方法来实现

android - 如何创建像这样的图像?-LMLPHP

最佳答案

尝试1:使用简单的Shape可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <rotate
                android:fromDegrees="10"
                android:toDegrees="0"
                android:pivotX="-230%"
                android:pivotY="14%" >
            <shape
                    android:shape="rectangle" >
                <stroke android:color="@android:color/transparent"
                        android:width="1dp"/>
                <solid
                        android:color="@android:color/white" />
            </shape>
        </rotate>
    </item>
</layer-list>


(这花了我5分钟的时间,所以也许有更好的方法来制作这种形状)。

这将是布局,请注意foreground属性指向我上面的“形状”。

<ImageView
            android:id="@+id/imageView"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:foreground="@drawable/my_shape"
            android:scaleType="centerCrop"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/xxx" />



看起来像这样:

android - 如何创建像这样的图像?-LMLPHP

Original Wikipedia image source

尝试2:使用自定义SVG

我启动了Inkscape,并制作了一个快速三角形(我将其保留为半透明状态,以便您可以看到它)

android - 如何创建像这样的图像?-LMLPHP

将其导入为称为ic_bad_triangle的Vector资产,然后将其添加到图像的前景...

...(当然省略所有属性)

    <ImageView
            ...
            android:foreground="@drawable/ic_bad_triangle" />


它看起来像这样:

android - 如何创建像这样的图像?-LMLPHP

显然,您必须调整矢量资产以匹配您的设计和尺寸,但是您有了主意,无需引入库。

最后一个图像的三角形在那里显然是半透明的,因此您可以看到它。考虑到这花了我25分钟,我希望它能使您朝正确的方向前进。

更新:我擦亮了三角形:

<vector android:height="35.357143dp" android:viewportHeight="297"
    android:viewportWidth="210" android:width="25dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#ffffff"
        android:pathData="M-0.084,298.008H216.193L-0.421,258.091Z"
        android:strokeAlpha="1" android:strokeColor="#ffffff"
        android:strokeLineCap="butt" android:strokeLineJoin="miter" android:strokeWidth="0.64384729"/>
</vector>



现在看起来像这样:

android - 如何创建像这样的图像?-LMLPHP

08-18 06:50