2016-06-18 13 views
4

機能しないと、それが上にスクロールすると、私はsetAlpha(フロート)が必要とダウン:アンドロイドsetAlphaはCollapsingToolbarLayoutのImageViewの内

これはオフセットとでフロートを計算し得るための方法であるオフセット:

AppBarLayout.OnOffsetChangedListener:

@Override 
    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { 
     float offsetAlpha = (float) (verticalOffset/appBarLayout.getTotalScrollRange()); 
     imageView.setAlpha(offsetAlpha); 
    } 

のxmlレイアウト:

<android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/collapsingToolbarLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:minHeight="50dp" 
      android:fitsSystemWindows="true" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed" 
      app:contentScrim="@android:color/transparent"> 

     <ImageView 
        android:id="@+id/imageView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_gravity="center" 
        android:scaleType="centerCrop" 
        app:layout_collapseMode="parallax" /> 

</android.support.design.widget.CollapsingToolbarLayout> 

しかし、setAlphaは機能しません。どうして?

答えて

10

計算結果が0.0または1.0です。
私は完全なスクロール領域の割合を取得することによってオフセットを計算しようとしました。

これは改善のための開始点です。

appbar.addOnOffsetChangedListener(new OnOffsetChangedListener() { 
    @Override 
    public void onOffsetChanged(final AppBarLayout appBarLayout, final int verticalOffset) { 
     float offsetAlpha = (appBarLayout.getY()/appbar.getTotalScrollRange()); 
     imageView.setAlpha(1 - (offsetAlpha * -1)); 
    } 
}) 
+0

マイナス1と掛け合わせる考えは、私にとっては魔法でした....ありがとう:) –

関連する問題