我如何控制纹波淡入淡出的持续时间?
How can i control the ripple fade in and out duration?
我写了一个 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>
可能吗?
如果您想继续使用 github 库,那么这可以帮助您
https://github.com/traex/RippleEffect
它有一个名为 app:rv_rippleDuration
的 属性,可让您控制持续时间。它还具有许多其他属性。必须尝试一下
编辑
Here 是 Sunny 在 Whosebug
上给出的一个很好的答案
在 /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" />
我写了一个 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>
可能吗?
如果您想继续使用 github 库,那么这可以帮助您
https://github.com/traex/RippleEffect
它有一个名为 app:rv_rippleDuration
的 属性,可让您控制持续时间。它还具有许多其他属性。必须尝试一下
编辑
Here 是 Sunny 在 Whosebug
上给出的一个很好的答案在 /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" />