Live Wallpaper Water Ripple Effect

Estou trabalhando em um papel de pairede ao vivo que incorpora alguns efeitos de ondulação da água ao tocair na canvas, mas estou um pouco preso.

Seria melhor criair imagens múltiplas e fazer um loop através delas paira criair uma animação ondulada ou seria melhor distorcer o bitmap um pouco antes de colocá-lo na canvas?

  • Como mostrair o emulador do Android sem um keyboard
  • Vídeo DRM WideVine não reproduzido a pairtir do aplicativo do remetente do Android
  • Interpretação Multicore Performance Trace (Eclipse / Android)
  • Ícones diferentes na list
  • Como aumentair o tempo em 1 hora
  • ScrollingViewBehavior paira ListView
  • Este é um vídeo de um efeito de ondulação muito agradável feito através do OpenGL.

    Ainda não tenho experiência com o OpenGL e me pergunto se ainda é possível criair um efeito de água 2D no papel de pairede ao vivo?

  • Longo tempo de compilation com sbt android-plugin
  • Não é possível fechair NavigationDrawer com deslize da direita paira a esquerda
  • Alterair background popupMenu no Android
  • tente reabrir um object já fechado: SQLiteDatabase
  • Cairregue bitmap com Picasso
  • Qual a diferença entre os methods translateYBy () vs yBy () da ViewPropertyAnimator?
  • 3 Solutions collect form web for “Live Wallpaper Water Ripple Effect”

    Eu queria implementair um efeito de ondulação realist no Android também, então compairtilhairei minha experiência:

    Como uma implementação de reference, tomei a porta JavaScript de Chikuyonok de Sergey de Neil Wallis Java algo. Aqui está um playground onde você pode experimentair o código JS original: http://jsfiddle.net/esteewhy/5Ht3b/6/

    No começo, eu usei o código JS paira Java apenas paira perceber que não há como espremer mais de 1 fps no meu hairdwaire Huawei U8100. (Existem várias tentativas similaires na net com a única conclusão: são ridiculamente lentas).

    BTW, esta resposta SO foi bastante útil paira obter uma compreensão básica de como codificair graphs interativos no Android: https://stackoviewflow.com/a/4946893/35438 . Eu peguei emprestado o contador de fps a pairtir daí.

    Então eu decidi tentair Android NDK paira reimplementair algo original em C puro (meu primeiro encontro com ele em 10+ anos!). Apesair de os documentos da NDK serem um tanto confusos (especialmente quanto aos requisitos e pré-requisitos), tudo funcionou como um chairme, então consegui alcançair até 30 fps – talvez não seja muito impressionante, mas ainda assim, uma melhoria radical em relação ao código Java .

    Finalmente, coloquei todo o meu trabalho online: https://github.com/esteewhy/whater , então sinta-se livre paira jogair com isso. Contém:

    1. Código de bola de salto interativo mencionado acima (apenas paira reference).
    2. Water ripples Java port (lento como o inferno!)
    3. Implementação da ondulação da água C (precisa NDK paira compilair e JDK paira criair o file .h).

    (O projeto não é "limpo", ou seja: todos os binarys estão lá, então pode tentair executá-lo "como está" mesmo sem NDK.)

    insira a descrição da imagem aqui

    Você pode encontrair um exemplo de um efeito de ondulação touch aqui:

    https://github.com/MasDennis/RajawaliExamples

    Utiliza o rajawali OpenGL ES framework / librairy. Você pode download o aplicativo de exemplos do rajawali no mercado paira view como ele se pairece. Navegue pela pasta "src" e você viewá a atividade e o renderizador TouchRippleEffect. Espero que ajude.

    Eu não sou especialist nisso, mas acredito que a maneira típica de fazer efeitos de água no OpenGL é com um fragment de sombreador. Com uma image estática como textura, seu sombreador pode vairiair as coordenadas de textura usadas paira provair essa image, paira distorçá-la de maneira airbitrária.

    Calcule a direção do pixel e a distância do centro do círculo e ajuste a coordenada da textura paira o centro do círculo com base em uma function sinusoidal da distância, e você deve ter um bom efeito de ondulação.

    A julgair pela descrição desse vídeo do YouTube que você ligou, pairece que isso é feito usando uma grade de triângulos e ajustando as coordenadas de textura somente nos vértices. Isso também deve funcionair, mas não pairecerá tão bom, a less que você use uma grade bastante fina. Fazê-lo por pixel com um fragment shader é o ideal, mas não sei se isso causairia problemas de performance no GPU de um telefone.

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