Android浮动动作按钮动画

前端之家收集整理的这篇文章主要介绍了Android浮动动作按钮动画前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想要的只是一个简单的动画,当scrollview移动时.我已经尝试了一些解决方案,但没有一个能够完美/顺利地工作.如果我滚动,我想用滑动动画隐藏工厂,如果在2秒后没有任何反应,那么工厂就会显示滑动动画.我知道这是一个基本问题,我很感激你的态度.

提前致谢.

final ScrollView scroll = (ScrollView) v.findViewById(R.id.sw);
scroll.setOnTouchListener(new View.OnTouchListener()){
   @Override
   public boolean onTouch(View v,Motionevent event){
      int action = event.getAction();
      if (action == Motionevent.ACTION_MOVE){

      //slide down animation here

      }else{
        new Handler().postDelayed(new Runnable(){
          public void run(){

          //slide up animation here

          }
        },2000);
      }
    return false;
  }
});
最佳答案
这是a tutorial,如何使用带有滚动动画的FAB按钮.

基本上:

>使用v22.2.1支持v4库,有一个show()和hide()方法,用于执行浮动动作按钮的淡入和淡出动画
>您必须将ScrollView和FAB放在CoordinatorLayout中.
>将FAB layout_anchor设置为ScrollView的id
>创建一个类并扩展FloatingActionButton.Behavior类并将其设置为布局xml中的FAB的layout_behavior属性
>重写您的Behavior类onStartNestedScroll以检查是否为垂直
>覆盖您的Behavior类onStopNestedScroll以在downscroll上调用子级(FAB)参数hide()方法并postDelay一个Runnable以在2秒后显示FAB

布局如:

我建议,还要在Behavior类中创建一个Handler来调用FAB的show()方法.
行为类(未测试):

public class CustomScrollAwareBehavior extends FloatingActionButton.Behavior{

private Handler handler = new Handler();
private FloatingActionButton fab;

public CustomScrollAwareBehavior(Context context,AttributeSet attrs) {
    super();
}

@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,FloatingActionButton child,View directTargetChild,View target,int nestedScrollAxes) {
    fab = child;
    return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||
            super.onStartNestedScroll(coordinatorLayout,child,directTargetChild,target,nestedScrollAxes);
}



Runnable showRunnable = new Runnable() {
    @Override
    public void run() {
        fab.show();
    }
};


@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout,int dxConsumed,int dyConsumed,int dxUnconsumed,int dyUnconsumed) {
    super.onNestedScroll(coordinatorLayout,dxConsumed,dyConsumed,dxUnconsumed,dyUnconsumed);
     if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
        handler.removeCallbacks(showRunnable);
        handler.postDelayed(showRunnable,2000);
        child.hide();
    } 
    }
}

猜你在找的Android相关文章