Como Usar A Biblioteca Moritz-wundke/android-page-curl - Issues · moritz-wundke/android-page-curl · GitHub
Issues · moritz-wundke/android-page-curl · GitHub

Page curl em Android: o que funciona e o que não funciona

A biblioteca de Mike Wündt é um dos poucos projetos de página virada (page curl) que realmente roda no Android sem depender de recursos de hardware que nem sempre estão disponíveis. O repositório original está no GitHub do moritz-wundke. Ela rende frames usando uma combinação de técnicas de rendering no Canvas com shaders OpenGL ES para a animação de curvatura. Se você quer integrar isso num app existente, o primeiro passo é entender como ela se comporta quando você dá zoom ou gira a tela.

como usar a biblioteca moritz-wundke/android-page-curl

Para começar, você precisa adicionar a dependência ao seu projeto. O jeito mais direto é baixar o source do repositório e importar como um módulo Android Library. Se você não quiser lidar com bibliotecas externas via Maven, pode clonar o repositório e incluir o módulo no seu projeto principal. Depois disso, a API principal expõe uma view chamada PageCurlView que você adiciona ao seu layout XML.

👉 Clique no botão abaixo para saber mais sobre o assunto!



No código Java/Kotlin, você configura os parâmetros básicos. A view aceita uma coleção de páginas (geralmente Bitmaps ou Drawables) e configura a animação de forma automática. O método setPages() recebe uma lista e a view calcula automaticamente as dimensões e o frame rate.


pageCurlView = findViewById(R.id.pageCurlView)
pageCurlView.setPages(listOfPages)
pageCurlView.startAnimation()

Existe também a possibilidade de personalizar a curva de animação ajustando os parâmetros de aceleração e deceleração. Você pode definir um interpolator se quiser um efeito mais suave ou mais rápido. O problema real começa quando você tenta integrar isso com outras views ou com um ViewPager. A biblioteca não foi projetada para ser um componente de navegação, então se você tentar usá-la dentro de um Fragment ou como parte de uma Activity com múltiplas telas, vai enfrentar problemas de lifecycle e de redimensionamento. Eu precisei lidar com isso num projeto interno onde a view de page curl precisava existir dentro de um NestedScrollView. O conteúdo scrollava, mas a animação de curl travava após a terceira página. A solução que encontrei foi separar completamente a view de curl do resto do layout e colocá-la num DialogFragment que ficava sobreposto. Não é elegante, mas funcionou.

Outro ponto que muita gente não leva em conta é o consumo de memória. Cada página é carregada como um Bitmap no memory heap, e a animação processa quadros usando cálculos de transformação geométrica complexos. Em dispositivos com menos de 2GB de RAM, a performance cai significativamente após cerca de 8 a 10 páginas. Se você tem muitos assets de alta resolução, é melhor downsizer antes de passar para a view. O download do repositório está disponível gratuitamente no GitHub. A licença é MIT, então você pode modificar e distribuir conforme necessário. Se o seu projeto precisa de algo mais robusto e com melhor suporte a navegação, considere alternativas como a Android-PageCurl do Jake Wharton ou até implementar sua própria view usando SurfaceView com shaders customizados, dependendo do nível de controle que você precisa.