我在FrameLayout内部有一个线性布局(比如A - 在右上角)。根据中心底部和底部的代码创建了一些新的线性布局。添加到相同的FrameLayout(比如l1,l2,l3 ...... l10)。宽度和宽度所有布局的高度(布局A& 10新布局)都相同。因此,在中心底部位置布局l10被显示为其最新布局添加。剩余布局将不会显示,因为它们将落后于l10。现在我想用TranslateAnimation将所有10个布局从布局B转换为布局A,我可以毫无问题地将其完成。
当第一个布局(l10)从其位置转换为布局A时,它将覆盖布局A区域,i10将立即显示在布局A上(这是预期的),并且l9将显示在底部中心位置。 但是当下一个布局(l9)翻译布局A时,它会 l10。相反它应该覆盖l10和l9现在应该在布局A区域上显示。如果有人之前遇到过这个问题,并且有相同的解决方案,请分享。
(有明确的截图但不能附加,因为我是新成员
提前致谢。
**CODE**
int numberOfCardsLeft = 10;
FrameLayout fl=(FrameLayout)findViewById(R.id.cardsFrameMainLayout);
ArrayList<LinearLayout> animationCardLayouts= new ArrayList<LinearLayout>(10);//used for animation
for(int i=0;i<10;i++) //create 10 layouts & add to FrameLayout
{
cpuPlayers.add(temp.get(i));
tempCardLayout = new LinearLayout(this);
layoutParams=new FrameLayout.LayoutParams(cardLayoutWidth,cardLayoutHeight);
layoutParams.gravity=Gravity.CENTER_HORIZONTAL|Gravity.BOTTOM;
//layoutParams.leftMargin=0;
tempCardLayout.setLayoutParams(layoutParams);
tempCardLayout.setWeightSum(10);
tempCardLayout.setOrientation(LinearLayout.VERTICAL);
tempCardLayout.setGravity(Gravity.CENTER);
//adding different childs & different background to it
animationCardLayouts.add(tempCardLayout);
fl.addView(tempCardLayout);
}
cardAnimation = new TranslateAnimation("<to fit area of Layout a>");
cardAnimation.setFillAfter(true);
cardAnimation.setDuration(900);
cardAnimation.setAnimationListener(cardAnimationListener);
animationCardLayouts.get(numberOfCardsLeft-1).startAnimation(cardAnimation);
cardAnimationListener= new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
numberOfCardsLeft--;
if(numberOfCardsLeft!=0)
{
tempCardAnimation = new TranslateAnimation("<to fit area of Layout a>");
tempCardAnimation.setFillAfter(true);
tempCardAnimation.setDuration(900);
tempCardAnimation.setAnimationListener(cardAnimationListener);
animationCardLayouts.get(numberOfCardsLeft-1).startAnimation(tempCardAnimation);
}
}
};