【问题标题】:How to make a right to left animation in a layout如何在布局中制作从右到左的动画
【发布时间】:2020-12-09 18:28:49
【问题描述】:

我遇到了从右到左滑动的问题。我通过单击按钮上的“隐藏”和“可见”布局创建它。但是现在我想要一个动画,这样当我点击按钮时,会发生“从右到左”的动画,当我再次点击按钮时,相同的布局将是“从左到右”的动画并作为幻灯片布局。

代码

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>

【问题讨论】:

标签: android animation android-animation


【解决方案1】:

此代码可能会对您有所帮助。

动画左滑:

在 res/anim/anim_left 下创建一个文件

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

动画右滑:

在 res/anim/anim_right 下创建一个文件

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

在 Activity 中用作:

Animation rightSwipe = AnimationUtils.loadAnimation(this, R.anim.anim_right);
<view>.startAnimation(rightSwipe);

【讨论】:

  • 感谢工作。但有点问题。按钮附有布局。当我点击时,从右到左工作,现在我想再次点击按钮。布局应该返回(要隐藏的当前位置)
  • 请检查先生:-- TranslateAnimation animate = new TranslateAnimation(0,-0,0,0);动画.setDuration(600); animate.setFillAfter(true); leftlayout.startAnimation(动画);我正在尝试通过动画隐藏布局,请帮助先生
  • 我们可以将两张幻灯片合二为一吗?这意味着它播放第一张幻灯片,在播放第一张幻灯片的持续时间结束后,它继续播放第二张幻灯片
  • 但我只想滑过它的宽度,我们该怎么做
  • @AbhayBohra 这应该是一个单独的问题
【解决方案2】:
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
    }

【讨论】:

    【解决方案3】:

    寻找从右到左动画的解决方案:

    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     
    

    寻找重复动画的解决方案(例如从左到右和从右到左)

    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 
    

    【讨论】:

      【解决方案4】:

      主布局和后布局是两个线性布局,点击按钮时调用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;
          }
      
      }
      

      【讨论】:

        【解决方案5】:

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

        n_pixels] &gt; 0 移动对象 LTR,n_pixels] &lt; 0 移动对象 RTL。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-30
          • 1970-01-01
          • 2019-09-27
          • 2018-09-29
          • 1970-01-01
          • 1970-01-01
          • 2021-01-26
          • 1970-01-01
          相关资源
          最近更新 更多