拉到放大animation

我们中的许多人一定遇到过像TinderDripper这样的应用程序,在这些应用程序中,您可以在包含图像的视图上拉下图像,然后放大图像。然后当放开图像时,图像会缩小以回到原始状态。

我们以Tinder为例:

原始状态: 拉入时放大状态:

原始状态放大状态

iOS中完成

- (void)viewDidLoad { [super viewDidLoad]; self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"church-welcome.png"]]; self.imageView.contentMode = UIViewContentModeScaleAspectFill; self.cachedImageViewSize = self.imageView.frame; [self.tableView addSubview:self.imageView]; [self.tableView sendSubviewToBack:self.imageView]; self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 170)]; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat y = -scrollView.contentOffset.y; if (y > 0) { self.imageView.frame = CGRectMake(0, scrollView.contentOffset.y, self.cachedImageViewSize.size.width+y, self.cachedImageViewSize.size.height+y); self.imageView.center = CGPointMake(self.view.center.x, self.imageView.center.y); } } 

由于我在Objective C和iOS方面的专业知识非常有限,所以我无法在Android中实现它。

这是我认为应该做的事情:

  • 抓住下拉手势
  • 通过拉量来增加视图的高度
  • 在图像上进行某种缩放animation以适应扩展视图

有没有人有任何想法,如果有任何图书馆可以用于这个目的?

Solutions Collecting From Web of "拉到放大animation"

看看这个项目:

https://github.com/Gnod/ParallaxListView

如果将它与ViewPagerIndicator库结合使用,几乎可以获得Tinder的configuration文件页面function集

https://github.com/JakeWharton/Android-ViewPagerIndicator

我认为最简单的方法是覆盖View的onTouchEvent方法。

像这样的东西:

 boolean inZoom = false; float prevY = 0; @Override public boolean onTouchEvent(MotionEvent event) { float eventY = event.getY(); float eventX = event.getX(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: if(touchedTheImage(eventX, eventY)){ setZoomCenter(eventX, eventY); prevY = eventY; inZoom = true; return true; } break; case MotionEvent.ACTION_MOVE: if(inZoom){ changeZoomLevel(prevY, eventY); return true; } break; case MotionEvent.ACTION_UP: if(inZoom){ resetZoomLevel(); inZoom = false; return true; } break; } return false; } 

编辑:对于animation部分考虑这个职位: https : //stackoverflow.com/a/6650473/3568892