移动动画(平移动画)
Move animation (Translate animation)
我有这样的布局:
<LinearLayout
android:id="@+id/buttonLayout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnNl"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnOrange"
android:layout_marginRight="5.50dp" />
<Button
android:id="@+id/btnNoLanguage"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnWhite"
android:layout_marginRight="5.50dp" />
<Button
android:id="@+id/btnFr"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnGreen" />
像这样的代码:
void HandleBtnNlClick (object sender, EventArgs e)
{
controller.SaveSetting("language","nl");
TranslateAnimation anim2 = new TranslateAnimation(0,-((int)(btnFr.GetX() - btnNoLanguage.GetX())), 0, 0);
anim2.Duration = 1000;
anim2.FillAfter = true;
TranslateAnimation anim1 = new TranslateAnimation(0, btnNoLanguage.GetX()-btnNl.GetX(), 0, 0);
anim1.Duration = 1000;
anim1.FillAfter = true;
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
//_initModel.gotoNextScreen ();
}
void HandleBtnFrClick (object sender, EventArgs e)
{
controller.SaveSetting("language","fr");
TranslateAnimation anim1 = new TranslateAnimation(0, btnNoLanguage.GetX()-btnNl.GetX(), 0, 0);
anim1.Duration = 1000;
anim1.FillAfter = true;
TranslateAnimation anim2 = new TranslateAnimation(0,-((int)(btnFr.GetX() - btnNoLanguage.GetX())), 0, 0);
anim2.Duration = 1000;
anim2.FillAfter = true;
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
}
当 btnFr 被推入时,btnFr 和 BtnNl 必须移动到中间
(noLanguageBtn 所在的位置)。
一切正常,唯一的问题是当 BtnFr 被推送时,
它必须移动到 BtnNl 之上。当 BtnNl 被推送时,它必须移动到 BtnFr 之上。我怎样才能做到这一点?目前 btnFr 总是在 BtnNl 之上
因为它稍后在布局中定义...
在动画结束时使用它
BtnNl.bringToFront()
编辑
试试这个:
在代码的第一部分,当 BTN1 单击时,而不是
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
像这样翻转顺序
btnFr.StartAnimation (anim2);
btnNl.StartAnimation (anim1);
我有这样的布局:
<LinearLayout
android:id="@+id/buttonLayout"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnNl"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnOrange"
android:layout_marginRight="5.50dp" />
<Button
android:id="@+id/btnNoLanguage"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnWhite"
android:layout_marginRight="5.50dp" />
<Button
android:id="@+id/btnFr"
android:layout_width="65dp"
android:layout_height="65dp"
android:background="@drawable/splashBtnGreen" />
像这样的代码:
void HandleBtnNlClick (object sender, EventArgs e)
{
controller.SaveSetting("language","nl");
TranslateAnimation anim2 = new TranslateAnimation(0,-((int)(btnFr.GetX() - btnNoLanguage.GetX())), 0, 0);
anim2.Duration = 1000;
anim2.FillAfter = true;
TranslateAnimation anim1 = new TranslateAnimation(0, btnNoLanguage.GetX()-btnNl.GetX(), 0, 0);
anim1.Duration = 1000;
anim1.FillAfter = true;
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
//_initModel.gotoNextScreen ();
}
void HandleBtnFrClick (object sender, EventArgs e)
{
controller.SaveSetting("language","fr");
TranslateAnimation anim1 = new TranslateAnimation(0, btnNoLanguage.GetX()-btnNl.GetX(), 0, 0);
anim1.Duration = 1000;
anim1.FillAfter = true;
TranslateAnimation anim2 = new TranslateAnimation(0,-((int)(btnFr.GetX() - btnNoLanguage.GetX())), 0, 0);
anim2.Duration = 1000;
anim2.FillAfter = true;
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
}
当 btnFr 被推入时,btnFr 和 BtnNl 必须移动到中间 (noLanguageBtn 所在的位置)。
一切正常,唯一的问题是当 BtnFr 被推送时, 它必须移动到 BtnNl 之上。当 BtnNl 被推送时,它必须移动到 BtnFr 之上。我怎样才能做到这一点?目前 btnFr 总是在 BtnNl 之上 因为它稍后在布局中定义...
在动画结束时使用它 BtnNl.bringToFront()
编辑 试试这个: 在代码的第一部分,当 BTN1 单击时,而不是
btnNl.StartAnimation (anim1);
btnFr.StartAnimation (anim2);
像这样翻转顺序
btnFr.StartAnimation (anim2);
btnNl.StartAnimation (anim1);