Ind*_*yZa 7 android floating-action-button
在新的设计支持库中,我想动画浮动操作按钮(FAB),以便在更改片段或选项卡时缩小和展开.

我试过几种过渡了一段时间,但不能得到顺利和连接的例子这让我觉得有更好的办法还是要做到这一点有道.
在ViewPager.OnPageChangeListener()我将使用btn.setScaleY()和btn.setScaleX()取决于onPageScrolled()方法的偏移量.
在你Activity的类,添加addOnPageChangeListener在你的ViewPager.见下文 :
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
private int state = 0;
private boolean isFloatButtonHidden = false;
private int position = 0;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (isFloatButtonHidden == false && state == 1 && positionOffset != 0.0) {
isFloatButtonHidden = true;
//hide floating action button
swappingAway();
}
}
@Override
public void onPageSelected(int position) {
//reset floating
this.position = position;
if (state == 2) {
//have end in selected tab
isFloatButtonHidden = false;
selectedTabs(position);
}
}
@Override
public void onPageScrollStateChanged(int state) {
//state 0 = nothing happen, state 1 = begining scrolling, state 2 = stop at selected tab.
this.state = state;
if (state == 0) {
isFloatButtonHidden = false;
} else if (state == 2 && isFloatButtonHidden) {
//this only happen if user is swapping but swap back to current tab (cancel to change tab)
selectedTabs(position);
}
}
});
Run Code Online (Sandbox Code Playgroud)
在您的私有方法中,您可以在那里执行自定义任务.
private void swappingAway()
{
floatingActionButton.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(this, R.anim.pop_down);
floatingActionButton.startAnimation(animation);
}
private void selectedTabs(int tab)
{
floatingActionButton.show();
//a bit animation of popping up.
floatingActionButton.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(this, R.anim.pop_up);
floatingActionButton.startAnimation(animation);
//you can do more task. for example, change color for each tabs, or custom action for each tabs.
}
Run Code Online (Sandbox Code Playgroud)
我故意不使用hide()和show(),因为它有缺陷,当你换走,回去的时候了.
这是pop_down和pop_up的目标
pop_down.xml
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="0.0"
android:toYScale="0.0"
android:duration="100"
android:pivotX="50%"
android:pivotY="50%"
android:shareInterpolator="true"
android:fillAfter="true">
</scale>
Run Code Online (Sandbox Code Playgroud)
pop_up.xml
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:toXScale="1.0"
android:toYScale="1.0"
android:duration="500"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="200"
android:interpolator="@android:anim/bounce_interpolator"
android:shareInterpolator="true"
android:fillAfter="true">
</scale>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |