Как я могу контролировать длительность появления и исчезновения пульсации? - PullRequest
0 голосов
/ 25 июня 2019

Я пишу код Android, который имеет волновой эффект, добавив:

android:background="?attr/selectableItemBackground"

Мне нужно настроить это. Я знаю, как изменить цвет пульсации. Но как вы думаете, можно ли настроить даже следующее?

  • При нажатии (нажмите и отпустите), показывать обычный цвет при печати, без пульсации.
  • При более длительном удерживании пальца - показать пульсацию
  • Начало исчезает через 6 миллисекунд после нажатия

Я знаю, что добавление селектируемого селектора позволяет контролировать больше состояний, но я не думаю, что оно может контролировать продолжительность.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <shape android:shape="oval">
      <solid android:color="@color/grey200_alpha_10"/>
    </shape>
  </item>
  <item android:state_focused="true">
    <shape android:shape="oval">
      <solid android:color="@color/grey200_alpha_12"/>
    </shape>
  </item>
  <item android:state_hovered="true">
    <shape android:shape="oval">
      <solid android:color="@color/grey200_alpha_4"/>
    </shape>
  </item>
</selector>

Возможно ли это?

1 Ответ

0 голосов
/ 25 июня 2019

Если вы хотите продолжить работу с библиотекой github, тогда вам может помочь

https://github.com/traex/RippleEffect

У него есть свойство под названием app:rv_rippleDuration, которое позволяет вам контролировать продолжительность. Также у него есть много других свойств. Должен попробовать это

EDIT

Здесь - хороший ответ, данный Солнечный в StackOverflow

Под /platforms/android-14/data/res/themes.xml вы можете найти источники, которые @android:integer/config_mediumAnimTime используются на время, которое вы хотите настроить.

Теперь вы можете создать свой собственный файл для рисования и изменить время в соответствии с вашими требованиями.

<selector xmlns:android="http://schemas.android.com/apk/res/android"
      android:exitFadeDuration="@android:integer/config_mediumAnimTime">

<item android:state_window_focused="false" android:drawable="@color/transparent" />

<!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
<item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true"  android:state_enabled="false"                              android:drawable="@drawable/list_selector_background_disabled" />
<item android:state_focused="true"                                android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="false"                               android:state_pressed="true" android:drawable="@drawable/list_selector_background_transition" />
<item android:state_focused="true"                                                             android:drawable="@drawable/list_selector_background_focused" />
<item android:drawable="@color/transparent" />

...