- Как показать тень вокруг linearlayout в android?
- 13 ответов
- Урок 4. Android Material Design. Установка теней и обрезка View
- Настройте тени и контуры
- Обрежьте view
- Как добавить тень над видом в Android
- 3 ответа
- Как показать тень вокруг linearlayout в Android?
- Макет андроид : добавить границы с тень вокруг элемента LinearLayout
Как показать тень вокруг linearlayout в android?
Как я могу показать тень для моего линейного макета. Я хочу белый цвет округлый фон с тенью вокруг linearlayout. Я делал это до сих пор. Пожалуйста, помогите мне. Спасибо заранее.
и rounded_rect_shape.xml в каталоге xml
13 ответов
в Android нет такого атрибута, чтобы показать тень. Но возможные способы сделать это:
добавьте простой LinearLayout с серым цветом, над которым добавьте свой фактический макет, с полем внизу и справа, равным 1 или 2 dp
есть 9-патч изображение с тенью и установить его в качестве фона для вашего линейного макета
существует также другое решение проблемы путем реализации списка слоев, который будет выступать в качестве фона для LinearLayoout.
добавить background_with_shadow.xml-файл в res/drawable . Содержащий:
затем добавьте список слоев в качестве фона в LinearLayout.
Ну, это легко достичь .
просто построить GradientDrawable это происходит от Черного и переходит к прозрачному цвету, чем использовать родительские отношения, чтобы поместить вашу форму близко к представлению, которое вы хотите иметь тень, тогда вам просто нужно дать любые значения высоте или ширине .
вот пример, этот файл должен быть создан внутри res/drawable , Я называю это как shadow.xml :
поместите следующий код выше из LinearLayout , например, установите android:layout_width и android:layout_height to fill_parent и 2.3dp , вы будете иметь хороший эффект тени на LinearLayout .
Примечание 1: если вы увеличиваете android:layout_height будет показано больше тени .
примечание 2: использовать android:layout_above=»@+id/id_from_your_LinearLayout» атрибут если вы размещаете этот код внутри RelativeLayout, в противном случае игнорируйте его.
надеюсь, это поможет кто-то.
для леденца и выше вы можете использовать высота.
для более старых версий:
(toast_frame не работает на KitKat, тень была удалена из тостов)
Источник
Урок 4. Android Material Design. Установка теней и обрезка View
Перевод документации официального сайта developer.android.com
Рисунок 1. Тени для различных высот view.
Чтобы установить высоту view в макете используйте атрибут android:elevation. Чтобы установить высоту в коде activity, используйте метод View.setElevation().
Чтобы установить смещение, используйте метод View.setTranslationZ().
Новые методы ViewPropertyAnimator.z() и ViewPropertyAnimator.translationZ() позволяют легко анимировать высоту view. Для получения дополнительной информации, смотрите справку по ViewPropertyAnimator и руководство разработчика о свойствах анимации.
Вы так же можете использовать StateListAnimator чтобы установить анимации декларативно. Это особенно полезно в тех случаях, когда изменяется состояние триггера анимации, например, когда пользователь нажимает на кнопку. Для получения дополнительной информации, смотрите Изменение состояния анимации view.
Значение Z измеряется в dp (density-independent pixels).
Настройте тени и контуры
Границы фона drawable view определяют форму его тени. Контуры представляют собой внешнюю форму графического объекта и определяют область для сенсорного отклика.
Рассмотрим view, определенное с помощью фона dravable:
Фон drawable определен как прямоугольник с закругленными углами:
View отбрасывает тень с закругленными углами, после того как фон drawable установил границы view. Создание пользовательского контура переопределяет форму тени view по умолчанию.
Чтобы установить пользовательский контур для view в коде:
1. Унаследуйтесь от класса ViewOutlineProvider.
2. Переопределите метод getOutline().
3. Назначьте нового поставщика контура для вашего view с помощью метода View.setOutlineProvider() .
Вы можете создать овальные и прямоугольные очертания с закругленными углами используя методы класса Outlines. Поставщик контура для view по умолчанию получает контур из фона view. Чтобы view не отбрасывала тень, установите значение поставщика контура в null.
Обрежьте view
Обрезание позволяет вам легко изменить форму view. Вы можете обрезать view для совместимости с другими элементами дизайна или изменить форму view в ответ на действия пользователя. Вы можете обрезать view к его области контура с помощью метода View.setClipToOutline() или используя атрибут android:clipToOutline. Только прямоугольник, круг и скругленный прямоугольник поддерживают обрезание, как определено в методе Outline.canClip().
Чтобы обрезать view в форме drawable, установите drawable в качестве фона view (как показано выше), и вызовите метод View.setClipToOutline().
Обрезание view это дорогостоящая операция, поэтому не анимируйте форму, которую вы используете чтобы обрезать view. Для достижения этого эффекта используйте Reveal эффект анимации.
Источник
Как добавить тень над видом в Android
У меня есть представление о сервере в качестве нижнего колонтитула. Это просто представление, которое вы можете рассматривать как кнопку, текстовое представление или макет (на самом деле я открыт для всего). Вот xml
Итак, как вы можете видеть, ScrollView прокручивается под MyBottomView. Я хочу добавить верхнюю тень к MyBottomView, чтобы он больше походил на Material Design. Как я могу это сделать?
3 ответа
Вот несколько решений этой проблемы — выберите лучшее:
- В StackOverFlow в сообщении от 22 октября 2012 г. Как отображать тень вокруг linearlayout в android? вы бы прочитали:
В Android нет такого атрибута, чтобы показать тень. Но возможные способы сделать это:
Добавьте простой LinearLayout серого цвета, поверх которого добавьте фактический макет с полями внизу и справа, равными 1 или 2 dp
Создайте изображение из 9 участков с тенью и установите его в качестве фона для вашего линейного макета
Существует также другое решение проблемы путем реализации списка слоев, который будет служить фоном для LinearLayoout.
Добавьте файл background_with_shadow.xml в res/drawable . Содержит:
Затем добавьте список слоев в качестве фона в свой LinearLayout.
- Еще одно сообщение от StackOverflow, как установить тень для представления в android ?, дает другое решение (с использованием двух представлений, образующих тень):
- Вы также можете использовать определенные ресурсы Android для имитации эффекта тени. Посмотрите: https://stackoverflow.com/questions/21211870/android-view-shadow или просто прочтите сообщение ниже:
Я использую Android Studio 0.8.6 и не могу найти:
поэтому я нашел это вместо этого:
и это выглядит так:
! [введите описание изображения здесь] [1]
Если вас интересует чистый эффект материального дизайна, прочтите документацию, как показано ниже:
На взломе я обнаружил, что для этого нужно обернуть ваше представление в родительский элемент и использовать поворот. Например. если у вас есть вид карты и вы добавляете к нему высоту, вы можете поставить два поворота, как это, чтобы получить тень сверху, а не снизу:
Это дает что-то вроде прилагаемого снимка экрана.
С этим все еще есть проблема — для этого требуется, чтобы paddingBottom был установлен в родительском макете, что означает, что будет очевидно, что любой прокручиваемый брат над макетом не уходит ниже него.
Так что даже в наш век поставщиков возвышений и контуров лучше вместо этого добавить полупрозрачный вид. 🙁
Если вам нужна тень только с одной стороны вида (например, сверху), вы можете добавить еще один вид перед ним и использовать градиентную тень для его фона.
Вот файл градиента top_shadow_gradient.xml , который вы должны сохранить в папке drawable :
И вот пример макета, как его использовать:
Важно: корневой макет должен быть прозрачным ( android:background=»@android:color/transparent» ), а макет «содержимого» должен иметь белый фон ( android:background=»#ffffff» ).
Источник
Как показать тень вокруг linearlayout в Android?
Как я могу показать тень для моего линейного макета. Я хочу белый цветной округлый фон с тенью вокруг linearlayout. Я сделал это до сих пор. Пожалуйста, помогите мне. Заранее спасибо.
И rounded_rect_shape.xml в каталоге xml
В Android нет такого атрибута, чтобы показать тень. Но возможные способы сделать это:
Добавьте простой LinearLayout с серым цветом, над которым добавьте ваш фактический макет, с краем внизу и справа, равным 1 или 2 dp
Получите 9-патч-изображение с тенью и установите его как фон для вашего линейного макета
Существует еще одно решение проблемы путем реализации слоя-списка, который будет выступать в качестве фона для LinearLayoout.
Добавьте файл background_with_shadow.xml в res/drawable . Содержит:
Затем добавьте список слоев в качестве фона в LinearLayout.
Ну, этого легко достичь.
Просто создайте GradientDrawable который приходит из черного и переходит в прозрачный цвет, чем использование родительского отношения, чтобы разместить вашу фигуру рядом с представлением, в котором вы хотите получить тень, тогда вам просто нужно указать любые значения по высоте или ширине.
Вот пример, этот файл должен быть создан внутри res/drawable , я shadow.xml его shadow.xml :
Поместите следующий код выше с LinearLayout , например, установите android:layout_width и android:layout_height для fill_parent и 2.3dp , у вас будет хороший эффект тени на LinearLayout .
Примечание 1: Если вы увеличиваете android:layout_height будет android:layout_height больше тени.
Примечание 2: Используйте android:layout_above=»@+id/id_from_your_LinearLayout» если вы размещаете этот код внутри RelativeLayout, иначе игнорируете его.
Надеюсь, это поможет кому-то.
Для леденцов и выше вы можете использовать высоту .
Для более старых версий:
(Toast_frame не работает на KitKat, тень удалена из тостов)
В качестве фона
И с различным цветом bg:
Попробуйте это. Layout_shadow.xml
Примените к вашему макету как это
На самом деле я согласен с @odedbreiner, но я помещаю dialog_frame в первый слой и скрываю черный фон под белым слоем.
- Сохраните это 9.png. (Измените имя на 9.png )
2. Сохраняйте его в своем drawable .
3.Вставьте его в свой макет.
Создайте новый XML в качестве примера с именем «shadow.xml» в DRAWABLE со следующим кодом (вы можете изменить его или найти еще лучше):
После создания XML в LinearLayout или другого виджета вы хотите создать тень, вы используете свойство BACKGROUND, чтобы увидеть efect. Это было бы примерно так:
Одним из возможных решений является использование девяти патч-изображений, таких как http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
Я сделал это следующим образом. Это мой основной макет, в котором round_corner.xml и drop_shadow.xml используются в качестве фонового ресурса. Round_corner_two такой же, как round_corner.xml, только атрибут цвета отличается. Скопируйте round_corner.xml, drop_shadow.xml и round_conere_two.xml в папку с рисунком.
Вы можете использовать следующий класс для тега xml:
Используйте тег в xml следующим образом:
Установите этот xml drwable в качестве фона; —
Я знаю, что это слишком поздно. Но у меня было такое же требование. Я решил так
Источник
Макет андроид : добавить границы с тень вокруг элемента LinearLayout
Я хотел бы создать те же границы этого элемента LinearLayout как пример :
В этом примере мы видим, что граница-это не то же самое по всему краю. Как я могу создать это с помощью XML-файла катры?
Сейчас я только в состоянии создать простой границы вокруг элемента LinearLayout как это :
Что’s, почему CardView существует. CardView | Android разработчиков Это’s просто так, что поддерживает высот в pre-Lollipop устройств.
Для использования этого метода вам нужно добавить зависимость для построения.Gradle в`:
Я получить лучшие результаты с помощью 9 графический патч.
Вы можете просто создать индивидуальный 9 графический патч с помощью следующей редакции: http://inloop.github.io/shadow4android/
Пример:
В 9 графический патч:
ладно, я знаю, что это слишком поздно. но у меня было такое же требование. я решил такой
1.Сначала создайте XML-файл (например: border_shadow.xml) в «мешочки»и папку и скопируйте в него приведенный ниже код.
2.сейчас на макете, где вы хотите тень(пример: макет) добавить в Android:фоновая
и, что работал для меня.
Создать файл мешочки с градиентом так:
для тень ниже вид below_shadow.xml
для тень над целью above_shadow.xml
и так далее для правой и левой тени просто изменить угол градиента 🙂
В качестве альтернативы, вы можете использовать 9 патч изображения в качестве фона для вашего макета, что позволяет более «природных» в тени:
Поместить изображение в папку/РЭС/холст . Убедитесь, что файл имеет расширение .9.формат PNG , не .ПНГ`
Кстати, это измененный (уменьшенный до минимального размера площади) существующего ресурса в папку с API 19 СДК ресурсов. Я оставил красными маркерами, так как они Дон’т, кажется, чтобы быть вредным, как показано в программе draw9patch.
[Править]
Около 9 патчи, в случае, если вы никогда не имели с ними ничего общего.
Просто добавить его в качестве фона вашего зрения.
Черный отмеченных местах (слева и сверху) будет растягиваться (вертикально, горизонтально). Черный отмеченных местах (справа, снизу) определить «По материалам площадь» (где’можно добавить текст или вид — можно вызвать без опознавательных знаков регионов, что «прокладка» и, если вам нравится).
Источник