ToolBarは、ScrollViewのスクロールに伴って透明度を変更します.
2599 ワード
リスニングコールバックを使用して、scrollY/(screen_height/3 f)に従ってalphaを設定します.ScrollViewでプロパティを設定する:android:clipToPadding=「false」//このコントロールの描画範囲がpadding内にあるかどうか(false:描画時に範囲がpaddingを考慮し、内側にインデントする)android:clipChildren=「false」//サブコントロールがpaddingの領域を超えているかどうか(ScrollViewが上にスライドするとchildはその領域からスライドできます)
1.xml構造
2.カスタムMyScrollViewでScrollViewスライドの距離を取得し、スライドに伴うalpha値を距離/画面の高さの割合で算出し、リスニングコールバックを設定します.MyScrollViewのキーコードは次のとおりです.
3.インタフェースでtoolbarに透明度を設定する
4.xmlファイルでMyScrollViewにプロパティを設定する:android:clipToPadding="false"//このコントロールの描画範囲がpadding内にあるかどうか(false:描画時に範囲がpadding、すなわち奥へインデントすることを考慮する)android:clipChildren="false"//サブコントロールがpaddingの領域を超えることができるかどうか(ScrollViewが上へスライドするとchildはその領域からスライドすることができる)ScrollViewのスライドを避けると、Toolbarの部分に白い領域が表示されます.
1.xml構造
....
2.カスタムMyScrollViewでScrollViewスライドの距離を取得し、スライドに伴うalpha値を距離/画面の高さの割合で算出し、リスニングコールバックを設定します.MyScrollViewのキーコードは次のとおりです.
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
//1. ScrollView Y
int scrollY = getScrollY();
//2.
int heightPixels = getContext().getResources().getDisplayMetrics().heightPixels;
//3. , scrollY < 1/3 ,
float v = heightPixels / 3f;
//4.
float v1 = scrollY / v;//(0-1)
//5. 1-0
float alpha = 1 - v1;
//7.
if(listener!=null){
if(scrollY <= v){
listener.onTranlucent(alpha);
}
}
}
//6.
private TranslucentListener listener;
public void setListener(TranslucentListener listener) {
this.listener = listener;
}
public interface TranslucentListener{
/**
*
* @param alpha 0~1
*/
public void onTranlucent(float alpha);
}
3.インタフェースでtoolbarに透明度を設定する
public class ScrollToolBarActivity extends AppCompatActivity implements MyScrollView.TranslucentListener {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll_tool_bar);
// myScrollView
MyScrollView myScrollView = findViewById(R.id.scv);
myScrollView.setListener(this);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public void onTranlucent(float alpha) {
// toolbar ScrollView
toolbar.setAlpha(alpha);
}
}
4.xmlファイルでMyScrollViewにプロパティを設定する:android:clipToPadding="false"//このコントロールの描画範囲がpadding内にあるかどうか(false:描画時に範囲がpadding、すなわち奥へインデントすることを考慮する)android:clipChildren="false"//サブコントロールがpaddingの領域を超えることができるかどうか(ScrollViewが上へスライドするとchildはその領域からスライドすることができる)ScrollViewのスライドを避けると、Toolbarの部分に白い領域が表示されます.