Jak ograniczyć aplikację do trybu portretowego tylko w trybie jonowym na wszystkich platformach?

121

Pracuję nad Ionic / Cordova, dodałem to, androidManifest.xmlale to nie zadziałało, a aplikacja nadal wyświetla się w obie strony

android:screenOrientation="portrait"

Jak mogę ograniczyć moją aplikację tylko do trybu portretowego? Sprawdziłem na Androidzie i nie działa

Muhammad Faizan Khan
źródło
czy to działa na ionic ??, bo to działa na ionic 2
manish kumar

Odpowiedzi:

315

Jeśli chcesz ograniczyć tryb pionowy tylko na wszystkich urządzeniach, powinieneś dodać tę linię do config.xml w głównym folderze projektów.

<preference name="orientation" value="portrait" />

Następnie przebuduj platformę, wpisując poniższy tekst w wierszu poleceń:

ionic build
Vadiem Janssens
źródło
2
dobrze widzieć. pracował dla mnie. sprawdzone na Androidzie. dzięki Vadiem
Muhammad Faizan Khan
1
jak ograniczyć tylko jeden określony ekran?
user3607282
1
Nie testowałem tego osobiście, ale możesz uzyskać pożądany rezultat dzięki temu samouczkowi: gajotres.net/…
Vadiem Janssens
4
To wydaje się działać tylko wtedy, gdy uruchamiasz go na prawdziwym urządzeniu. Jeśli uruchomisz go przez aplikację chmurową Ionic View, nie odniesie to żadnego skutku.
Johncl
1
Ok dla Ionic 4.
Pierrick Martellière
36

Aktualizacja Ionic v2 +

W przypadku Ionic w wersji 2 i nowszych będziesz musiał także zainstalować odpowiedni pakiet Ionic Native dla każdej używanej wtyczki, w tym wtyczek cordova-plugin-i phonegap-plugin-.

  1. Zainstaluj Ionic Native Plugin

    Zainstaluj moduł TypeScript Ionic Native dla wtyczki z CLI .

    $ ionic cordova plugin add --save cordova-plugin-screen-orientation
    $ npm install --save @ionic-native/screen-orientation
    

    * Zauważ, że --savepolecenie jest opcjonalne i można je pominąć, jeśli nie chcesz dodawać wtyczki do package.jsonpliku

  2. Import ScreenOrientation wtyczkę

    Importuj wtyczkę do swojego controller, więcej szczegółów znajdziesz w dokumentacji .

    import { ScreenOrientation } from '@ionic-native/screen-orientation';
    
    @Component({
        templateUrl: 'app.html',
        providers: [
            ScreenOrientation
        ]
    })
    
    constructor(private screenOrientation: ScreenOrientation) {
      // Your code here...
    }
    
  3. Rób swoje

    Zablokuj i odblokuj programowo orientację ekranu.

    // Set orientation to portrait
    this.screenOrientation.lock(this.screenOrientation.ORIENTATIONS.PORTRAIT);
    
    // Disable orientation lock
    this.screenOrientation.unlock();
    
  4. Punkty bonusowe

    Możesz również uzyskać aktualną orientację.

    // Get current orientation
    console.log(this.screenOrientation.type);  // Will return landscape" or "portrait"
    
Tyler
źródło
1
UWAGA: potrzebujesz "@ ionic-native / core": "^ 3.6.1", ponieważ niższa wersja powoduje błąd: forum.ionicframework.com/t/...
Luckylooke
Spróbuj dodać ScreenOrientation do listy dostawców
Tyler
3
ionic pluginnie wydaje się już działać. Myślę, że teraz ionic cordova plugin. Na przykładionic cordova plugin add --save cordova-plugin-screen-orientation
Rockin4Life33
2
dodawanie <preference name="Orientation" value="portrait" />wydaje mi się wystarczające
przyjdź
2
DevApp po prostu uruchamia Twoją aplikację jako przeglądarkę internetową w aplikacji DevApp, więc niektóre natywne funkcje nie działają. Spróbuj skompilować i uruchomić aplikację bezpośrednio na urządzeniu i powinno działać.
Tyler
13

Według https://cordova.apache.org/docs/en/4.0.0/config_ref/#global-preferences ,

Orientacja umożliwia zablokowanie orientacji i zapobieganie obracaniu się interfejsu w odpowiedzi na zmiany orientacji. Możliwe wartości to default, landscape lub portrait. Przykład:

<preference name="Orientation" value="landscape" />

Należy pamiętać, że w tych wartościach rozróżniana jest wielkość liter, jest to „Orientacja”, a nie „orientacja”.

Michael Zhou
źródło
1
Gdy przewiniesz w górę podany link, zobaczysz, co następuje: „Znacznik <preference> ustawia różne opcje jako pary atrybutów nazwa / wartość. W nazwie każdej preferencji nie jest rozróżniana wielkość liter . [...]”.
Vadiem Janssens
2
„orientacja” działa na mnie. „Orientacja” daje mi biały ekran podczas uruchamiania aplikacji na rzeczywistym urządzeniu.
CMA
2
„Orientacja” działa dla mnie z Ionic 2 na urządzeniu z Androidem.
kamayd
6

Jeśli chcesz coś zrobić w swojej orientacji, oznacza to, że chcesz wykonać dowolną akcję po zmianie orientacji aplikacji, musisz użyć wtyczki ionic framework ... https://ionicframework.com/docs/native/screen-orientation/

Jeśli chcesz ograniczyć swoją aplikację do trybu pionowego lub poziomego, musisz po prostu dodać następujący wiersz do pliku config.xml

<preference name="orientation" value="portrait" />
                 OR
<preference name="orientation" value="landscape" />
Vivek Singh
źródło
4

Najpierw musisz dodać wtyczkę Cordova Screen Orientation Plugin za pomocą

cordova plugin add cordova-plugin-screen-orientation

a następnie dodaj screen.lockOrientation('portrait');do .run()metody

angular.module('myApp', [])
.run(function($ionicPlatform) {

    screen.lockOrientation('portrait');
    console.log('Orientation is ' + screen.orientation);

});
})
Ahmed Bouchefra
źródło
2

Wewnątrz swojego kątownika app.jsdodaj linię, screen.lockOrientation('portrait');jak pokazano poniżej:

na

angular.module('app', ['ionic'])
.run(function($ionicPlatform) {
    // LOCK ORIENTATION TO PORTRAIT.
    screen.lockOrientation('portrait');
  });
})

Będziesz mieć również inny kod w .runfunkcji, ale ten, który Cię interesuje, to wiersz, który napisałem. Nie dodałem linii <preference name="orientation" value="portrait" />w moim kodzie, ale może być konieczne dodaniecordova-plugin-device-orientation

Vlasis Perdikidis
źródło
2

Dodaj android:screenOrientation="portrait"do androidManifest.xmlpliku jako atrybut tagu aktywności dla Androida.

<activity
        android:name="com.example.demo_spinner.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
</activity>
AyushKatiyar
źródło
1

W config.xml dodaj następujący wiersz

<preference name="orientation" value="portrait" />
Omkar Porje
źródło
0

Możesz spróbować tego: -

Wtyczka Cordova do ustawiania / blokowania orientacji ekranu w typowy sposób dla iOS, Androida, WP8 i Blackberry 10. Ta wtyczka jest oparta na wczesnej wersji interfejsu API orientacji ekranu, więc interfejs API nie jest obecnie zgodny z obecną specyfikacją.

https://github.com/apache/cordova-plugin-screen-orientation

lub wypróbuj ten kod w konfiguracji xml: -

<preference name="orientation" value="portrait" />
Bal mukund kumar
źródło