and*_*per 8 android android-fragments android-viewpager material-design floating-action-button
根据材料设计指南(此处),如果您使用具有FAB(浮动操作按钮)的ViewPager,FAB不应作为片段的一部分移动,而是消失或被其他片段替换,或动画其他东西.
简而言之,而不是:
你应该做这个:
我没有看到任何示例或教程是什么是执行此操作的最佳方式.
我的意思是,在ViewPager中为每个片段(或其中一些片段)设置FAB,而每个片段都由其片段(逻辑及其外观)控制,但FAB在滑动时不会真正作为片段的一部分移动ViewPager中的片段之间.
即使作为示例应用程序,我也不会在任何地方看到此行为.联系人应用程序对两个片段都具有相同的FAB,并且拨号器只有FAB移动.
甚至还有使用不良行为的应用程序(如Solid-Explorer).在YouTube上,有一个FAB(在"帐户"片段上),但它在标题上,所以它可能没问题.
你应该如何实现正确的行为?你真的会把FAB作为活动的一部分而不是片段吗?
是否有关于此的教程和/或示例?
也许,当ViewPager开始滚动时,我可以分离FAB,并将它附加到活动,在滚动时动画,当它完成滚动时,我可以隐藏它并显示另一个片段之一?
不久前,我在 viewpager 和 fab 中遇到了同样的问题,我用这种方式解决了:
OnPageChangeListener并ViewPager保存onPageSelected(int position)的位置在活动的全局变量中onPageSelected你的 fab 的动画(它可以是 xml 或以编程方式,我用 xml 完成)并更改他的colorTintOnClickListener中,onClick(View v)当您检索 fab 的 fab id(或视图)以确定应执行哪个操作时,您可以使用之前获得的位置创建一个 switch 语句onPageSelected编辑
这是我尝试创建的两个 anim.xml,类似于 android 指南:
使旧的fab消失的动画:
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="200" />
<rotate
android:duration="200"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="360"
android:toDegrees="270" />
</set>
Run Code Online (Sandbox Code Playgroud)
显示新动画:
<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="200" />
<rotate
android:duration="200"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="270"
android:toDegrees="360" />
</set>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |