Подтвердить что ты не робот

Как применить тень к ImageView?

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

4b9b3361

Ответ 1

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

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

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

Поэтому я окружил ImageView с помощью CardView чтобы создать тень, как 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

Это взято из презентации Ромена Гая в 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);

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

ПРИМЕЧАНИЯ

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

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

Ответ, взятый из Здесь

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

android:elevation="5dp"

Ответ 3

Создать файл 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 в вашем представлении изображений.

Ответ 4

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

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

Ответ 5

Для тех, кто хочет загружать большие растровые изображения Эффективно перейдите по этой ссылке: https://developer.android.com/topic/performance/graphics/load-bitmap Это лучший и самый безопасный способ масштабирования изображения на основе устройства.

Ответ 6

Тень для круговых изображений

<de.hdodenhof.circleimageview.CircleImageView
        android:src="@drawable/ic_your_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:elevation="8dp"
        android:layout_marginTop="32dp"
        android:id="@+id/imageView"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"/>

Зависимость:

implementation 'de.hdodenhof:circleimageview:3.0.0'

Выход:

enter image description here