需求描述
最近项目中有这样一个需求,页面有titlebar和scrollowview两部分,在titlebar的下边有一个头像,随着scrollowview的滑动,头像要缩放到固定大小然后停留在titlebar上不动了。
问题分析
首先这个需求并不陌生,类似于悬浮按钮。但是不同的是有缩放。如果将这个图片放在scrollview中的话,随着scrollview的滑动,图片是从titlebar的下边走了,被titlebar遮盖了。所以说我们要把图片放在和titlebae,scrollview平级的位置上。通过对scrollowview的changelistener的监听来改变图片的位置和大小。
代码实现
投机取巧,通过改变padding的方式来改变view的位置和大小
scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if(top <=0){
top = rl_userhead.getPaddingTop();
bottom = rl_userhead.getPaddingBottom();
right = rl_userhead.getPaddingRight();
titleHeight = DensityUtil.dip2px(MainActivity.this,44);
small_top = DensityUtil.dip2px(MainActivity.this,9);
small_bottom = DensityUtil.dip2px(MainActivity.this,55);
small_right = DensityUtil.dip2px(MainActivity.this,21);
}
Log.e("输出y:",String.valueOf(scrollY));
Log.e("输出:",String.valueOf(scrollY/44.0));
if(scrollY<=0){
rl_userhead.setPadding(rl_userhead.getPaddingLeft(),top,right,bottom);
}else if(scrollY>0 && scrollY<titleHeight){
rl_userhead.setPadding(rl_userhead.getPaddingLeft(),(int)(top-scrollY/44*35.0),(int)(right+ scrollY