2017-02-09 41 views
1

因此,我一直試圖從另一個相對佈局向下/向上調整較小的相對佈局。將相對佈局動畫化爲向下/向上移動,如小吃店

我用this希望試圖解決我的問題。我正在考慮做一些像小吃店那樣的東西,但我仍然想爲它添加一個圖像,這可能完全是一個問題。想法? 這裏是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_log_in" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.esole.lithouse.SignUp" 
android:background="#E6E6E6"> 

<android.support.v7.widget.Toolbar 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="?attr/colorPrimary" 
    android:theme="?attr/actionBarTheme" 
    android:minHeight="?attr/actionBarSize" 
    android:id="@+id/logInBar" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" 
    app:title="Log In" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:layout_marginTop="83dp" 
    android:id="@+id/editTextUsernameOrEmail" 
    android:imeOptions="actionNext" 
    android:layout_below="@+id/logInBar" 
    android:layout_centerHorizontal="true" 
    android:hint="username or email " /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:ems="10" 
    android:imeOptions="actionDone" 
    android:layout_centerVertical="true" 
    android:id="@+id/passwordLogIn" 
    android:hint="password " 
    android:layout_alignEnd="@+id/editTextUsernameOrEmail" /> 

<Button 
    android:text="Log In" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/LogIn" 
    android:layout_above="@+id/statusIndicator" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="67dp" /> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="75dp" 
    android:background="#006D6D" 
    android:id="@+id/statusIndicator" 
    android:animateLayoutChanges="true" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/indicatorStatusLabel" 
     android:layout_alignParentEnd="true" 
     android:layout_toEndOf="@+id/imageView4" 
     android:layout_alignTop="@+id/imageView4" 
     android:layout_alignBottom="@+id/imageView4" 
     android:textAlignment="center" 
     android:textSize="24sp" 
     android:text="test " 
     android:typeface="normal" 
     android:lineSpacingExtra="24sp" 
     android:layout_marginRight="67dp" /> 

    <ImageView 
     android:layout_width="50dp" 
     android:layout_height="50dp" 
     app:srcCompat="@drawable/refresh" 
     android:id="@+id/imageView4" 
     android:layout_marginStart="16dp" 
     android:layout_centerVertical="true" 
     android:layout_alignParentStart="true" /> 
</RelativeLayout> 

下面是一些我曾嘗試使用代碼:

slideInAndOut = (RelativeLayout) findViewById(R.id.statusIndicator); 
TranslateAnimation slide = new TranslateAnimation(0, 0, 0, -slideInAndOut.getHeight()); 
slide.setDuration(1000); 
slide.setFillAfter(true); 
slideInAndOut.startAnimation(slide); 
slide = new TranslateAnimation(0, 0, slideInAndOut.getHeight(), 0); 
slide.setDuration(1000); 
slide.setFillAfter(true); 
+0

什麼,當你嘗試發生了什麼? –

+0

對於延遲抱歉,它目前設置爲相對佈局的底部。所以當我添加代碼片段來移動它時。它仍然沒有移動。這是我帶來的。 –

+0

我的答案將工作!但你最好弄清楚什麼'Methods.'在原來的答案 –

回答

2

首先,你應該在你的imageView

使用 android:src代替 app:srcCompat

TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)是他正在使用的旁邊!

二本將工作

slideInAndOut = (RelativeLayout) findViewById(R.id.statusIndicator); 
TranslateAnimation slide = new TranslateAnimation(0, 0, 0, -slideInAndOut.getHeight()); 
slide.setDuration(1000); 
slide.setFillAfter(true); 
slideInAndOut.startAnimation(slide); 
slide = new TranslateAnimation(0, 0, 100, 0); // seems you have a problem with 3rd param 
slide.setDuration(1000); 
slide.setFillAfter(true); 
slideInAndOut.startAnimation(slide); 

-----等待,你會看到一個代碼的重複出現。再檢查一遍!

只有這個就夠了!

TranslateAnimation slide = new TranslateAnimation(0, 0, 100, 0); 
slide.setDuration(1000); 
slide.setFillAfter(true); 
slideInAndOut.startAnimation(slide); 

要添加更多值,我修改了一下代碼。 (現在這個觀點上來了,並再次肯定會下降,如果你只需要一個TranslateAnimation你不需要兩個!)

// goes up 
TranslateAnimation slide = new TranslateAnimation(0, 0, 100,0); 
slide.setDuration(1000); 
slide.setFillAfter(true); 
slideInAndOut.startAnimation(slide); 

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // goes down 
     TranslateAnimation slide = new TranslateAnimation(0, 0,0,100); 
     slide.setDuration(1000); 
     slide.setFillAfter(true); 
     slideInAndOut.startAnimation(slide); 
    } 
}, 3000);