当滚动视图移动时,我只需要一个简单的动画。我已经尝试了一些解决方案,但没有一个能完美/流畅地工作。如果我滚动,我想用向下滑动动画来隐藏晶圆厂,如果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;
}
});
这是一个教程,如何将FAB按钮与滚动动画一起使用。
基本上:
show()
andhide()
方法为Floating Action Buttons执行淡入和淡出动画。ScrollView
和FAB放在CoordinatorLayout中。layout_anchor
设置为ScrollView's
id
FloatingActionButton.Behavior
该类并将其设置layout_behavior
为布局xml中的FAB属性onStartNestedScroll
以检查垂直onStopNestedScroll
以hide()
在向下滚动时调用子代的(FAB)参数方法,并延迟Runnable
2秒后显示FAB布局像:
<android.support.design.widget.CoordinatorLayout
... >
<ScrollView
android:id="@+id/myList"
...
/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
app:layout_anchor="@id/myList"
app:layout_behavior="package.CustomScrollAwareBehavior"
...
/>
</android.support.design.widget.CoordinatorLayout>
我建议也创建一个Handler
到Behavior类中以调用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, FloatingActionButton child,
View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed,
dyUnconsumed);
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
handler.removeCallbacks(showRunnable);
handler.postDelayed(showRunnable,2000);
child.hide();
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句