我需要为扩展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);
感谢任何帮助。
答案 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。:如果他们的工作正常,我还没有对您的翻译动画进行过测试,只是为您提供了一个想法。