为自定义视图提供阴影效果

时间:2018-05-05 09:19:52

标签: java android android-custom-view

您好我正在开发一个应用程序,我有一个自定义曲线形状,我正在使用imageview现在这个shpae是白色的,我已经创建了另一个类似的自定义形状的黑色所以现在我正在尝试做的是将黑色形状作为白色形状的阴影,作为用作白色形状轮廓的细黑线。 现在我的问题是,当我运行应用程序时,黑色形状与白色形状完全重叠。 所以,任何人都可以帮助我 我的xml代码

<android.support.v4.widget.NestedScrollView android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:fillViewport="true"
    android:fitsSystemWindows="true"
    android:id="@+id/profile_scroll"
    xmlns:android="http://schemas.android.com/apk/res/android" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/background_image"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="@drawable/curved_toolbar"
        >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="250dp"
            android:src="@drawable/curved_toolbar"
            android:visibility="gone" />
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:layout_marginBottom="20dp"
            android:src="@drawable/profile_black_shadow"/>
        <ImageView
            android:id="@+id/second_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="centerCrop"
            android:layout_marginBottom="20dp"
            android:src="@drawable/profile_second_image" />


        <ImageView
            android:id="@+id/pencil_image"
            android:layout_width="15dp"
            android:layout_height="15dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="30dp"
            android:scaleType="centerCrop"
            android:adjustViewBounds="true"
            android:layout_marginTop="25dp"
            android:src="@drawable/pencil" />


    </RelativeLayout>


    <LinearLayout
        android:id="@+id/linear"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">


    </LinearLayout>

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/circle_image"
        android:layout_width="116dp"
        android:layout_height="120dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginEnd="125dp"
        android:layout_marginRight="125dp"
        android:layout_marginTop="113dp"
        android:src="@drawable/heath_ledger"
       />

    <LinearLayout
        android:id="@+id/person_name_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_below="@+id/circle_image"
        android:layout_centerInParent="true"
        >
        <com.ct.listrtrial.Custom.CustomTextViewMedium
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Jhon Doe"
            android:id="@+id/person_name_text"
            android:textColor="@color/White"
            android:textSize="16sp"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/points_layout"
        android:layout_marginBottom="8dp"
        android:layout_below="@+id/person_name_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="6dp">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="20dp">
           <com.ct.listrtrial.Custom.CustomTextViewMedium
               android:id="@+id/first_follow_count"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:text="200"
               android:textColor="@color/White"
               android:layout_marginLeft="13dp"
               android:textSize="15sp"/>
        <com.ct.listrtrial.Custom.CustomTextViewMedium
            android:id="@+id/first_follow_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textSize="13sp"
            android:text="Followers"
            android:textColor="@color/White"
            android:layout_marginTop="5dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="51dp">
            <com.ct.listrtrial.Custom.CustomTextViewMedium
                android:id="@+id/second_follow_count"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="200"
                android:layout_marginLeft="40dp"
                android:textColor="@color/White"
                android:textSize="15sp"/>
            <com.ct.listrtrial.Custom.CustomTextViewMedium
                android:id="@+id/second_follow_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textSize="13sp"
                android:text="Following"
                android:textColor="@color/White"
               android:layout_marginLeft="25dp"
                android:layout_marginTop="5dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginLeft="100dp">
            <com.ct.listrtrial.Custom.CustomTextViewMedium
                android:id="@+id/third_follow_count"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:text="1.5K"
                android:textColor="@color/White"
                android:textSize="15sp"/>
            <com.ct.listrtrial.Custom.CustomTextViewMedium
                android:id="@+id/third_follow_text"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:textSize="13sp"
                android:text="Points"
                android:textColor="@color/White"
                android:layout_marginTop="5dp"/>
        </LinearLayout>
    </LinearLayout>
    <View
        android:id="@+id/divider_view"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/black"
        android:layout_above="@+id/leaderboard_recycler"/>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/leaderboard_recycler"
        android:layout_below="@+id/points_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
    </android.support.v7.widget.RecyclerView>
    <View
        android:id="@+id/divider_view1"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/black"
        android:layout_below="@+id/leaderboard_recycler"
        />
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>

和我自定义的白色形状

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFFFFF"/>
    <size
        android:width="30dp"
        android:height="15dp"/>
    <corners
        android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"/>
</shape>

和我的黑色形状

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#000000"/>
    <size
        android:width="18dp"
        android:height="9.1dp"/>
    <corners
        android:bottomLeftRadius="55dp"
        android:bottomRightRadius="55dp"
        />
</shape>

1 个答案:

答案 0 :(得分:1)

尝试使用此drawable (您可以通过更改形状中的填充来调整阴影厚度),

如: -

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="0px">
        <layer-list>
            <item android:top="4dp">
                <shape android:shape="rectangle">
                    <solid android:color="#08000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="3px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#09000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="2px"/>
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#10000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="2px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#11000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#12000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#13000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#14000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#15000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#16000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#17000000"/>
                    <corners
                        android:bottomLeftRadius="180dp"
                        android:bottomRightRadius="180dp" />
                    <size
                        android:width="80dp"
                        android:height="40dp"/>
                    <padding
                        android:bottom="1px" />
                </shape>
            </item>
        </layer-list>
    </item>
    <item >
        <shape android:shape="rectangle">
            <solid android:color="#ffffff"/>
            <corners
                android:bottomLeftRadius="180dp"
                android:bottomRightRadius="180dp" />
            <size
                android:width="80dp"
                android:height="40dp"/>
        </shape>
    </item>
</layer-list>

在ImageView上设置: -

<ImageView
        android:background="@drawable/shape"
        android:layout_width="match_parent"
        android:layout_height="200dp" />

结果: -

enter image description here