グリッドビュー上に浮かぶいくつかのテキストビューを含む相対レイアウトがあります。グリッド内の項目を選択すると、レイアウトが画面のほぼ最後まで移動し、約 1/5 しか表示されません。これは、単純な変換アニメーションを使用して行われます。グリッド内の別のボタンをクリックすると、グリッドビューの上の元の位置に戻るために相対レイアウトが必要になります。Translate Animation でもこれを行いましたが、これは起こりつつありますが、折りたたまれたときに表示されていた RelativeLayout の部分のみが移動 (移動) し、アニメーションが終了した後に他の部分が表示されます。これは本当に醜く見えます。
Android は、画面に表示されていないビューの部分を描画しないことを知っています。完全な部分を強制的に描画する方法はありますか?
私のアニメーションコードは以下のとおりです。
public void smoothExpanderAnimate(final int finalTarget,final RelativeLayout expander,final int animateToY,final boolean setExpanded,final boolean refreshGrid)
{
final RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams)expander.getLayoutParams();
TranslateAnimation anim = new TranslateAnimation(0f, 0f, 0f, animateToY);
anim.setDuration(400);
//timeListHeight = list.getHeight();
//anim.setFillAfter(true);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//Should I try something here ?
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
head_params.topMargin = finalTarget;
expander.clearAnimation();
expander.setLayoutParams(head_params);
isExpanded = setExpanded;
isAnimating = false;
if(!setExpanded)
{
setChildHeight(timeListHeight, list);
}
}
});
isAnimating = true;
expander.startAnimation(anim);
}