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

Вопрос:Я хочу применить тень к ImageView. Когда я применяю тень к TextView, я получаю его, но он не доходит до ImageView. Как я могу решить эту проблему? Ответ №1 Мы также можем использовать CardView, который обеспечивает закругленный угол фона и тени. Для этого вам необходимо добавить библиотеку v7 CardView в качестве зависимости к проекту в

Вопрос:

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

Ответ №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’

Выход:

Оцените статью
Добавить комментарий