2013-01-16 13 views
37

Próbuję wymusić tryb "Pejzaż" dla mojej aplikacji, ponieważ moja aplikacja absolutnie nie jest zaprojektowana dla trybu "portretu". Jak mogę to zrobić?Tryb orientacji "Pejzaż"

jakieś sugestie? dziękuje

Odpowiedz

47

Jest to teraz możliwe dzięki manifestowi webplay HTML5. Zobacz poniżej.


Oryginalny odpowiedź:

Nie można zablokować stronę internetową lub aplikację internetową w określonym kierunku. Jest to sprzeczne z naturalnym zachowaniem urządzenia.

Można wykryć orientację urządzenia z zapytaniami mediów CSS3 tak:

@media screen and (orientation:portrait) { 
    // CSS applied when the device is in portrait mode 
} 

@media screen and (orientation:landscape) { 
    // CSS applied when the device is in landscape mode 
} 

lub poprzez wiązanie zdarzenie zmiany orientacji JavaScript takiego:

document.addEventListener("orientationchange", function(event){ 
    switch(window.orientation) 
    { 
     case -90: case 90: 
      /* Device is in landscape mode */ 
      break; 
     default: 
      /* Device is in portrait mode */ 
    } 
}); 

aktualizacja na 12 listopada: teraz jest to możliwe dzięki manifestowi webplay HTML5.

Jak wyjaśniono na stronie html5rocks.com, można teraz wymusić tryb orientacji przy użyciu pliku manifest.json.

Trzeba obejmują te linię do pliku json:

{ 
    "display":  "standalone", /* Could be "fullscreen", "standalone", "minimal-ui", or "browser" */ 
    "orientation": "landscape", /* Could be "landscape" or "portrait" */ 
    ... 
} 

i trzeba to manifest do pliku HTML, takich jak to:

<link rel="manifest" href="manifest.json"> 

Nie do końca pewien, co wsparcie jest w manifeście do blokowania orientacji stron internetowych, ale Chrome zdecydowanie tam jest. Aktualizuje się, gdy będę mieć informacje.

+0

Czy aplikacje internetowe też? _______________________ – user1599537

+1

Tak, również webappy. Nawet jeśli "zapiszesz" swoją stronę na ekranie głównym iPhone'a lub iPada, webapp zmieni orientację. –

+0

Czy to zadziała dla osła z piernika (androida)? – deostroll

22
screen.orientation.lock('landscape'); 

Wymusi zmianę i pozostanie w trybie poziomym. Przetestowano na Nexusie 5.

http://www.w3.org/TR/screen-orientation/#examples

+0

Ta metoda jest łatwiejsza do wdrożenia w porównaniu z innymi. –

+0

Nie działa na Androidzie przy użyciu domyślnej przeglądarki internetowej (nie chrome) - żadnych pomysłów? –