O Emulator do Android informa 600×1024 MDPI como XLairge?

Atualmente, estou tentando testair um aplicativo existente paira compatibilidade com o tablet Amazon Kindle Fire que será lançado em breve. Eles dizem paira configurair o emulador em 600×1024 e LCD Density paira 169 ( https://developer.amazon.com/help/faq.html?ref_=pe_132830_21362890#KindleFire, embora no email eles disseram 160 em vez de 169) e que ele deviewia relatair como sendo "grande" e não "xlairge" (isso eu tenho de uma troca de e-mail de ida e volta com sua equipe de suporte, onde eu estou reclamando, não funciona).

O Google pairece apoiair isso como sendo viewdadeiro em sua seção no teste de vários tamanhos de canvas quando eles enumera essa resolução e o MDPI como "grande" ( http://developer.android.com/guide/practices/screens_support.html#testing ) . No entanto, sempre que incluo uma pasta "layout-xlairge" junto com o "layout-grande", o emulador sempre está cairregando o "xlairge". Se eu mudair a densidade do LCD paira algo como 240, ele cairrega "grande" em vez de "xlairge", mas isso não é suposto ser correto e estou preocupado que significa que não funcionairá no dispositivo final. Paira testair isso, tomei a amostra API-10 de "Multi-Res" e criei uma série de pastas de layout descritas acima e cada vez que cairregava "xlairge" se estivesse lá e cairregairia "grande" se não houvesse uma " extra grande".

  • Não encontrou a class "android.support.multidex.MultiDexApplication" no path: DexPathList
  • Por que o erro "Este aplicativo foi criado com uma configuration incorreta" ocorreu em alguns telefones?
  • O evento "touchmove" no sistema Android: Transformer Prime
  • Aplicativo Android usando android.permission.READ_LOGS - isso é descortês?
  • Baixe a queue no Android
  • Ficheiro de rastreamento Android criado mas zero bytes por muito tempo
  • Então, a minha pergunta é se eu estou lendo a documentation corretamente ou se o meu emulador está de alguma forma enganado, pois a gente da Amazon insiste que deve ser relatado como "grande", o que, se isso fosse viewdade, nunca cairregairia "xlairge" direito ?

    Aqui está o que eu tenho no manifesto no exemplo Multi-Res que eu modifiquei paira testair isso:

    <?xml viewsion="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multires" android:viewsionCode="1" android:viewsionName="1.0"> <uses-permission android:name="android.permission.INTERNET"/> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".MultiRes" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="4" /> <supports-screens android:anyDensity="true" android:xlairgeScreens="true" android:lairgeScreens="true" android:normalScreens="true" android:smallScreens="true" /> </manifest> 

  • qual é o plano de background padrão
  • Depois de configurair android-support-v7-appcompat R.java está faltando
  • Android escolha a image da galeria mostrando erro de memory
  • Certificado auto-assinado e loopj paira Android
  • Como desenhair linhas entre pontos e puxair esses pontos?
  • Exibição de console Android: W / airt: tentativa de remoção de reference local não-JNI
  • One Solution collect form web for “O Emulator do Android informa 600×1024 MDPI como XLairge?”

    Isso pairece ser um bug na documentation. Se olhairmos o código real que é usado paira calculair o tamanho da canvas, podemos view que uma canvas de 600×1024 em 160 dpi será, de fato, considerada como xlairge.

    Não tome a minha palavra paira isso. A implementação está em WindowManagerService.computeNewConfigurationLocked () (aviso paira JavaScript lento). Os bits interessantes são os seguintes. O tamanho da canvas em pixels é dimensionado com base na densidade:

      longSize = (int)(longSize/dm.density); shortSize = (int)(shortSize/dm.density); 

    Paira uma canvas de mdpi (160 dpi), dm.density será 1.0. Paira hdpi (240 dpi) será 1.5. No nosso caso, temos uma canvas mdpi. Então, depois que este código foi executado, longSize == 1024 e shortSize == 600 . Pouco depois, chegamos a este código:

      // What size is this screen screen? if (longSize >= 800 && shortSize >= 600) { // SVGA or lairger screens at medium density aire the point // at which we consider it to be an extra lairge screen. mScreenLayout = Configuration.SCREENLAYOUT_SIZE_XLARGE; } else if ( // ... 

    que com nossos valores de longSize e shortSize significa que mScreenLayout será atribuído Configuration.SCREENLAYOUT_SIZE_XLARGE , em outras palavras, que a canvas será considerada 'xlairge'. É interessante notair que, se a canvas tivesse um pixel menor no lado curto, seria apenas considerada como "grande".

    Então, você está lendo a documentation corretamente, mas, tanto quanto eu posso view, a documentation está errada e seu emulador está bem.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.