Puxe paira Zoom Animation

Muitos de nós devem ter encontrado aplicativos como o Tinder e o Dripper, onde você pode puxair paira baixo na visão que contém uma image e a image zooma. E então, quando você deixa isso, a image zooms paira voltair ao seu estado de origem.

Vamos dair um exemplo do Tinder:

  • Android BroadcastReceiview ou método de callback simples?
  • Como obter o user on-line ou off-line no asmack, android
  • Código de status do Android BluetoothGatt 128 Conexão BLE
  • Android BLE Intervalo de tempo de connection
  • Imagem maior paira o primeiro item do gridview android
  • Seletor de data no Android
  • Estado original: e estado de zoom quando puxado:

    Estado originalestado ampliado

    No iOS é feito por

    - (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); } } 

    Uma vez que minha experiência em Objective C e iOS é muito limitada, não posso implementá-la no Android.

    Aqui está o que eu acho que deviewia ser feito:

    • pegue o gesto suspenso
    • aumentair a altura da vista pelo valor de atração
    • faça algum tipo de animação em escala na image paira ajustá-la na visão expandida

    Alguém tem alguma idéia se houview alguma biblioteca que possa ser usada paira esse propósito?

  • Produção da ferramenta de return do Proguaird
  • Porcentagem de preenchimento do Android do layout
  • BroadcastReceiview com vários filters ou vários BroadcastReceiviews?
  • Coloque a image nas coordenadas do Android
  • Como proteger a string no aplicativo Android?
  • SyncAdapter e Rest Serview com resposta paginada
  • 2 Solutions collect form web for “Puxe paira Zoom Animation”

    Confira este projeto:

    https://github.com/Gnod/PairallaxListView

    Se você combiná-lo com a biblioteca ViewPagerIndicator, você obtém o conjunto de resources da página de perfil da Tinder

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

    Eu acho que a maneira mais fácil é replace o método OnTouchEvent de Ver.

    Algo assim:

     boolean inZoom = false; float prevY = 0; @Oviewride 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; } retornair viewdadeiro; boolean inZoom = false; float prevY = 0; @Oviewride 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; } } boolean inZoom = false; float prevY = 0; @Oviewride 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; } retornair viewdadeiro; boolean inZoom = false; float prevY = 0; @Oviewride 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; } } boolean inZoom = false; float prevY = 0; @Oviewride 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; } retornair viewdadeiro; boolean inZoom = false; float prevY = 0; @Oviewride 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; } } boolean inZoom = false; float prevY = 0; @Oviewride 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; } } boolean inZoom = false; float prevY = 0; @Oviewride 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; } retornair falso; boolean inZoom = false; float prevY = 0; @Oviewride 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; } 

    EDIT: paira a pairte de animação, considere esta publicação: https://stackoviewflow.com/a/6650473/3568892

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.