如何在布局中制作从右到左的animation

我参与了从右到左的滑动问题。 我点击button上的“隐藏”和“可见”布局创build它。 但现在我想要一个animation,所以当我点击button时,一个“从右到左”的animation将会发生,当我再次点击button时,相同的布局将是“从左到右”的animation,并作为幻灯片布局工作。

final RelativeLayout rightlayout = (RelativeLayout) findViewById(R.id.relativelayout2); rightlayout.setVisibility(View.GONE); Button rightbtn = (Button) findViewById(R.id.righttoleft); rightbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("clickecd"); if(keyright == 0) { //rightlayout.setVisibility(View.VISIBLE); keyright++; slideToLeft(rightlayout); } else { //rightlayout.setVisibility(View.GONE); TranslateAnimation animate = new TranslateAnimation(0,rightlayout.getWidth(),0,0); animate.setDuration(1000); animate.setFillAfter(true); rightlayout.startAnimation(animate); keyright--; } } }); // To animate view slide out from left to right public void slideToRight(View view){ TranslateAnimation animate = new TranslateAnimation(0,view.getWidth(),0,0); animate.setDuration(500); animate.setFillAfter(true); view.startAnimation(animate); } // To animate view slide out from right to left public void slideToLeft(View view){ TranslateAnimation animate = new TranslateAnimation(0,-view.getWidth(),0,0); animate.setDuration(500); animate.setFillAfter(true); view.startAnimation(animate); } 

XML:

 <RelativeLayout android:id="@+id/rightsidemenu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/frameLayout1" android:gravity="right" android:orientation="vertical" > <Button android:id="@+id/righttoleft" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:background="@drawable/right_switcher_expanded" /> <RelativeLayout android:id="@+id/relativelayout2" android:layout_width="50dp" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/righttoleft" android:background="#EDEEF3" android:orientation="vertical" > <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:orientation="vertical" android:padding="5dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10dp" android:background="#ffffff" android:gravity="right" android:orientation="vertical" > <FrameLayout android:id="@+id/titleframe" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#F4F4F4" android:orientation="horizontal" > <TextView android:id="@+id/firsttitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Job and Qualification" android:textColor="#56A91E" /> </FrameLayout> <FrameLayout android:id="@+id/firstframe1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/titleframe" android:layout_margin="10dp" android:orientation="horizontal" > <TextView android:id="@+id/textView81" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Highest qualification" /> <TextView android:id="@+id/higesttxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="highest qualification" /> </FrameLayout> <FrameLayout android:id="@+id/thirdff" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/firstframe1" android:layout_margin="10dp" > <TextView android:id="@+id/textView10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Occupation" /> <TextView android:id="@+id/occupationtxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="occupation" /> </FrameLayout> <FrameLayout android:id="@+id/thirdfff" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/thirdff" android:layout_marginBottom="20dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" > <TextView android:id="@+id/textView100" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CTC (Income)" /> <TextView android:id="@+id/incometxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="income" /> </FrameLayout> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="10dp" android:background="#ffffff" android:gravity="right" android:orientation="vertical" > <FrameLayout android:id="@+id/titleframe" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#F4F4F4" android:orientation="horizontal" > <TextView android:id="@+id/firsttitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="Family Info" android:textColor="#56A91E" /> </FrameLayout> <FrameLayout android:id="@+id/firstframe11" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/titleframe" android:layout_margin="10dp" android:orientation="horizontal" > <TextView android:id="@+id/textView811" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Have children" /> <TextView android:id="@+id/havechildrntxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="have children" /> </FrameLayout> <FrameLayout android:id="@+id/secondfff" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/firstframe11" android:layout_margin="10dp" > <TextView android:id="@+id/textView91" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Father Alive" /> <TextView android:id="@+id/fathrtxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Father Alive" /> </FrameLayout> <FrameLayout android:id="@+id/thirdfff" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/secondfff" android:layout_margin="10dp" > <TextView android:id="@+id/textView101" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Mother Alive" /> <TextView android:id="@+id/mothertxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Mother alive" /> </FrameLayout> <FrameLayout android:id="@+id/thirdffff" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/thirdfff" android:layout_marginBottom="10dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" > <TextView android:id="@+id/textView103" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Brother" /> <TextView android:id="@+id/brothercounttxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Brother" /> </FrameLayout> <FrameLayout android:id="@+id/thirdffff3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/thirdffff" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" > <TextView android:id="@+id/textView104" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sister" /> <TextView android:id="@+id/sistercounttxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Sister" /> </FrameLayout> </RelativeLayout> </LinearLayout> </RelativeLayout> 

Solutions Collecting From Web of "如何在布局中制作从右到左的animation"

这段代码可能对你有帮助。

animation左侧幻灯片:

  <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="100%" android:toXDelta="0%" > </translate> 

animation右滑片:

  <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="-100%" android:toXDelta="0%" > </translate> 

使用它作为:

 Animation RightSwipe = AnimationUtils.loadAnimation(Screen.this, R.anim.right_swipe); ScreenAnimation.startAnimation(RightSwipe); 
 public void slidefromRightToLeft(View view) { TranslateAnimation animate; if (view.getHeight() == 0) { main_layout.getHeight(); // parent layout animate = new TranslateAnimation(main_layout.getWidth()/2, 0, 0, 0); } else { animate = new TranslateAnimation(view.getWidth(),0, 0, 0); // View for animation } animate.setDuration(500); animate.setFillAfter(true); view.startAnimation(animate); view.setVisibility(View.VISIBLE); // Change visibility VISIBLE or GONE } 

主布局和后台布局是两个线性布局,点击button调用startanimation方法。

 boolean menuOut=false; public void startAnimation() { Animation anim; int w = mainLayout.getMeasuredWidth(); int h = mainLayout.getMeasuredHeight(); int left = (int) (mainLayout.getMeasuredWidth() * 0.80); if(!menuOut) { anim = new TranslateAnimation(0, -left, 0, 0); backLayout.setVisibility(View.VISIBLE); animParams.init(-left, 0, -left + w, h); } else { anim = new TranslateAnimation(0, left, 0, 0); animParams.init(0, 0, w, h); } anim.setDuration(400); anim.setAnimationListener(Sample.this); anim.setFillAfter(true); mainLayout.startAnimation(anim); } 

AnimParams.java

 public class AnimParams { int left, right, top, bottom; void init(int left, int top, int right, int bottom) { this.left = left; this.top = top; this.right = right; this.bottom = bottom; } } 

解决scheme为那些正在寻找从右到左的animation:

 TranslateAnimation animation1 = new TranslateAnimation(0.0f, 0.0f, 1500.0f, 0.0f); // new TranslateAnimation(xFrom,xTo, yFrom,yTo) animation1.setDuration(1500); // animation duration animation1.setRepeatCount(4); // animation repeat count if u want to repeat animation1.setFillAfter(true); your_view .startAnimation(animation);//your_view for mine is imageView 

解决scheme为那些正在寻找重复的animation(例如从左到右,从右到左)

 TranslateAnimation animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 1500.0f); // new TranslateAnimation (float fromXDelta,float toXDelta, float fromYDelta, float toYDelta) animation.setDuration(1500); // animation duration animation.setRepeatCount(8); // animation repeat count animation.setRepeatMode(2); // repeat animation (left to right, right to left) animation.setFillAfter(true); your_view.startAnimation(animation);//your_view for mine is imageView 

你也可以使用animate().translationXBy([n_pixels]f )。

其中n_pixels] > 0移动对象LTR, n_pixels] < 0移动对象RTL。