我有一个RelativeLayout(垂直)定义为包含3个视图。顶视图和底视图高16像素,并显示文本。中间视图显示游戏应用程序的图形。
在游戏过程中的各个阶段,应用程序运行TranslateAnimation,有效地“向上或向下滚动”中间视图。这使游戏中的游戏角色在中间视图中“居中”。
我的问题是,当动画运行时,翻译会导致顶视图或底视图被覆盖。这仅持续动画的持续时间。当animcation完成时,一切都很好,顶部/底部视图按预期显示其文本。令我感到惊讶的是,翻译动画显示正在运行的(中)视图之外的内容。我的愿望是,当翻译向上/向下滑动显示时,动画只会影响中间视图,并且不会遮挡顶视图或底视图中的内容。
以下是我用来创建布局的代码。自定义视图直接来自View并在其onDraw(Canvas)方法中显示内容。
RelativeLayout rl = new RelativeLayout(this);
topView = new MyTextView(this);
topView.setId(1);
middleView = new MyGameView(this);
middleView.setId(2);
bottomView = new MyTextView(this);
bottomView.setId(3);
final int textSize = 16;
RelativeLayout.LayoutParams lpTop = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, textSize);
lpTop.addRule(RelativeLayout.ALIGN_PARENT_TOP);
RelativeLayout.LayoutParams lpBottom = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, textSize);
lpBottom.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
RelativeLayout.LayoutParams lpMiddle = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
lpMiddle.addRule(RelativeLayout.BELOW, 1);
lpMiddle.addRule(RelativeLayout.ABOVE, 3);
rl.addView(topView, lpTop);
rl.addView(middleView, lpMiddle);
rl.addView(bottomView, lpBottom);
setContentView(rl);
启动动画的middleView中的代码如下:
TranslateAnimation ta = new TranslateAnimation(0, 0, 0, yDistance);
ta.setDuration(500);
startAnimation(ta);
我已经尝试过许多方法让这个动画按照需要运行,但一直无法做到。希望有人可以提供帮助。提前谢谢。