как настроить тень на просмотр в Android?

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

 <LinearLayout android:layout_height="wrap_content" android:layout_width="wrap_content" <Button.... ...  

Теперь, когда он отображается, я хочу, чтобы вокруг него была тень.

Есть простой трюк, используя два представления, которые образуют тень.

               

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

Лучший способ создать тень – использовать изображение 9patch в качестве фона представления (или ViewGroup которое обертывает представление).

Первый шаг – создать png-изображение с тенью вокруг него. Я использовал фотошоп для создания такого изображения. Это очень просто.

  • Создайте новое изображение с помощью Photoshop.
  • Добавьте слой и создайте черный квадрат 4×4.
  • Создайте тень на слое, выбрав слой в проводнике слоев и нажав кнопку fx и выбрав тень.
  • Экспортируйте изображение как png.

Следующим шагом будет создание рисунков с 9 патчами с этого изображения.

  • Открыть draw9patch от android-sdk/tools
  • Открыть изображение в draw9patch
  • Создайте 4 черные линии на четырех сторонах квадрата, как shadow.9.png ниже, а затем сохраните изображение как shadow.9.png .

Теперь вы можете добавить эту тень в качестве фона видов, к которым вы хотите добавить тень. Добавьте shadow.9.png в res/drawables . Теперь добавьте его в качестве фона:

  

Недавно я написал сообщение в блоге, которое объясняет это подробно и включает в себя изображение 9patch, которое я использую для создания тени.

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

activity_main

        

layout_back_bgn.xml

     

shadow.xml

      

Я попытался опубликовать изображение, которое у меня есть после использования вышеуказанного кода, но stackoverflow не позволяет мне coz, у меня нет репутации. Простите об этом.

Вы можете использовать высоту, доступную с уровня API 21

Высота представления, представленного свойством Z, определяет визуальный внешний вид его тени: представления с более высокими значениями Z бросают больше, более мягкие тени. Представления с более высокими значениями Z закрывают представления с более низкими значениями Z; однако значение Z представления не влияет на размер представления. Чтобы установить высоту представления:

в определении макета, используйте

 android:elevation 

атрибут. Чтобы установить высоту представления в коде действия, используйте

 View.setElevation() 

метод.

Источник

Вот моя дрянная версия решения … Это модификация найденного здесь решения

Мне не нравилось, как углы выглядят так, что я все их бледнел …

                                            

введите описание изображения здесь

   

Используйте только под LinearLayout

Другой метод

введите описание изображения здесь

создать «rounded_corner_bg.xml» в папке / drawable

                

Чтобы использовать этот макет android:background="@drawable/rounded_corner_bg"

  • Могу ли я изменить анимацию перехода startActivity () Android?
  • Ошибка выполнения для задачи «app: mergeDebugResources» Crunching Cruncher ... png failed
  • Как остановить анимацию (cancel () не работает)
  • Как мне оживить View.setVisibility (GONE)
  • как убить вспомогательные действия и довести активность до стека
  • Изменить начальную активность приложения
  • Декомпилируйте APK, измените его и затем перекомпилируйте
  • Как добавить быстрый скроллер в RecyclerView
  • Причинение OutOfMemoryError в анимации Frame by Frame в Android
  • Реверсирование анимации
  • Что произойдет, если Android-приложение будет выпущено с возможностью отладки?
  • Давайте будем гением компьютера.