8
votes

Comment obtenir les qualifications pour une ressource donnée (lors de l'utilisation)?

J'ai une question très simple:

Compte tenu d'une ressource spécifique (ID, chaîne, digue, ...) du fichier R.java, est-il possible de savoir quels qualifieurs il avait sur son dossier qui l'a assorti? Si oui, comment?

Par exemple, si mon périphérique dispose d'un écran avec densité HDPI, j'ai le même nom de fichier "x.png" sur "res / drapable-hdpi" et "res / drakable-MDPI", et je suis sur le point de Décodez ce fichier, ce que je voudrais obtenir, c'est qu'il a reçu le fichier de RES / Diable-HDPI, et en le faisant, sachez qu'il a la densité HDPI.

Bien sûr, dans cet exemple, si le fichier existe sur d'autres dossiers, mais pas sur le dossier HDPI, je voudrais que cela me dise lequel il sera utilisé lorsque je déco téléchargée le fichier.

Même chose pour le reste des qualificatifs (locale, économiser, ...).


3 commentaires

Je suis intéressé par cette question. Je suis dans le même problème. L'avez-vous résolu? Avez-vous découvert une fonction pour deviner la qualifère utilisée par le périphérique dans une situation?


@Gmlomalo Non. Je ne me souviens même pas pourquoi je voulais ça ...


@Gmlomalo désolé pour ça. Si vous en avez découvert, écrivez-le ici. Cela pourrait être utile à l'avenir, ou juste bien de savoir.


3 Réponses :


0
votes

Ce problème se produit beaucoup si votre ciblage pour un grand nombre de périphériques, donc j'ai décidé de créer ma propre application simple pour savoir quelles sont utilisées pour lesquelles il est utilisé. ici est le lien.

J'espère que cela aidera.


0 commentaires

0
votes

Je ne pense pas que le framework Android fournit un mécanisme de votre application pour déterminer quelle ressource a été utilisée.

Mais vous pouvez toujours formuler les règles en fonction des règles spécifiées dans la documentation des qualificatifs de ressources Android.

Cependant, je ne suis pas clair, quelle est exactement votre exigence? Voulez-vous que votre application puisse reconnaître quelle ressource est utilisée? Ou voulez-vous seulement cela pendant la conception / la construction?

En ce qui permet de rechercher quelle ressource est utilisée, vous pouvez facilement formuler une logique basée sur la densité de l'écran, la taille de l'écran, la locale de téléphone actuelle et l'orientation actuelle, toutes disponibles via diverses API présentes dans Android.


2 commentaires

Supposons que le code ne sait rien à propos desquels les fichiers de ressources existent, ce que je veux, c'est avoir une fonction qui indiquera quels qualificatifs sont utilisés pour la ressource donnée. C'est pour l'exécution (car sinon je peux me voir où sont les fichiers ...).


Que, à mon avis, n'est pas possible ... La meilleure chose à faire est de savoir quelles ressources vous avez placées dans chaque dossier avec les qualificatifs fournis par vous. Selon les métriques de l'appareil que j'ai mentionnées, vous pouvez deviner quelle ressource est en cours de prise par votre application. Je ne pense pas que vous puissiez découvrir les qualificatifs présents pour une ressource particulière, cela serait fait par le système Android et non votre demande.



1
votes

Utilisez http://developer.android.com/reference/andrroid /Content/res/configuration.html

Exemple pour DPI: P>

    Configuration config = getResources().getConfiguration();
    Log.d("DPI ", Integer.toString(config.densityDpi));


5 commentaires

Où est la partie que je vous donne l'ID de ressource? Actuellement, tout ce que je vois, c'est que vous avez identifié la densité de l'appareil. Cela n'a rien à voir avec une ressource donnée.


Ceci, vous pouvez voir DPI en chiffres. Stackoverflow .Com / Questions / 2025282 / ... Vérifiez DPI avec configuration et godet de densité connu pour votre téléphone.


Vous ne comprenez pas la question. Je ne demande pas de densité. Je demande comment obtenir le dossier d'origine de la ressource que j'ai choisie. Par exemple, si j'ai un draigable à l'intérieur de plusieurs dossiers ("Puilable-LDPI", "Portable-port", "Diomare-iw", ...), je veux trouver lequel des fichiers qu'il a choisi quand j'essaie d'obtenir ce.


okey désolé, mais si vous utilisez Sanifer uniquement de la densité (HDPI, XHDPI, etc.) pour un dossier drable, ma méthode doit aller avec


Non, car cela ne saura pas quel fichier il utilisait, seul quel fichier correspond au mieux au cas où il sera disponible.