2016-04-26 4 views
2

現在、次の手法を使用して、フッタービューのスライドアップアニメーションを実行します。ビュースライドアップアニメーションを実行するときに不要な白い矩形が表示される理由

// Start the animation. 
ViewPropertyAnimator.animate(view).setStartDelay(2000).setDuration(2000).translationY(0).alpha(1.0f).setListener(new Animator.AnimatorListener() { 

    @Override 
    public void onAnimationStart(com.nineoldandroids.animation.Animator animation) { 
     ViewHelper.setTranslationY(view, view.getHeight()); 
     ViewHelper.setAlpha(view, 0.0f); 
     view.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onAnimationEnd(com.nineoldandroids.animation.Animator animation) { 
     view.setVisibility(View.VISIBLE); 
    } 

    @Override 
    public void onAnimationCancel(com.nineoldandroids.animation.Animator animation) { 

    } 

    @Override 
    public void onAnimationRepeat(com.nineoldandroids.animation.Animator animation) { 

    } 
}); 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1"> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#ff0000" 
      android:requiresFadingEdge="none" 
      android:scrollbars="vertical" 
      android:paddingTop="@dimen/default_tab_layout_height" 
      android:clipToPadding="false" /> 

     <LinearLayout 
      android:paddingTop="@dimen/default_tab_layout_height" 
      android:id="@android:id/empty" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center" 
      android:orientation="vertical"> 

      <ProgressBar 
       android:id="@+id/progress_bar" 
       style="?android:attr/progressBarStyleLarge" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 

      <LinearLayout 
       android:id="@+id/not_found_linear_layout" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:orientation="vertical" 
       android:visibility="gone" > 
       <TextView android:textColor="?attr/dimForeground" android:textSize="44sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sorry" /> 
       <TextView android:textColor="?attr/dimForeground" android:textSize="16sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/no_buy_data_found" /> 
      </LinearLayout> 

     </LinearLayout> 
    </FrameLayout> 

    <LinearLayout 
     android:id="@+id/touch_delegate_linear_layout" 
     android:orientation="vertical" 
     android:background="@android:color/transparent" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <LinearLayout 
      android:id="@+id/footer_linear_layout" 
      android:layout_width="match_parent" 
      android:layout_height="48dp" 
      android:background="?attr/buyPortfolioFooterLinearLayoutBackground" 
      android:gravity="center_vertical" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/footer_label_text_view" 
       android:text="@string/buy_portfolio_value" 
       android:layout_width="0dp" 
       android:width="0dp" 
       android:layout_weight="1" 
       android:layout_height="match_parent" 
       android:layout_gravity="center_vertical" 
       android:paddingLeft="5dp" 
       android:textColor="?attr/buyPortfolioFooterTextViewColor" 
       android:textSize="18sp" 
       android:gravity="left|center_vertical" 
       android:background="?attr/buyPortfolioFooterTextViewSelector" /> 

      <View 
       android:layout_width="1px" 
       android:layout_height="match_parent" 
       android:layout_marginTop="12dp" 
       android:layout_marginBottom="12dp" 
       android:background="?attr/buyPortfolioFooterDividerColor" /> 

      <TextView 
       android:id="@+id/footer_value_text_view" 
       android:layout_width="0dp" 
       android:width="0dp" 
       android:layout_weight="1" 
       android:layout_height="match_parent" 
       android:layout_gravity="center_vertical" 
       android:paddingRight="8dp" 
       android:textColor="?attr/buyPortfolioFooterTextViewColor" 
       android:textSize="18sp" 
       android:gravity="right|center_vertical" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#ff000000" 
      android:gravity="center_vertical" 
      android:orientation="horizontal" > 

      <TextSwitcher 
       android:id="@+id/status_bar" 
       android:width="0dp" 
       android:layout_width="0dp" 
       android:layout_weight="0.5" 
       android:layout_height="wrap_content" 
       android:paddingLeft="5dp" 
       android:layout_marginTop="2dp" 
       android:layout_marginBottom="2dp" 
       android:background="@android:color/transparent" /> 

      <LinearLayout 
       android:id="@+id/currency_exchange_linear_layout" 
       android:background="?attr/buyPortfolioCurrencyExchangeLinearLayoutSelector" 
       android:gravity="right" 
       android:orientation="horizontal" 
       android:width="0dp" 
       android:layout_width="0dp" 
       android:layout_weight="0.5" 
       android:paddingRight="5dp" 
       android:paddingTop="2dp" 
       android:paddingBottom="2dp" 
       android:layout_height="wrap_content"> 
       <TextSwitcher 
        android:id="@+id/currency_exchange_rate_text_switcher" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@android:color/transparent" /> 
       <TextView 
        android:id="@+id/to_currency_text_view" 
        android:textColor="?attr/buyPortfolioStatusBarTextViewColor" 
        android:background="@android:color/transparent" 
        android:textSize="12sp" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
       <TextSwitcher 
        android:id="@+id/currency_pair_text_switcher" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@android:color/transparent" /> 
      </LinearLayout> 
     </LinearLayout> 

    </LinearLayout> 
</LinearLayout> 

次のアニメーションがfooter_linear_layout

上で実行されているようなレイアウトのためのXMLがある。ここのアニメーションの結果である - https://youtu.be/r1zQKpj2HVo

あなたが見ることができるように下のフッタービューが上にスライドしているとき、不要な白い矩形があります。

白い矩形がどこから来ているのですか?私はそれを避ける方法を知っていてもいいですか?

答えて

1

フッターの下に何もなかったので。だからそれが滑り落ちたとき、あなたは空白の領域を持っています。その下にデータが必要になるのを避けるためには、上記のコンテンツを縮小した後に成長させる必要があります。あなたがそれをしたいのであれば、私はコーディネーターを真剣に見て、仕事の一部をやさしくします。

+0

ルート 'LinearLayout'を 'CoordinatorLayout'に置き換えるのが素早いです。しかし、結果は有望ではありません - http://i.imgur.com/UbDsGRU.pngこれは、私は 'CoordinatorLayout'のカスタム動作を定義する必要があるからですか?申し訳ありませんが、私はCoordinatorLayoutに慣れていません。 –

1

アニメーションが始まる前にビューがGONEだったと思いますか?そしてアニメーションを開始するにあたっては、view.setVisibility(View.VISIBLE);はAndroidにそれのためのスペースを作成し、もう1つのビューを小さくしました(体重が1で高さが0のため、あなたのケースではFrameLayout)。スペースを取り除くには、とFrameLayoutを重複させる必要があります。たぶんFrameLayoutかそのようなものの中のそのビューを移動する

関連する問題