Yleiskatsaus
Moni sovellus näyttää tabletilla eri asettelun kuin puhelimella. Laiteluokan arvaaminen näytön koosta on epäluotettavaa: tulos voi muuttua suunnan, näytön skaalauksen tai ikkunan koon mukaan.
KlugDeviceType kysyy itse käyttöjärjestelmältä. Androidilla se käyttää laitteen pienintä näytön leveyttä tiheydestä riippumattomina pikseleinä (600 dp tai enemmän on tabletti), samaa sääntöä, jota Android itse käyttää asetteluihinsa. iOS:llä se käyttää järjestelmän laite-idiomia (device idiom), joka erottaa iPadin iPhonesta.
Vastaus on sama pysty- ja vaaka-asennossa, riippumatta siitä, miten sovelluksesi skaalaa sisältönsä, sovelluksen ensimmäisestä kuvasta alkaen.
Ominaisuudet
- Itsenäinen: yksi ANE, ei ydinkirjastoa tai riippuvaisia ANE-laajennuksia lisättäväksi
- Puhelin vai tabletti, käyttöjärjestelmän vastaamana
- Vakaa suunnasta ja sovelluksen skaalauksesta riippumatta
- Pienin näytön leveys dp:nä (iOS:llä pisteinä) omia kynnysarvojasi varten
- Saatavilla sovelluksen käynnistyessä, ennen ensimmäistä asettelua
- Lupaa ei tarvita
Tuetut alustat
Muilla alustoilla isSupported palauttaa false ja deviceType on tyhjä merkkijono.
Aloitus
Lisää laajennus sovelluksesi descriptoriin:
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
Koodiesimerkit
Kolme täydellistä esimerkkiä. Getterit palaavat heti eivätkä tarvitse lupaa; jokainen luku kysyy käyttöjärjestelmältä uudelleen. Koko dokumentaatio →
import com.klug.devicetype.DeviceType; var type:DeviceType = DeviceType.getInstance(); // the same answer in portrait and landscape, available before the first layout if ( !type.isSupported ) useDesktopLayout(); // other platforms: deviceType is "" else if ( type.isTablet ) useTabletLayout(); // Android: 600 dp or more · iOS: iPad else usePhoneLayout();
// dp on Android, points on iOS; -1 where not available var sw:int = type.smallestWidthDp; var columns:int; if ( sw >= 720 ) columns = 3; // large tablet else if ( sw >= 600 ) columns = 2; // small tablet else columns = 1; // phone, or -1: not available buildGrid( columns );
import flash.events.Event; var current:String = type.deviceType; // every read asks the system again, nothing is cached stage.addEventListener( Event.RESIZE, function( e:Event ):void { var now:String = type.deviceType; if ( now == current ) return; // a rotation alone never changes it current = now; rebuildLayout( now ); // Android: opening a foldable can turn "phone" into "tablet" }); // iOS: isTablet follows the device (iPad) and does not change; // smallestWidthDp follows the screen the app is shown on
Rajapintayleiskatsaus
| DeviceType.getInstance() | Palauttaa yksittäisen instanssin. |
| isSupported | True Androidilla ja iOS:llä. |
| isTablet | True tabletilla: Android 600 dp tai enemmän, iOS iPad; muilla alustoilla false. |
| isPhone | True puhelimella; muilla alustoilla false. |
| deviceType | "tablet" tai "phone"; tyhjä merkkijono muilla alustoilla. |
| smallestWidthDp | Pienempi näytön mitta: dp Androidilla, pisteet iOS:llä; -1, kun ei saatavilla. |
Osta KlugDeviceType
Vuosilisenssi yhdelle AIR-sovellukselle, kaikki päivitykset 12 kuukauden ajan. Maksun jälkeen saat laajennuksen, ActionScript-kirjaston ja dokumentaation sähköpostitse, yleensä yhden arkipäivän kuluessa. Lisenssi ja ehdot
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Ei tukea
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 7 päivän kuluessa
- Lisenssi yhdelle AIR-sovellukselle
- Kaikki päivitykset 12 kuukauden ajan
- Vastaus sähköpostitse 48 tunnin kuluessa
Vaatimukset
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 tai uudempi |
| Android | Android 6.0 (API 23) tai uudempi |
| Oikeudet | Ei mitään |