Comment donner des valeurs en pourcentage dans ObjectAnimator dans Android

Je suis en utilisant objectAnimator pour animer un bouton du bas vers le haut dans Android. Maintenant, je suis en utilisant le code ci-dessous

ObjectAnimator transAnimation = ObjectAnimator.ofFloat(button,"translationY",0,440);
        transAnimation.setDuration(440);
        transAnimation.start();

J'ai aussi essayé avec un exemple de code ci-dessous. Mais toujours le problème existe

ObjectAnimator transAnimation = ObjectAnimator.ofFloat(loginLayout, "translationY",0f,0.8f);
                    transAnimation.setDuration(480);
                    transAnimation.start();

Il fonctionne très bien en grand écran des appareils. Mais quand il s'agit de petits appareils à écran il sort de l'écran. Je veux rester dans le haut de l'écran, indépendamment de la taille de l'écran. Je pense que je dois donner les valeurs en pourcentage (disons de 0% à 100% ou de 0 à 100% de p). Donc ma question est de savoir comment donner de la valeur en pourcentage objectAnimator dans Android. J'ai aussi remarqué une chose que cette objectAnimator est présenté seulement en Nid d'abeille. Donc, il y a tout de compatibilité descendante des bibliothèques pour l'exécuter en basse versions. Quelqu'un pourrait-il me guider pour trouver une solution pour cela.

J'ai aussi essayé l'extension de la Vue et de l'écriture getter et setter de la propriété dans offset(). Néanmoins, il ne bouge pas entièrement à la partie supérieure de l'écran. Voici le code que j'ai utilisé.

@SuppressLint("NewApi") public float getXFraction()
    {
        int width = context.getWindowManager().getDefaultDisplay().getHeight();
        return (width == 0) ? 0 : (getY());
    }

    @SuppressLint("NewApi") public void setXFraction(float xFraction) {
        int width = context.getWindowManager().getDefaultDisplay().getWidth();
        setY((width > 0) ? (width) : 0);
    }

Grâce inAdvance

  • Pour ceux qui sont à la recherche pour la réponse, ici est la solution de contournement.