Android 如何平滑线性布局高度动画,内容繁重 Animation动画=新动画(){ @凌驾 受保护的无效应用转换(浮点插值时间,转换t){ ViewGroup.LayoutParams params=slidingPane.getLayoutParams(); int计算高度=展开高度-((int)(展开高度*插值时间)); 如果(calculatedHeight
,而不是手动更改每个动画步骤的高度,则应尝试使用更系统的动画,如Android 如何平滑线性布局高度动画,内容繁重 Animation动画=新动画(){ @凌驾 受保护的无效应用转换(浮点插值时间,转换t){ ViewGroup.LayoutParams params=slidingPane.getLayoutParams(); int计算高度=展开高度-((int)(展开高度*插值时间)); 如果(calculatedHeight,android,android-layout,android-animation,android-linearlayout,Android,Android Layout,Android Animation,Android Linearlayout,,而不是手动更改每个动画步骤的高度,则应尝试使用更系统的动画,如ValueAnimator,或ObjectAnimator: Animation animation = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { ViewGroup.LayoutParams params
ValueAnimator
,或ObjectAnimator
:
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
ViewGroup.LayoutParams params = slidingPane.getLayoutParams();
int calculatedHeight = expandedHeight - ((int) (expandedHeight * interpolatedTime));
if (calculatedHeight <= collapsedHeight) {
calculatedHeight = collapsedHeight;
}
params.height = calculatedHeight;
slidingPane.setLayoutParams(params);
slidingPane.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
animation.setDuration(ANIMATION_DURATION);
animation.setAnimationListener(animationListener);
slidingPane.startAnimation(animation);
可以在视图上使用pivotY
/pivotY
来控制缩放动画的定位点
相关文件:
您应该尝试使用更系统的动画,如
ValueAnimator
或ObjectAnimator
,而不是手动更改每个动画步骤的高度:
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
ViewGroup.LayoutParams params = slidingPane.getLayoutParams();
int calculatedHeight = expandedHeight - ((int) (expandedHeight * interpolatedTime));
if (calculatedHeight <= collapsedHeight) {
calculatedHeight = collapsedHeight;
}
params.height = calculatedHeight;
slidingPane.setLayoutParams(params);
slidingPane.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
animation.setDuration(ANIMATION_DURATION);
animation.setAnimationListener(animationListener);
slidingPane.startAnimation(animation);
可以在视图上使用pivotY
/pivotY
来控制缩放动画的定位点
相关文件:
尝试在动画中设置插值器,如:animation.setInterpolator(new LinearInterpolator());@Mehta你能发布整个代码吗?我对这一行不太了解:)检查此扩展动画:@Mehta我使用了上述代码,但它的性能比我的差。请尝试在动画中设置插值器,如:animation.setInterpolator(new LinearInterpolator());@Mehta你能发布整个代码吗?我对这一行没什么概念:)检查这个扩展动画:@Mehta我使用了上面提到的代码,但它的性能比我的差。这会缩放布局,不会改变高度,这会导致拉伸幻灯片的可见部分,而不是动画tretching?在包含的列表中显示更多/更少的项目,而不更改其大小?它的工作原理应该与NavigationDrawer的工作原理相同,只是从下到上如果我没有弄错,NavigationDrawer动画不会更改其高度,但会滑动它(translationY),如果可以,请尝试:slidingPane.animate().translateY(0f)这将缩放布局,不会改变高度,这将导致拉伸幻灯片的可见部分,而不是拉伸?在包含的列表中显示更多/更少的项目,而不改变其大小?它的工作原理应该与NavigationDrawer的工作原理相同,只是从下到上如果我没有弄错的话,NavigationDrawer animation不会更改其高度,但会滑动它(translationY),如果可以,请尝试:slidengpane.animate().translateY(0f)