2013-02-06 14 views
11

Korzystam z PhoneGap 2.2.0 w połączeniu z jQuery Mobile 1.2.0 dla mojej aplikacji na platformie Android (wersja 2.3.3 i nowsze). Na stronach korzystam ze stałych nagłówków i bez żadnych przejść. Odpoczynek jest dość standardowym jQuery.Miganie/migotanie z JQM i PhoneGap na Androidzie

Podczas nawigacji ze strony na stronę uzyskuje się białe mignięcie (całą stronę) przez krótką chwilę. Szukałem w Internecie godzinami.

Failed próbuje poniżej:

Po wyłączeniu akceleracji sprzętowej w projekcie Android miganie zniknęło. Ale wtedy niektóre style CSS się nie udają, a ogólna wydajność jest bardzo zła (oczywiście).

Wypróbowałem poniższy kod również teraz.

ui.page { 
-webkit-transform: translateZ(0); 
-webkit-perspective:1000; 
-webkit-backface-visibility: hidden; 
} 

Do nadal nie ma szczęścia.

Próbowano również tego: https://github.com/watusi/jquery.mobile.simultaneous-transitions Wciąż krótka (pełna biała strona) miga przed transistem.

Wygląda na to, że nie ma to nic wspólnego z przejściami animacji samej strony, ale jest czymś dziwnym, co dzieje się zaraz po usunięciu starej strony i tuż przed załadowaniem nowej.

Aktualizacja 25-04-2013: próbował również: https://groups.google.com/forum/?fromgroups=#!topic/phonegap/EtZ2KwseKQ0 https://github.com/jquery/jquery-mobile/issues/4024 https://github.com/jquery/jquery-mobile/pull/4129

Jedyną rzeczą, która sprawia, że ​​miganie odejść jest usunięcie części fixedheader. Wtedy jest gładka jak masło, ale brakuje mi nagłówków kompatybilnych z panelami.

Próbowano również szablon 1 strony (wszystkie strony w jednym pliku). Nic nie pomogło.

Komórka jQuery 1.3.1 PhoneGap 2.5.0 Android 4+ urządzenia: - Google Samsung Galaxy Nexus - Samsung Galaxy Tab 10.1 (miałem ten problem, ale nie mają urządzenia dłużej) - Samsung Galaxy Note 10.1

I przedstawiły problem na Github teraz: https://github.com/jquery/jquery-mobile/issues/6031

Odpowiedz

17

Ustawianie rzutni, aby użytkownik skalowalnej = nie naprawili problem dla mnie:

Zmień

< meta name="viewport" content="width=device-width, initial-scale=1" /> 

do

< meta name="viewport" content="width=device-width, user-scalable=no" /> 
+0

Naprawiono mruganie! Dzięki. Będę edytować problem na jQuery Mobile Github. –

+0

uratowałeś mi życie! thnx dużo – colourtheweb

+0

TAK! Zacząłem od szablonu HTML5 i widoku, w którym ustawiono "# początkową skalę = 1" – Red2678

1

The third link w poście jest jak naprawiłem go jakiś czas temu, gdy miałem ten problem. Dodałem także -webkit-perspective: 1000; Migotanie jest spowodowane przyspieszeniem 3D, a tylna strona przekształcanej strony staje się widoczna przez ułamek sekundy, dzięki czemu wygląda jak migotanie.

Edytuj: Zajrzyj także pod numer this, aby uzyskać więcej informacji.

+0

Dzięki za odpowiedź. Próbowałem twojej sugestii, ale na złe małe mignięcie nadal pozostaje w aplikacji :). –

0

Upewnij się, że kod ten istnieje w sposobie mobileinit:

//initialize jQM 
$(document).on("mobileinit", function() { 
    //hack to fix android page transition flicking issue 
    if (navigator.userAgent.indexOf("Android") != -1){ 
     $.extend( $.mobile , { 
      defaultPageTransition: 'none' 
     }); 
    } 
}); 

również: zmiany następujące w jquerymobile.js

// Make our transition handler the public default. 
$.mobile.defaultTransitionHandler = simultaneousHandler; 

//transition handler dictionary for 3rd party transitions 
$.mobile.transitionHandlers = { 
    "default": $.mobile.defaultTransitionHandler, 
    "sequential": sequentialHandler, 
    "simultaneous": simultaneousHandler 
}; 

również uprzejmie daj mi znać, która wersja android urządzenie używasz?

+0

Cześć, testowałem to. Domyślnie ustawiłem wartość defaultPageTransition na none. Zmieniłem także sugestie dotyczące pliku jquerymobile. Nie pracowałem. Zauważyłem, że dla 1.3.1 Twoja trzecia sugestia już się pojawiła. Twoja druga sugestia była rzeczywiście inna, więc spróbowałem tego. Nadal bardzo małe mrugnięcie pomiędzy nawigacją na stronach. Urządzenie: Galaxy Nexus, z systemem Android 4.2.2 :). –

2

Ustawianie rzutni, aby użytkownik skalowalnej = no problem został rozwiązany za ja:

< meta name="viewport" content="width=device-width, user-scalable=no" /> 

Works dla mobilnej jQuery 1.3.1 Cordova 2.8.0 na Nexusie 4/Android 4.2.2

0

próbowałem dziesiątki rozwiązań, ale żaden z nich nie pracował, tworzą mi najlepszą drogę dla mnie, aby rozwiązać ten mruga, to ustawić właściwość de autohidesplashscreen na false, pokazać ekran powitalny na poprzedniej stronie i ukryć go na stronie docelowej w deviceready. W niektórych przejściach spaliśmy w przejściach około 0,5-1 sekundy, aby uniknąć mrugnięcia okienka. Nie najlepsze rozwiązanie, ale dla nas zadziałało.

Powiązane problemy