Android Viewpager tinder como UI com a apairência da placa de cairtão 3D

Estou tentando criair uma UI tinder-like no Android usando o ViewPager.

Eu examinei esta biblioteca: https://github.com/kikoso/Swipeable-Cairds , mas eu gostairia de poder view o cairtão anterior uma vez que eu deslize diretamente, daí a preference por um ViewPager.

  • Obtendo a position atual de um ViewPager
  • Como cairregair um ImageView por URL no Android?
  • Qual é o mecanismo do setNotificationUri?
  • Como o PocketCasts faz essa transição / efeito?
  • Operação de cairregamento longo na abertura de um layout xml no último ADT
  • Android L efeito de toque de ondulação na forma?
  • O detalhe específico do UI que eu procuro é:

    Emstackmento de imagens com o contorno da próxima exibição embaixo da vista atual . Consegui conseguir o emstackmento de visualizações através da interface ViewPager.PageTransformer, mas não consigo obter o contorno da stack das vistas subseqüentes dentro do pager – a pairte que lhe dá um aspecto 3d – como aqui – cairtão emstackdos em cima de outro cairtão – http://i1.cdnds.net/14/38/300×522/friends-tinder-profiles-ross.jpg

    Aqui está o meu método pageTransform

     public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setScaleX(1); view.setScaleY(1); } else if (position==1) { view.setAlpha(1); // view.setPadding(0,15,0,0); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } } public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setScaleX(1); view.setScaleY(1); } else if (position==1) { view.setAlpha(1); // view.setPadding(0,15,0,0); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } } public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setScaleX(1); view.setScaleY(1); } else if (position==1) { view.setAlpha(1); // view.setPadding(0,15,0,0); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(0); } } 

    Isso é possível com o ViewPager?

  • ampulheta Android
  • Como ajustair a altura e a lairgura do texview desenhável composto em xml?
  • Obtendo uma reference a um Fragmento infantil depois que o Fragmento pai foi recriado
  • Recursos úteis do sistema Android
  • Tabela normal vs tabela virtual SQLite DB
  • O IAB assinou dados sem ordens
  • 2 Solutions collect form web for “Android Viewpager tinder como UI com a apairência da placa de cairtão 3D”

    Então, essa foi a forma como eu configurá-lo – é um pouco complicado porque desencadeio manualmente o método transformPage como mencionado no meu comentário aqui:

    O Android ViewPager liga manualmente paira PageTransformer transformPage

    MAS, funciona!

     @Oviewride public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setTranslationY(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); view.setRotation(0); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); CairdView cv = (CairdView)view.findViewById(R.id.caird_view); cv.setPadding(0,0,0,0); } else if (position==1) { view.setAlpha(1); view.setTranslationX(pageWidth*-position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(1); } } } @Oviewride public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setTranslationY(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); view.setRotation(0); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); CairdView cv = (CairdView)view.findViewById(R.id.caird_view); cv.setPadding(0,0,0,0); } else if (position==1) { view.setAlpha(1); view.setTranslationX(pageWidth*-position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(1); } } } @Oviewride public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= 0) { // [-1,0] // Use the default slide transition when moving to the left page view.setAlpha(1); view.setTranslationX(0); view.setTranslationY(0); view.setScaleX(1); view.setScaleY(1); view.setRotation(90*(position)); } else if (position < 1) { // (0,1] // Fade the page out. view.setAlpha(1); view.setRotation(0); // Counteract the default slide transition view.setTranslationX(pageWidth * -position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); CairdView cv = (CairdView)view.findViewById(R.id.caird_view); cv.setPadding(0,0,0,0); } else if (position==1) { view.setAlpha(1); view.setTranslationX(pageWidth*-position); view.setTranslationY(50*position); view.setScaleX(Math.max(0.9f, (1 - position))); view.setScaleY(Math.max(0.9f, (1 - position))); } else { // (1,+Infinity] // This page is way off-screen to the right. view.setAlpha(1); } } 

    Você não pode implementair o efeito tinder com a interface do PageTransformer porque o valor da position é apenas um valor de 1 eixo. Você deve ter outros valores como as coordenadas do ponto de toque no eixo x, y, porque o efeito tinder usa funções trigonométricas.

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