ScrollView实现图片拉伸效果,仿QQ好友动态头部效果
2018-03-15 17:26
399 查看
一.功能介绍
自定义ScrollView实现图片拉伸效果,下拉放大头部图片,监听滑动,改变标题头部是个图片,下面是个WebView,滑动改变标题状态;二.代码介绍
1.自定义ScrollView ,重写onTouchEvent()方法,监听触摸下拉 上滑位置,实现图片放大以及回弹;@Override public boolean onTouchEvent(MotionEvent ev) { if (zoomViewWidth <= 0 || zoomViewHeight <=0) { zoomViewWidth = zoomView.getMeasuredWidth(); zoomViewHeight = zoomView.getMeasuredHeight(); } if (zoomView == null || zoomViewWidth <= 0 || zoomViewHeight <= 0) { return super.onTouchEvent(ev); } switch (ev.getAction()) { case MotionEvent.ACTION_MOVE: if (!mScaling) { if (getScrollY() == 0) { y = ev.getY();//滑动到顶部时,记录位置 } else { break; } } int distance = (int) ((ev.getY() - y)*mScaleRatio); if (distance < 0) break;//若往下滑动 mScaling = true; setZoom(distance); return true; case MotionEvent.ACTION_UP: mScaling = false; replyView(); break; } return super.onTouchEvent(ev); }2.重写oonScrollChanged()方法,监听滑动
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); if (onScrollListener != null) { if (oldt < y ) { // 手指向上滑动,屏幕内容下滑 onScrollListener.onScroll(oldt,t,false); } else if (oldt > y ) { // 手指向下滑动,屏幕内容上滑 onScrollListener.onScroll(oldt,t,true); } } }3.滑动监听,改变标题状态
//获取dimen属性中 标题和头部图片的高度 final float title_height = getResources().getDimension(R.dimen.title_height); final float head_height = getResources().getDimension(R.dimen.head_height); //滑动事件回调监听(一次滑动的过程一般会连续触发多次) head_zoomscrollview.setOnScrollListener(new HeadZoomScrollView.OnScrollListener() { @Override public void onScroll(int oldy, int dy, boolean isUp) { float move_distance = head_height - title_height; if (!isUp && dy <= move_distance) { //手指往上滑,距离未超过头部高度 iv_back.setImageResource(R.mipmap.back_white); biaoti.setBackgroundColor(Color.argb((int) 0, 0, 0, 0)); } else if (!isUp && dy > move_distance) { // 手指往上滑,距离超过头部高度 iv_back.setImageResource(R.mipmap.back_black); biaoti.setBackgroundColor(Color.argb((int) 255, 255, 255, 255)); } else if (isUp && dy > move_distance) { //返回顶部,但距离头部位置大于头部高度 } else if (isUp && dy <= move_distance) { //返回顶部,但距离头部位置小于头部高度 iv_back.setImageResource(R.mipmap.back_white); biaoti.setBackgroundColor(Color.argb((int) 0, 0, 0, 0)); } } });滑动监听,改变标题栏渐变透明
/** * 滑动监听,标题改动 */ private void intseco() { //获取dimen属性中 标题和头部图片的高度 final float title_height = getResources().getDimension(R.dimen.title bace _height); final float head_height = getResources().getDimension(R.dimen.head_height); //滑动事件回调监听(一次滑动的过程一般会连续触发多次) head_zoomscrollview.setOnScrollListener(new HeadZoomScrollView.OnScrollListener() { @Override public void onScroll(int oldy, int dy, boolean isUp) { float move_distance = head_height - title_height; if (!isUp && dy <= move_distance) { //手指往上滑,距离未超过头部高度 iv_back.setImageResource(R.mipmap.back_white); biaoti.setBackgroundColor(Color.argb((int) 0, 0, 0, 0)); TitleAlphaChange(dy,move_distance); } else if (!isUp && dy > move_distance) { // 手指往上滑,距离超过头部高度 iv_back.setImageResource(R.mipmap.back_black); } else if (isUp && dy > move_distance) { //返回顶部,但距离头部位置大于头部高度 iv_back.setImageResource(R.mipmap.back_black); biaoti.setBackgroundColor(Color.argb((int) 255, 255, 255, 255)); } else if (isUp && dy <= move_distance) { //返回顶部,但距离头部位置小于头部高度 iv_back.setImageResource(R.mipmap.back_white); biaoti.setBackgroundColor(Color.argb((int) 0, 0, 0, 0)); TitleAlphaChange(dy,move_distance); } } }); } private void TitleAlphaChange(int dy, float mHeaderHeight_px) {//设置标题栏透明度变化 float percent = (float) Math.abs(dy) / Math.abs(mHeaderHeight_px); //如果是设置背景透明度,则传入的参数是int类型,取值范围0-255 //如果是设置控件透明度,传入的参数是float类型,取值范围0.0-1.0 //这里我们是设置背景透明度就好,因为设置控件透明度的话,返回ICON等也会变成透明的。 //alpha 值越小越透明 int alpha = (int) (percent * 255); biaoti.setBackgroundColor(Color.argb((int) alpha, 255, 255, 255)); }
效果演示
demo下载地址:https://download.csdn.net/download/shanshan_1117/10288895
点击打开链接
相关文章推荐
- iOS仿keep5.3.0版本健身等级界面实现UITableView头部图片下拉纵向拉伸效果
- jQuery动态背景图片效果实现方法
- iOS 实现类似安卓.9.png图片拉伸效果
- IOS开发UI篇--使用UICollectionView实现一个列表头部拉伸效果的案例
- 实现 iOS 头部拉伸效果
- iOS----实现scrollView或者scrollView的子类下拉图片放大的效果
- 使用CSS3实现动态加载gif图片的效果
- 鼠标放到图片上实现动态的效果
- 文字环绕图片的布局效果(使用动态div实现)
- java实现gif动画效果(java显示动态图片)
- 怎样实现表格背景图片的拉伸效果
- jQuery动态背景图片效果实现方法
- 上下拉伸图片-第三方开源-PullToZoomListViewEx 实现阻尼效果
- asp如何实现图片的动态翻动的效果
- 动态生成Gallery控件组合实现无限循环自动播放广告图片效果总结
- UIViewContentMode(scrollview图片拉伸效果)
- iOS----实现scrollView或者scrollView的子类下拉图片放大的效果
- android ScrollView实现下拉放大头部图片
- jQuery实现鼠标滑过图片时会缩小并动态显示信息的幻灯效果
- 关于动态加载的数据实现单选可取消的效果 并且附带 ScrollView滑动到指定位置