1,刚刚在别人开源的项目中看到了一个挺不错的用户体验,效果图如下:
2,那下面我们就来实现一下,首先看一下布的局,由于一般只是我们包含头像的那部分方法,所以这里我们要把布局分成两部分,对应的布局文件效果图如下:
3,自定义ScrollView
第一步:创建一个类,继承自滚动视图,重写相应的构造函数
公开课ZoomInScrollView延伸ScrollView { 公共ZoomInScrollView(上下文语境){ 这(上下文,null); } 公共ZoomInScrollView(上下文语境,AttributeSet attrs) { 这(上下文、attrs 0); } 公共ZoomInScrollView(上下文语境、AttributeSet attrs int defStyleAttr) { 超级(上下文、attrs defStyleAttr); } } >之前第二步:重写OnFinishInflate()方法,并记录第一个子视图,即我们的head_fragment
@Override 保护空白> @Override 公共布尔>/* * * *放大视图 */私人空间setZoom(漂浮){ 浮动scaleTimes=(浮动)((mHeaderWidth + s)/(mHeaderWidth * 1.0));//如超过最大放大倍数,直接返回 如果(scaleTimes比;mScaleTimes)返回; ViewGroup。LayoutParams LayoutParams=mHeaderView.getLayoutParams (); layoutParams。宽度=(int) (mHeaderWidth + s); layoutParams。身高=(int) (mHeaderHeight * ((mHeaderWidth + s)/mHeaderWidth));//设置控件水平居中 ((MarginLayoutParams) layoutParams) .setMargins (- (layoutParams。宽度- mHeaderWidth)/2, 0, 0, 0); mHeaderView.setLayoutParams (layoutParams); }/* * *回弹 */私人空间replyView () { 最后浮动距离=mHeaderView.getMeasuredWidth () - mHeaderWidth;//设置动画 ValueAnimator动画=ObjectAnimator。ofFloat(距离,0.0 f) .setDuration(长)* mReplyRatio)(距离); 动画。addUpdateListener(新ValueAnimator.AnimatorUpdateListener () { @Override 公共空间alt=" Android自定义ScrollView实现放大回弹效果实例代码">演示下载:ZoomInScrollView_jb51。rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Android自定义ScrollView实现放大回弹效果实例代码