J'ai un problème étrange.
Avant de venir à une idée de me cacher sur moi, je travaille sur un haricot de gelée personnalisé. Par conséquent, les "nouvelles approches habituelles" ne pourraient pas fonctionner ici, et des solutions de contournement sales doivent être faites. P>
J'ai un APK qui contient les éléments suivants dans les actifs: P>
D/AppDemo( 2091): measured width: 1920 PE width: 1920 scaleFactor = 1.0 D/AppDemo( 2091): [ANDROID] measured width: 1920 measured height: 1080 D/AppDemo( 2091): [ANDROID] scale for resources: 2.0 xdpi: 320.0 ydpi: 320.0 D/AppDemo( 2091): [ANDROID] screen density: xhdpi D/AppDemo( 2091): [ANDROID] screen size: large D/AppDemo( 2091): [ANDROID] using layout: layout-mdpi
3 Réponses :
Je ne sais pas si je vous comprends bien, vous construisez un androidos personnalisé et vous souhaitez que cette personnalisation Androidos charger toujours la même ressource de mise en page, dans votre cas de mise en page-Large-XHDPI?
Si tel est le cas, je pense que vous avez personnalisé le classe de configuration . Si vous le souhaitez rapidement et sale, vous pouvez peut-être remplacer les constantes INT à la ligne 72 et inférieure.
p>
béton, changement: p> Autre moyen pourrait être de remplacer le constructeur et le SetodeFault () - méthode de sorte qu'il charge toujours le même scénario. P> Je n'ai pas fait 't essayé, je ne sais pas si cela fonctionne, et je n'ai aucune source crédible et / ou officielle (code d'android exclu), mais j'espère que je pourrais vous aider. P> P>
Veuillez regarder les données rassemblées. Ceux qui ont été rassemblés à l'aide de la classe de configuration et correspondent à mon appareil. Il enregistre un bon écran et une bonne densité, mais choisit un mauvais dossier de mise en page. Je cherche une solution sale rapide au sélecteur de mise en page.
problème intéressant. J'avais un look, mais tout va un peu dans le trou de lapin. Pas de réponse en tant que telle, mais mon analyse vous mettra peut-être dans la bonne direction. P>
J'ai regardé ce qui s'est passé de J'ai utilisé des qualificatifs de paysage / portrait afin que je puisse changer la qualité au moment de l'exécution et j'ai utilisé un débogueur avec la source Android attachée. P>
Voici un flux, en commençant à cela. P>
Travailler à l'envers. P>
L'étape 6 est une méthode natif (c) qui renvoie la référence qualifiée, par ex. Pour voir où cela est venu de nous devons revenir à l'étape 4. L'index est un champ au sein de l'évaluation de TypedValue, mais il n'est pas initialement défini correctement lorsqu'il est transmis à cette méthode. P>
Étape 4 appelle une autre méthode native, Peut-être que vous pouvez commencer à regarder le C pour cela et à voir comment vous allez sur. p> setContentView code> Forwards. Évidemment à ce moment-là, vous parlez en termes d'une référence de mise en page densité-agnostique (E.g.
r.layout.main_layout code>), puis plus tard, il sera transformé en une référence à un fichier spécifique de l'APK. Quand et où est votre question. P>
/res/layout-land/yourview.xml code>. Son paramètre est un indice, cependant, et ces changements basés sur le point de savoir si nous sommes dans le paysage ou le portrait. P>
Assetmanager.LoadResourcevalue () Code>, qui modifie la transmission dans TPPEDValue et définit l'index de manière appropriée. P>
En particulier, vous voudrez peut-être commencer avec RESOURCETYTYPES.CPP , dans lequel vous pouvez voir des éléments de configuration liés à la densité, mais il devient rapidement trop compliqué pour mon goût.
Les ressources sont intéressantes et semblent être la plus proche de la maison, félicite de gagner la prime :)
Merci. Vous pouvez voir qu'il y a une méthode 'isbetterther' qui fait la comparaison entre les configurations candidates et inclut probablement la logique que vous après. Je ne suis pas arrivé aussi loin que ces candidats en viennent.
Nope, celui-là ne fonctionne pas pour moi non plus. Les candidats proviennent du Resemap de l'APK.
La ligne 1770 est l'endroit où commence certains travaux de densité, mais si cela ne renvoie rien, il tombera à la méthode de la ligne 1533. Je ne peux pas en être sûr, mais il semble que la densité renvoyée par vos métriques ne soit pas pertinente; Le choix réel est fait de nouveau dans ce code.
Laissez-nous Continuer cette discussion en chat
On dirait que le NDK donne accès à la logique code> isbetterthan code>. Est-ce que quelqu'un sait de plus près de Java Land que je pourrais accéder à cette logique?
Il y a tellement de périphériques piratés sur le marché comme FunBook MicroMax qui ont une taille d'écran grande mais utilise les ressources MDPI me faites confiance que j'ai travaillé avec eux et que c'était très frustrant.
Comme vous avez mentionné votre application fonctionne bien avec tous les autres appareils que cela ne fonctionne tout simplement pas avec cette tablette praticulaire, vous devrez peut-être mettre en œuvre une telle solution comptabilisée. Ici p>
HTTP : //android-developers.blogspot.in/2011/07/new-tools-for-for-Maning-Screen-Sizes.html p>
Vous devez lire le dernier segment de cette page aide sûrement. p>
Pour résumer ici l'approche suggérée consiste à créer une mise en page séparée avec le nom différent à l'aide des différentes ressources. p>
Vous conduisez ici le processus de cueillette des ressources ici pas la système. Ce qui peut consommer du temps mais aidera sûrement. p>
Le problème est que mes dossiers de mise en page étaient layouche-sw600dp et la mise en page-SW1000DP, mais aucun d'entre eux "feu". Quelque chose est gâché, mais le problème est hors de mes mains, alors il semble. Mais je vois que l'approche utilisée ici, disposant d'un dossier de mise en page unifié et de choisir le bon manuellement. Je vois.
Mais ces res / mise en page-xlarge / main_activit.xml # pour les tablettes pré-3.2 code>
res / layout-sw600dp / main_activit.xml # pour les tablettes 3,2 et vers le haut code> ne font tout simplement pas travailler et ne pas être choisi.
Bien que vous ne pêche pas vous n'avez pas besoin de ces réponses i>, je pense qu'une explication approfondie de votre objectif final peut nous aider à penser aux moyens d'obtenir ce dont vous avez besoin, sans passer un itinéraire difficile.
@Phil: OK, le problème est qu'en raison d'une différence quelque part, toutes les applications ne montrent que le quartier supérieur gauche sur l'écran entier. Au lieu d'être plus petit (si la mise à l'échelle a fonctionné correctement), ils sont beaucoup plus gros. En tout cas, j'ai été réaffecté de cela, alors il y a la fin de cela.