Forums Développement Multimédia

Aller au contenu

- - - - -

ANE et Java, comment afficher un ImageView sur Android?

CODE ANE JAVA ANDROID

2 réponses à ce sujet

#1 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 25 March 2015 - 21:21 PM

Bonjour tout le monde,
J'ai beaucoup tourne sur internet afin d'essayer de trouver une reponse a ma question, mais je la je suis perdu...
Si j'ai reussi a avoir un ANE qui fonctionne sur Android, et meme a utiliser avec success les classes AsyncTask en java, je suis maintenant completement bloque lorsqu'il s'agit de reussir a afficher une image a l'ecran depuis mon extension native.
Tout d'abord, il semble que j'ai besoin de certaines infos pour afficher mon image (Activity, Context et la vue principale), je les recupere donc au lancement de l'ane comme ceci:


public class MyContext extends FREContext
{
    @Override
    public void dispose()
    {
    }

    @Override
    public Map<String, FREFunction> getFunctions()
    {
            Configs.activity    = this.getActivity();
            Configs.context      = Configs.activity.getApplicationContext();
            Configs.decorView   = Configs.activity.getWindow().getDecorView();
            Map<String, FREFunction> map = new HashMap<String, FREFunction>();
            map.put("init"                                , new InitFunction());
            map.put("oneFunction"                  , new myFunction());
            return map;
    }
}
 

Ensuite, j'appelle cette classe pour charger une image temoins sur le web, une fois le chargement termine, je veux l'afficher a l'ecran



blic class GraphicLoader extends AsyncTask<URL, String, String>
{
    public ImageView    view;
    private URL          url;
    private int          width;
    private int          height;

    // Constructor
    public GraphicLoader (String url, int width, int height)
    {
            this.width  = width;
            this.height = height;
            try
            {
                    this.url    = new URL (url);
            }
            catch (MalformedURLException e)
            {
                    e.printStackTrace();
            }
    }

    @Override
    protected String doInBackground(URL... params)
    {
            final BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = false;
            try
            {
                    this.view   = new ImageView (Configs.context);
                    view.setImageBitmap(BitmapFactory.decodeStream(url.openConnection().getInputStream(), null, options));
                    RelativeLayout relativeLayout = new RelativeLayout(Configs.context);
                    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
                                    RelativeLayout.LayoutParams.MATCH_PARENT,
                                    RelativeLayout.LayoutParams.MATCH_PARENT);
                    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                                    RelativeLayout.LayoutParams.WRAP_CONTENT,
                                    RelativeLayout.LayoutParams.WRAP_CONTENT);
                    lp.addRule(RelativeLayout.CENTER_IN_PARENT);
                    view.setLayoutParams(lp);
                    relativeLayout.addView(view);
                    Configs.activity.setContentView(relativeLayout, rlp);
            }
            catch (IOException e)
            {
                    Configs.debug = Configs.debug + " GraphicLoaded error 2 " + e.getMessage();
                    e.printStackTrace();
            }
            return null;
    }
 

Mon application se ferme alors brusquement sur la ligne "Configs.activity.setContentView(relativeLayout, rlp);"
J'avoue que je n'arrive pas bien a comprendre quel processus je dois suivre pour afficher cette image, j'ai regarde les differents tutoriaux sur android, mais rien n'y fait.
Sauriez vous m'expliquer mon erreur s'il vous plait ?
Merci.

#2 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 26 March 2015 - 00:35 AM

Une petite avancée sur le probleme.

J'ai déplacé les commande d'affichage hors de l'AsyncTask, l'application ne se termine plus, mais je n'ai toujours aucun rendu a l'ecran.

#3 draad

  • Members
  • PipPipPipPipPipPipPipPip
  • 653 messages

Posté 26 March 2015 - 15:20 PM

Pour ceux que ca interresse, la solution etait de deplacer l'ensemble de la commande d'affichage hors de l'AsyncTask :


RelativeLayout relativeLayout = new RelativeLayout(Configs.context);
RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.CENTER_IN_PARENT);
view.setLayoutParams(lp);
relativeLayout.addView(view);
Configs.activity.setContentView(relativeLayout, rlp);
 





Répondre à ce sujet



  

1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP