Cil*_*nco 27 android android-animation android-transitions
在我的应用程序中,我使用底部工作表(来自支持库),它非常有用.现在,我想在拖动工作表时设置布局更改动画.为此,我创建了一个子类BottomSheetCallback(这通常是片段的内部类,所以不是这个calss中使用的所有对象都在这里初始化):
public class MyBehavior extends BottomSheetBehavior.BottomSheetCallback {
Transition transition;
float lastOffset = 0;
Scene scene;
public PlayerBehavior() {
TransitionInflater inflater = TransitionInflater.from(getContext());
transition = inflater.inflateTransition(R.transition.player);
//transition.setDuration(300);
scene = fullLayout;
transition.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float v) {
return lastOffset;
}
});
}
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
if(newState == BottomSheetBehavior.STATE_DRAGGING) {
TransitionManager.go(scene, transition);
}
}
@Override
public void onSlide(View bottomSheet, final float slideOffset) {
scene = (slideOffset > lastOffset) ? smallLayout : fullLayout;
lastOffset = slideOffset;
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我还创建了两个Scene来自不同布局文件和一个自定义Transition动画之间的动画TransitionManager.我的问题是Transition应该基于slideOffset参数(在0-1的范围内),但是TransitionManager使用Animation背景中的类,这通常是基于Android的时间.
我试图创建自定义Intapolator但这不能正常工作.那么我怎么能创建一个Transition基于外部变量而不是按时的?
| 归档时间: |
|
| 查看次数: |
10160 次 |
| 最近记录: |