Android动画

时间:2011-07-20 09:54:12

标签: android animation

我需要为扩展LinearLayout的类指定两个动画:其中一个是平移动画(仅X轴),第二个是平移,但是使用Y轴。问题是首先必须在我按下A按钮时开始,第二个必须在我按下按钮B时开始。这是我尝试过的:

TranslateAnimation mMoveRight = new TranslateAnimation(Animation.RELATIVE_TO_SELF,     300, Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_SELF);    
TranslateAnimation mMoveDown = new TranslateAnimation(Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_SELF, 50);

mMoveRight.setDuration(6000);
mMoveDown.setDuration(1000);

AnimationSet mAnimationsSet = new AnimationSet(true);

mAnimationsSet.addAnimation(mMoveRight);
mAnimationsSet.addAnimation(mMoveDown);
mAnimationsSet.setFillEnabled(true);
mAnimationsSet.setFillAfter(true);

this.setAnimation(mAnimationsSet);
  1. 这是我的类,它扩展了LinearLayout。
  2. 动画从绘制视图开始 - 我不想要它。
  3. 我想自己运行moveRight动画,同样的moveDown动画(但是在与moveRight不同的时间)。
  4. 感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

很简单。在res / anim文件夹中创建两个.xml文件,一个xml文件将沿x轴平移,另一个xml文件将沿y轴平移。现在在onClickListener()中设置按钮A调用第一个xml文件,第二个onClickListener()为按钮B调用第二个xml文件。虽然这个过程有点长。我认为这是实现它的方法。

答案 1 :(得分:0)

AnimationSet结合了动画并并行运行它们。 您应该在自定义视图中创建2个方法,例如:

public void moveRight() {
    TranslateAnimation mMoveRight = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 300, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF);   
    mMoveRight.setDuration(6000);
    mMoveRight.setFillEnabled(true);
    mMoveRight.setFillAfter(true);
    this.startAnimation(mMoveRight);
}

...

public void moveDown() {
    TranslateAnimation mMoveDown = new TranslateAnimation(Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF, 50);
    mMoveDown.setDuration(6000);
    mMoveDown.setFillEnabled(true);
    mMoveDown.setFillAfter(true);
    this.startAnimation(mMoveDown);
}

有了这个,你就可以点击按钮开始动画(单独向下和向右动画)。

CustomLinearLayout testLayout = ...; // initialize your layout

buttonA.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      testLayout.moveRight();
    }
});

buttonA.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
      testLayout.moveDown();
    }
});

P.S。:如果他们的工作正常,我还没有对您的翻译动画进行过测试,只是为您提供了一个想法。