【发布时间】:2014-02-18 16:07:23
【问题描述】:
我有 3 个在向左填充时动画的 ImageButton,如下所示:
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
ImageButton top;
ImageButton left;
ImageButton right;
top = meMap.get("top");
left = meMap.get("left");
right = meMap.get("right");
goLeft =
new TranslateAnimation(0, -(top.getLeft() - left.getLeft()), 0, -(top.getTop() - left.getTop()));
goRight =
new TranslateAnimation(0, -(left.getLeft() - right.getLeft()), 0, -(left.getTop() - right.getTop()));
goTopFromRight =
new TranslateAnimation(0, top.getLeft() - right.getLeft(), 0, top.getTop() - right.getTop());
goRight.setAnimationListener(this);
if (velocityX<-500)
{
System.out.println("aaaa "+"ScrollLeft");
goLeft.setDuration(500);
goLeft.setFillAfter(true);
goLeft.setFillAfter(true);
top.startAnimation(goLeft);
goRight.setDuration(500);
goRight.setFillAfter(true);
goRight.setFillAfter(true);
left.startAnimation(goRight);
goTopFromRight.setDuration(500);
goTopFromRight.setFillAfter(true);
goTopFromRight.setFillAfter(true);
right.startAnimation(goTopFromRight);
}
现在,我有一个这样的 onanimationEnd 监听器:
public void onAnimationEnd(Animation animation) {
ImageButton top;
ImageButton left;
ImageButton right;
top = meMap.get("top");
left = meMap.get("left");
right = meMap.get("right");
top.clearAnimation();
left.clearAnimation();
right.clearAnimation();
RelativeLayout.LayoutParams layoutLeft =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutLeft.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.CenterTextView);
layoutLeft.addRule(RelativeLayout.LEFT_OF,R.id.CenterTextView);
top.setLayoutParams(layoutLeft);
RelativeLayout.LayoutParams layoutRight =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutRight.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.CenterTextView);
layoutRight.addRule(RelativeLayout.RIGHT_OF,R.id.CenterTextView);
left.setLayoutParams(layoutRight);
RelativeLayout.LayoutParams layoutTop =
new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutTop.addRule(RelativeLayout.CENTER_VERTICAL,RelativeLayout.TRUE);
layoutTop.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);
right.setLayoutParams(layoutTop);
meMap.put("top", right);
meMap.put("left", top);
meMap.put("right", left);
}
问题是当我做动画时(除了 goRight),我的图标会闪烁一会儿。我不知道如何解决这个问题。请帮忙。
【问题讨论】: