ToolBar随ScrollView的滚动改变透明度
16lz
2021-01-26
使用到监听回调,根据scrollY/(screen_height/3f)设置alpha,在ScrollView中设置属性:
android:clipToPadding="false"//该控件的绘制范围是否在padding里面(false:绘制的时候范围会考虑padding,即往里面缩进)
android:clipChildren="false"//子控件是否能超出padding的区域(ScrollView向上滑动时,child可以滑出该区域)
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的部分出现白色区域。
更多相关文章
- Android(安卓)开源框架ActionBarSherlock 和 ViewPager 仿网易新
- Android编程: 界面组成、事件监听器
- Android(安卓)RecyclerView 设置item之间的间距
- Android编程之Android(安卓)Permission 中英对照大全
- android listview判断上滑还是下滑
- Android(安卓)应用内切换语言 实现多语言功能
- Android卡片组件(CardView)
- android通过线程实现逐行显示信息
- Android实现短信验证码获取自动填写功能(详细版)