Visão geral
Muitos apps mostram um layout diferente em um tablet e em um celular. Deduzir a classe do dispositivo pelo tamanho da tela não é confiável: o resultado pode mudar com a orientação, a escala da tela ou o tamanho da janela.
O KlugDeviceType pergunta ao próprio sistema operacional. No Android, usa a menor largura de tela do dispositivo em pixels independentes de densidade (600 dp ou mais é um tablet), a mesma regra que o Android usa para seus próprios layouts. No iOS, usa o idiom de dispositivo do sistema, que distingue um iPad de um iPhone.
A resposta é a mesma em retrato e paisagem, independente de como o seu app escala o conteúdo, desde o primeiro frame do app.
Recursos
- Autossuficiente: uma ANE, sem biblioteca principal nem ANEs de dependência para adicionar
- Celular ou tablet, respondido pelo sistema operacional
- Estável diante de orientação e escala do app
- A menor largura de tela em dp (pontos no iOS), para os seus próprios limites
- Disponível na inicialização do app, antes do primeiro layout
- Nenhuma permissão necessária
Plataformas compatíveis
Em outras plataformas, isSupported retorna false e deviceType é uma string vazia.
Primeiros passos
Adicione a extensão ao descritor do seu aplicativo:
<extensions>
<extensionID>com.klug.devicetype</extensionID>
</extensions>
Exemplos de código
Três fluxos completos. Os getters retornam imediatamente e não exigem permissão; cada leitura consulta o sistema operacional de novo. Documentação completa →
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
Visão geral da API
| DeviceType.getInstance() | Retorna a instância única. |
| isSupported | Verdadeiro no Android e iOS. |
| isTablet | Verdadeiro em um tablet: Android com 600 dp ou mais, iPad no iOS; falso em outras plataformas. |
| isPhone | Verdadeiro em um celular; falso em outras plataformas. |
| deviceType | "tablet" ou "phone"; uma string vazia em outras plataformas. |
| smallestWidthDp | A menor dimensão da tela: dp no Android, pontos no iOS; -1 onde não está disponível. |
Compre o KlugDeviceType
Uma licença anual para um app AIR, com todas as atualizações por 12 meses. Após o pagamento, você recebe a extensão, a biblioteca ActionScript e a documentação por e-mail, normalmente em até um dia útil. Licença e termos
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Sem suporte
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Resposta por e-mail em até 7 dias
- Licença para um app AIR
- Todas as atualizações por 12 meses
- Resposta por e-mail em até 48 horas
Requisitos
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 ou posterior |
| Android | Android 6.0 (API 23) ou posterior |
| Permissões | Nenhuma |