2014-06-05 2 views
0

J'ai implémenté avec succès des émoticônes dans android par this link.Problem est quand l'application est exécutée sur un périphérique de densité plus élevée, l'émoticône sélectionnée apparaît trop petite.J'ai essayé en changeant les dimensions de le drawable avant affichage comme suitUtilisation d'images de densité différente dans les actifs dans android

ImageGetter imageGetter = new ImageGetter() { 
     public Drawable getDrawable(String source) { 
      StringTokenizer st = new StringTokenizer(index, "."); 
      Drawable d = new BitmapDrawable(getResources(), 
        emoticons[Integer.parseInt(st.nextToken()) - 1]); 

      Log.i("tag", "" + Integer.parseInt(st.nextToken())); 

      Drawable drawable = getResources().getDrawable(
        getResources().getIdentifier(
          "e" + (Integer.parseInt(st.nextToken()) - 1), 
          "drawable", getPackageName())); 
      // d.setBounds(0, 0, d.getIntrinsicWidth(), 
      // d.getIntrinsicHeight()); 
      d.setBounds(0, 0, 40, 40); 
      return d; 
     } 
    }; 

Mais cela n'aide pas. Les images .png se trouvent dans le dossier des ressources. Y a-t-il un moyen d'avoir des images de densités de dirrent dans le dossier assets? Comme le drawable-ldp, drawable-mdp ...?

+0

duplication possible de [Android load drawable programatically et redimensionner] (http://stackoverflow.com/questions/8837810/android-load-draw-programatically-and-resize-it) – fpanizza

+0

pourquoi ne pas simplement mettre dans le drawable dossier alors? – Budius

Répondre

0

les opérations suivantes:

DisplayMetrics metrics = getResources().getDisplayMetrics(); 
int densityDpi = (int)(metrics.density * 160f); 

d.setBounds(0, 0, 10*densityDpi, 10*densityDpi); 

Votre code sera maintenant de prendre la densité de votre écran en compte lors du dimensionnement des objets. Cela aidera à garder une taille constante parmi les différents appareils.

Questions connexes