2016-06-17 34 views
0

我正在開發一個Android應用程序,其中一個垂直中央視圖應該從中心到屏幕頂部進行動畫製作。在此視圖下方是包含相關內容的另一個視圖,該視圖直接位於中心視圖下方。當中心視圖動畫時,我希望較低的視圖被固定到頂部,但也要在屏幕的底部(按照layout_alignParentBottom =「true」)。目前,雖然,作爲底部的觀點激發了一個缺口底部視圖和屏幕底部之間留有:Android:RelativeLayout translateY animation with layout_alignParentBottom

enter image description here

什麼是動畫底視圖最簡單的方法,同時保持它釘在底部屏幕?

這裏是我的佈局XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="newsoni.com.testrelativelayouttranslation.MainActivity"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="20dp" 
     android:background="#FF0000" 
     android:layout_centerVertical="true" 
     android:id="@+id/centerBar" /> 
    <View 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:background="#00FF00" 
     android:layout_below="@+id/centerBar" 
     android:id="@+id/bottomPanel" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Do animation" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:id="@+id/btn" /> 

</RelativeLayout> 

這裏是我的Java:

public class MainActivity extends AppCompatActivity { 

    private View mCenter, mBottomPanel; 
    private Button mBtn; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mCenter = findViewById(R.id.centerBar); 
     mBottomPanel = findViewById(R.id.bottomPanel); 
     mBtn = $(R.id.btn); 

     mBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       int value = mCenter.getTranslationY() == 0 ? -mCenter.getTop() : 0; 
       mCenter.animate() 
         .translationY(value) 
         .setDuration(250) 
         .start(); 
       mBottomPanel.animate() 
         .translationY(value) 
         .setDuration(250) 
         .start(); 
      } 
     }); 

    } 

    @SuppressWarnings("unchecked") 
    public <T extends View> T $(int id) { 
     return (T) findViewById(id); 
    } 
} 

下面是該項目的鏈接,你可以下載:

https://drive.google.com/file/d/0B-mqMIMqm_XHamxENkhIZDJDMHM/view?usp=sharing

回答

0

我結束了使用標準Animation和覆蓋applyTransformation手動更改底視圖的LayoutParams