仿安居客详情页动画效果

首先看下安居客房产详情页的效果:


1.gif

效果解析:
1、点击banner或者在banner上垂直滑动,banner布局滚动到屏幕中间,再次点击,可以回到最初的状态;
2、图片可以缩放。

安居客使用的是自定义scrollView,而我之前做过的产品,是顶部banner,下面是一些介绍,然后最底部是一个产品的列表,需要使用listView来做,因此这篇文章使用自定义ListView来做,原理大致都一样。

关键点:
1、动画执行过程中,通过回调,实时的对图片进行缩放以及位移的处理

public static void matrix(int screenWidth, ImageView imageView, LayoutParams layoutParams) {   
int intrinsicWidth = imageView.getDrawable().getIntrinsicWidth();   
float f = screenWidth * 1.0f / intrinsicWidth;   
matrix.reset();   
float g = 0;   
matrix.setScale(f, f);   
g = layoutParams.height - f * imageView.getDrawable().getIntrinsicHeight();   matrix.postTranslate(0.0F, g / 2.0F);   
imageView.setImageMatrix(matrix);}

2、自定义listView,当在banner上垂直滑动的时候,需要禁止listView的滚动;

public boolean judgeTouch(MotionEvent e)
{   
boolean bool = true;  
float f = e.getY();   
mBottomView.getLocationOnScreen(location);   
if ((f < location[1] - titleHeight) && (f > 0.0F)) {      
  bool = false;   
}   
return bool;
}

然后再自定义的ListView中重写onInterceptTouchEvent方法:

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) 
{   
boolean b = true;  
if (touchListener != null) {      
    b = touchListener.onTouch(ev);   
}   
if (b) {      
    return super.onInterceptTouchEvent(ev);   
}   
return b;}

其余的部分看代码也不难理解,有兴趣可以下载看看效果,demo比较简陋,见谅!
demo地址:https://github.com/dhhuanghui/ScaleAbleDemo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,860评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,871评论 22 665
  • “生活能如我们所想般简单,如果我们只看自己想看的,相信自己愿意相信的。” 这是2012年8月27日,基诺乐队的主唱...
    看见音乐阅读 1,075评论 1 0
  • 但凡年字号带7, 很难欢喜, 十年又十年, 走过了春夏又秋冬, 人不变, 心如镜, 需拂拭。
    木三皮阅读 136评论 0 0
  • 昨天吃饭的时候发现餐厅的灯好漂亮,于是拍了下来,今天第一次尝试画了照片… 结果画出来是这样的… 没错,显然是一次失...
    木小飛阅读 261评论 2 5