Я пытаюсь добавить раздвижную панель к своему макету, которая похожа на выдвижной ящик, за исключением того, что она будет размещена слева от моего основного макета и не наложена на нее. В левом верхнем углу моего макета есть маленькая кнопка, которая расширяет / сворачивает панель, когда я нажимаю на нее. Когда он разворачивается / разворачивается, я хочу, чтобы анимация была плавной, чтобы смежный с ней вид также двигался. Вот код, который я пробовал. Панель перестает работать после первого разворачивания / свертывания:
public Animation expandHiddenPanel(final View v, final boolean expand) {
panelExpanded = expand;
v.measure(MeasureSpec.makeMeasureSpec(200, MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
final int initialWidth = v.getMeasuredWidth();
Log.i("test", "initialWidth = " + initialWidth);
v.getLayoutParams().width = 0;
v.setVisibility(View.VISIBLE);
Animation a = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
int newWidth;
if (expand) {
newWidth = (int)(initialWidth * interpolatedTime);
Log.i("test", "new Width = " + newWidth);
}
else {
newWidth = (int)(initialWidth * (1 - interpolatedTime));
Log.i("test", "new Width = " + newWidth);
}
v.getLayoutParams().width = newWidth;
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
a.setInterpolator(new AccelerateInterpolator());
a.setDuration(2500);
v.startAnimation(a);
return a;
}