IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Balise @TargetAPI ?


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut Balise @TargetAPI ?
    Bonjour,

    Est-ce que quelqu'un sait comment marche cette annotation : @TargetAPI ?
    J'aimerai pouvoir rendre une application compatible avec des plus vieilles APIs mais je ne sais pas comment marche cette balise.

    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 59
    Par défaut versions
    D'après ce que j'ai compris si tu utilises dans ton code une Classe qui n'est pas prise en charge ou incomplètement par le android:minSdkVersion défini dans ton manifest tu peux utiliser une API plus récente de cette façon la...

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void createAnimation() {
                if (animation == null) {
                    @TargetApi(11)
                    ObjectAnimator anim1 = ObjectAnimator.ofFloat(balls.get(0), "y",
                            0f, getHeight() - balls.get(0).getHeight()).setDuration(500);
                    ObjectAnimator anim2 = anim1.clone();
                    anim2.setTarget(balls.get(1));
                    anim1.addUpdateListener(this);

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut
    Salut,

    Alors plus précisément,
    sur l'exemple de la fonction setAlpha de la classe View d'Android (valable depuis l'API 11).

    J'aimerai que mon appli marche sur des APIs 8+.
    J'ai essayé de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        @TargetApi(11)
        public void setAlphaOfView(View v, float f)
        {
        	v.setAlpha(f);
        }
    là où je faisais des setAlpha "classiques",
    cependant, j'ai quand même un message d'erreur - et l'appli crashe - comme quoi la fonction setAlpha d'une View est inconnue (si je lance l'appli avec un téléphone en version 2.3 (i.e. API8)).

    Donc apparemment, je rentre quand même dans la fonction setAlphaOfView()... Plus d'infos?

    Merci d'avance

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Je crois qu'il y a misunderstanding sur l'annotation TargetApi....

    @TargetApi(11) indique au compilateur (Lint pour être préci) que ce qui suit n'est utilisé *que* dans le cadre d'un SDK11+, et ne doit donc pas raler parceque le code utilise une fonction de l'API 11, alors que le minSDKVersion est à 4 par exemple....

    Je concois que c'est pas très clair comme explication...Je vais donc reprendre l'exemple...

    Dans ton exemple, imaginons que ton minSDK soit à 8 (donc l'application supporte toutes les versions Android a partir de Gingerbread)....

    Si tu compiles avec le SDK Level8, la fonction ne compilera pas du tout (erreur de compilation).
    Si tu compiles avec le SDK Level11, la fonction compilera, mais LINT va mettre un warning (Utilisation API Level 11 only avec minSDK à 8)
    Si tu rajoutes l'annotation @TargetApi(11), tu dis "Ok, je sais que ce code utilise l'API Level 11, mais je ne l'appelerai *que* dans ce cas là" => disparition du warning LINT.

    Donc l'annotation n'empêche pas de *ne pas* appeler le code en fonction de la version installée...


    Avec un minSDK à 4... c'est facile à faire de maniere logicielle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (android.os.Build.VERSION.SDK_INT>=11) {
       .. do this ...
    }
    Bon, pour du setAlpha ca ne sert à rien... j'ai déjà dis dans un autre thread, qu'il vaut mieux passer la view en View.INVISIBLE plutot que de mettre son alpha à 0...
    (attention View.INVISIBLE [la vue est juste 'hidden'] != View.GONE [la vue n'existe pas pour le calcul des places])

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Par défaut
    Ah nickel !
    Merci de l'explication claire sur @TargetApi.
    Et pour ce qui est du setAlpha, j'en ai besoin pour le mettre à 0.5f, mais je vais donc m'en sortir avec des :
    if (android.os.Build.VERSION.SDK_INT>=11)
    Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. balises identiques
    Par Phmichel dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 28/10/2002, 09h18
  2. Balises HTML dans un fichier XML
    Par Bastet79 dans le forum XML/XSL et SOAP
    Réponses: 12
    Dernier message: 04/09/2002, 15h29
  3. [Documentation][XSLT][XSLFO]Les balises xslfo
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2002, 11h31
  4. [XSLT] inclure du XSL dans une balise html
    Par iaa dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 05/08/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo