2016-05-06 2 views
0

あなたは添付のコードで見ることができるように、linearLayoutLogoProgressBarTextViewが含まれているとlinearLayoutReadingImageViewTextViewが含まれています。 linearLayoutReadingが表示されると、2つのレイアウトはandroid:layout_centerInParent="true"のために中心点の周りに位置が変わります。アニメーション化する際に再配置するビュー

linearLayoutLogoをアニメーション化して、linearLayoutReadingが表示される前に新しい位置に上に移動するにはどうすればよいですか?添付のvideo for an exampleをご覧ください。

activity_main.xml

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_centerInParent="true" 
    android:gravity="center"> 

    <LinearLayout 
     android:id="@+id/linearLayoutLogo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:gravity="center"> 

     <ImageView 
      android:id="@+id/imageViewRLogo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_accessibility_black_24dp" 
      android:padding="8dp"/> 

     <TextView 
      android:id="@+id/textViewAppTitle2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="34sp" 
      android:textColor="#CCFFFFFF" 
      android:text="AppName"/> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutReading" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:paddingTop="24dp"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      style="@style/Base.TextAppearance.AppCompat.Large" 
      android:text="Reading from device" 
      android:textColor="#BF000000" /> 
     <ProgressBar 
      android:id="@+id/progressBarSplash" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" 
      android:paddingBottom="8dp"/> 

    </LinearLayout> 

</LinearLayout> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 
public ProgressBar progressBarSplash; 
public LinearLayout linearLayoutReading; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    linearLayoutReading = (LinearLayout)findViewById(R.id.linearLayoutReading); 
    linearLayoutReading.setVisibility(View.GONE); 

    new CountDownTimer(5000, 1000) { 

     public void onTick(long millisUntilFinished) { 
     } 

     public void onFinish() { 
      linearLayoutReading.setVisibility(View.VISIBLE); 
      progressBarSplash = (ProgressBar)findViewById(R.id.progressBarSplash); 
      progressBarSplash.setEnabled(true); 
      progressBarSplash.setIndeterminate(true); 
     } 
    }.start(); 
} 
} 
+0

あなたは 'android:animateLayoutChanges =" true "'を使ってみましたか? –

答えて

2

は、Android Studioの上でそれをテストされています。最上部にandroid:animateLayoutChanges="true"を含めてください。LinearLayoutcenterInParentの要素を含むもの)。

+0

それは実際には驚くべきことです。 1つのラインは、私が何をしていたかを正確に実現します!どうもありがとうございました。 –

+0

私が最初にそれに遭遇したときの私のまったく同じ反応。乾杯! :D –