将扩展动画添加到 LinearLayout?
Add exapanding animation to a LinearLayout?
实际上在我的应用程序中,如果我单击 按钮,LinearLayout
set onCreate
at "height:0
" 设置为 "height:630
" 但没有任何动画,它立即出现,所以不太好看。
我怎样才能给它添加任何动画,比如它正在弹跳或刚好出现?
这是我的 onClick
代码,其中我将高度设置为布局
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
if(params.height == 0) {
params.height = 630;
recyclerContainner.setLayoutParams(params);
}else {
params.height = 0;
recyclerContainner.setLayoutParams(params);
}
}
});
我也尝试过使用 BounceIterpolator 对其进行动画处理,但它只是对 LinearLayout 中的内容进行动画处理,而不是调整其大小
这是它的代码
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
if(params.height == 0) {
params.height = 630;
recyclerContainner.setLayoutParams(params);
BounceInterpolator bounceInterpolator = new BounceInterpolator();
ObjectAnimator anim = ObjectAnimator.ofFloat(recyclerContainner, "translationY", 100f, 0 );
anim.setInterpolator(bounceInterpolator);
anim.setDuration(1100).start();
}else {
params.height = 0;
recyclerContainner.setLayoutParams(params);
}
}
});
试试这个:
在创建集上:
recyclerContainer.animate().scaleY(0.0f).setDuration(0);
点击:
recyclerContainer.animate().scaleY(1.0f).setDuration(500);
编辑:这需要 recyclerContainer
的初始高度为 630 高度或 "popped up" 高度应该是什么,如果初始高度为 0,则 0 的缩放将导致 0 :)
编辑:
新的点击代码:
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isUp) {
recyclerContainer.animate().scaleY(0.0f).setDuration(500);
isUp = false;
}else {
recyclerContainer.animate().scaleY(1.0f).setDuration(500);
isUp = false;
}
}
});
其中“isUp 是一个布尔值,您在 onCreate 中设置 scaleY 后最初声明为 false。
我觉得对你来说有点困难,在执行转换的同时对其进行动画处理,不是吗?
我建议你使用this library.
一个 android 库,它带来了带有各种动画的可扩展布局。您可以包含可选内容并在任何地方使用。
希望对您有所帮助,如果不是您的答案请忽略。
实际上在我的应用程序中,如果我单击 按钮,LinearLayout
set onCreate
at "height:0
" 设置为 "height:630
" 但没有任何动画,它立即出现,所以不太好看。
我怎样才能给它添加任何动画,比如它正在弹跳或刚好出现?
这是我的 onClick
代码,其中我将高度设置为布局
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
if(params.height == 0) {
params.height = 630;
recyclerContainner.setLayoutParams(params);
}else {
params.height = 0;
recyclerContainner.setLayoutParams(params);
}
}
});
我也尝试过使用 BounceIterpolator 对其进行动画处理,但它只是对 LinearLayout 中的内容进行动画处理,而不是调整其大小
这是它的代码
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ViewGroup.LayoutParams params = recyclerContainner.getLayoutParams();
if(params.height == 0) {
params.height = 630;
recyclerContainner.setLayoutParams(params);
BounceInterpolator bounceInterpolator = new BounceInterpolator();
ObjectAnimator anim = ObjectAnimator.ofFloat(recyclerContainner, "translationY", 100f, 0 );
anim.setInterpolator(bounceInterpolator);
anim.setDuration(1100).start();
}else {
params.height = 0;
recyclerContainner.setLayoutParams(params);
}
}
});
试试这个:
在创建集上:
recyclerContainer.animate().scaleY(0.0f).setDuration(0);
点击:
recyclerContainer.animate().scaleY(1.0f).setDuration(500);
编辑:这需要 recyclerContainer
的初始高度为 630 高度或 "popped up" 高度应该是什么,如果初始高度为 0,则 0 的缩放将导致 0 :)
编辑: 新的点击代码:
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isUp) {
recyclerContainer.animate().scaleY(0.0f).setDuration(500);
isUp = false;
}else {
recyclerContainer.animate().scaleY(1.0f).setDuration(500);
isUp = false;
}
}
});
其中“isUp 是一个布尔值,您在 onCreate 中设置 scaleY 后最初声明为 false。
我觉得对你来说有点困难,在执行转换的同时对其进行动画处理,不是吗?
我建议你使用this library.
一个 android 库,它带来了带有各种动画的可扩展布局。您可以包含可选内容并在任何地方使用。
希望对您有所帮助,如果不是您的答案请忽略。