在我的應用程序中,我使用底部工作表(來自支持庫),該工作表非常棒。現在我想在拖動表單的同時爲佈局更改設置動畫。爲此,我已經創建的BottomSheetCallback
一個子類(這是normaly一個內部類片段的所以不在此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;
}
}
正如你可以看到我還創建了兩個Scene
從不同佈局文件和自定義Transition
,以便在具有TransitionManager
的場景之間進行動畫製作。我的問題是,Transition
應該基於slideOffset
參數(範圍爲0-1),但TransitionManager
在背景中使用Animation
類,後者通常基於Android的時間。
我試圖創建自定義Intapolator,但這不能正常工作。那麼如何創建基於外部變量而不是準時的Transition
?
您能否提供一個視覺示例。截圖例子? –
我不認爲這是可能的。 BottomSheet偏移量的值從-1到1,並不總是在0和1或-1和0之間反彈。在某些情況下,它將從0.3開始並上升到1.0f。我過去也有同樣的問題。我必須根據時間傾聽狀態變化事件的動畫。 –
您需要哪種類型的動畫。 – Khemraj