Android 拉动缩放动画
我们中的许多人一定遇到过像和这样的应用程序,在这些应用程序中,您可以下拉包含图像的视图并放大图像。然后,当你放开它时,图像会缩小回到原始状态 让我们以Tinder为例: 原始状态:和拉入时放大的状态: 在iOS中由Android 拉动缩放动画,android,imageview,zooming,Android,Imageview,Zooming,我们中的许多人一定遇到过像和这样的应用程序,在这些应用程序中,您可以下拉包含图像的视图并放大图像。然后,当你放开它时,图像会缩小回到原始状态 让我们以Tinder为例: 原始状态:和拉入时放大的状态: 在iOS中由 - (void)viewDidLoad { [super viewDidLoad]; self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"church-welcome.
- (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中实现它
以下是我认为应该做的:
- 抓住下拉手势
- 将视图的高度增加拉伸量
- 对图像执行某种缩放动画,使其适合展开的视图
有人知道是否有任何库可用于此目的吗?我认为最简单的方法是重写视图的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;
}
编辑:
对于动画部分考虑这篇文章:
查看此项目: 如果将它与ViewPagerIndicator库结合使用,您几乎可以获得Tinder的profile page功能集
谢谢你的回答!我是一个动画和触摸事件的新手。你能给我一个更详细的回答吗?我的意思是,zoom()函数会做什么之类的事情。再次感谢!您可以使用setBounds()方法进行操作。。。见我引用的帖子;您可以使用“setZoomCenter”(不要忘记转换为imageView坐标)和“changeZoomLevel”设置的值,而不是宽度/2和高度/2。显然,在另一篇文章中设置了所谓的“zoomController”…链接看起来非常有希望!试试看!谢谢这正是我所看到的!我不知道这叫做视差列表视图!仅仅是名字就帮我得到了一些很棒的项目!非常感谢亚当!:)是否可以对WebView应用相同的放大/缩小策略?@Swayam您是否能够像Tinder一样实现这一点?我是说把它和ViewPager结合起来?是的,我是。我不确定我是否还有代码,但是是的,使用视差ListView是一个不错的选择。