Как применить тень к ImageView? - PullRequest
25 голосов
/ 02 декабря 2011

Я хочу применить тень к ImageView. Когда я применяю тень к TextView, я получаю ее, но она не достигает ImageView. Как я могу решить эту проблему?

Ответы [ 4 ]

6 голосов
/ 06 октября 2015

Мы также можем использовать CardView , который обеспечивает закругленный угол фона и тени. Для этого вам нужно добавить библиотеку v7 CardView в качестве зависимости от проекта в build.gradle, как показано ниже.

dependencies {
    compile 'com.android.support:cardview-v7:23.0.1'
    -------
}

Примечание. Измените 23.0.1 в строке выше с соответствующей версией.

Итак, я окружил ImageView CardView, чтобы создать тень, как показано ниже.

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardBackgroundColor="@android:color/white">

    <ImageView
        android:id="@+id/dish_image"
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:adjustViewBounds="true" />

</android.support.v7.widget.CardView>

Это добавит тень вокруг изображения.

Примечание: я не знаю, хороший ли это обходной путь. Я начинающий. я попытался реализовать CardView, который дает идею для реализации то же самое для этого. Если это не хорошо, пожалуйста, сообщите мне причину.

2 голосов
/ 15 февраля 2016

Это взято из презентации Ромена Гая на Devoxx, PDF найден здесь .

Paint mShadow = new Paint(); 
// radius=10, y-offset=2, color=black 
mShadow.setShadowLayer(10.0f, 0.0f, 2.0f, 0xFF000000); 
// in onDraw(Canvas) 
canvas.drawBitmap(bitmap, 0.0f, 0.0f, mShadow);

Надеюсь, это поможет.

ПРИМЕЧАНИЯ

Не забудьте про Соты и выше, вам нужно вызвать setLayerType(LAYER_TYPE_SOFTWARE, mShadow), иначе вы не увидите свою тень! (@Dmitriy_Boichenko)

SetShadowLayer, к сожалению, не работает с аппаратным ускорением, поэтому значительно снижает производительность (@Matt Wear)

Ответ взят из Здесь

Для Api больше 21. Вы можете попробовать в xml в режиме просмотра изображений или кнопку: Читайте здесь на сайте разработчика

android:elevation="5dp"
1 голос
/ 13 июля 2016

Создать файл shadow_rect.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item >
        <shape
            android:shape="rectangle">
            <solid android:color="@android:color/darker_gray" />
            <corners android:radius="0dp"/>
        </shape>
    </item>
    <item android:right="1dp"  android:bottom="2dp">
        <shape
            android:shape="rectangle">
            <solid android:color="@android:color/white"/>
            <corners android:radius="1dp"/>
        </shape>
    </item>

</layer-list>

И используйте это как android: background = "@ drawable / shadow_rect в вашем ImageView.

1 голос
/ 15 февраля 2016

Вы можете создать список слоев для рисования и поместить в него два своих элемента (рисовать) для изображения и своей тени.

Положение и содержимое вашего теневого элемента могут изменяться в зависимости от того, где вы хотите применить тень (вверху, слева, справа, справа и слева и т. Д.) И стиля вашей тени.

...