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

Android L Elevation Effect в Pre L (только с использованием свойства высоты)

Я работаю над приложением и хочу иметь эффект возвышения на ImageView или любом View (! CardView в библиотеке поддержки) в интерфейсах Pre L API. Но я не могу добиться того, что я пытался использовать свойство android:elevation, но оно не имеет никакого эффекта (без повышения).

Я не могу найти какой-либо API, если кто-то укажет на какую-либо документацию для достижения этой цели в Pre L или любой фрагмент из библиотеки поддержки, высоко оценен.

4b9b3361

Ответ 1

Если вы хотите установить представления в трехмерной форме, View.setElevation() и View.setTranslationZ() - хорошая идея.

Но, к сожалению, эти два атрибута и методы введены с Android API 21. Таким образом, вы не можете использовать их на устройствах pre-L или API 21.

Но есть еще способ настроить тени и контуры ваших просмотров.

Оценки рамки фона вида определяют форму по умолчанию своей тени. Контуры представляют внешнюю форму графического объекта и определяют область пульсации для обратной связи касания.

Рассмотрим этот вид, определенный с помощью фона:

<TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />

Исходный фон определяется как прямоугольник с закругленными углами:

<!-- res/drawable/myrect.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle">
    <solid android:color="#42000000" />
    <corners android:radius="5dp" />
</shape>

В представлении создается тень с закругленными углами, так как фон drawable определяет контур представления. Предоставление настраиваемого контура отменяет форму по умолчанию тени вида.

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

  • Расширьте класс ViewOutlineProvider.
  • Переопределить метод getOutline().
  • Назначьте новому поставщику контуров вашему представлению с помощью View.setOutlineProvider().

Вы можете создавать овальные и прямоугольные контуры с закругленными углами, используя методы класса Outline. Поставщик контуров по умолчанию для представлений получает контур из фона представления. Чтобы запретить просмотр из тени, установите его провайдер outline null.

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

P.S:. yourAppNs:elevation="4dp" будет хорошей идеей, если вы используете андроид-дизайн-библиотеку.

Ответ 2

  • ViewCompat.setElevation()/getElevation() не работает с pre Lollipop.
  • В библиотеке поддержки ничего не стоит проверять, по крайней мере, до версии 21.1.1
  • Что касается создания эффекта возвышения самостоятельно Взгляни на