Hiruma Posté(e) 14 septembre 2010 Share Posté(e) 14 septembre 2010 Bonjour, Je suis un "nouveau" développeur Android et je rencontre un problème dans l'exécution d'une application "Home". L'application fonctionne correctement mais lorsque je lance une autre application en utilisant un raccourci que j'ai crée (View personnalisée comprenant une image et un texte, basé sur le sample du SDK Android), il y a un problème. L'application correspondant au raccourci se lance bien mais une fois que je reviens sur mon application Home, il semblerait que le layout se recrée par dessus l'ancien, ce qui donne un problème d'affichage :S Cette superposition se fait sur tous les éléments contenus dans le layout principal. Je ne suis pas vraiment à l'aise avec les différents états d'une activité (onResume, onPause, etc...) mais je pense que c'est à ce niveau là que se situe mon problème. Reste à savoir qu'est-ce qui en est la cause... Je suis ouvert à toute suggestion. Merci d'avance pour l'aide onCreate : @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Mise en place du Wallpaper Drawable defWallpaper = peekWallpaper(); getWindow().setBackgroundDrawable(defWallpaper); // Récupération de la liste des apps à afficher sur le workspace xmlParser(); // Chargement de la liste des applications dans mApplications loadSelectedApplications(true); // Création de la GridView qui reçoit les View d'applications fournies par l'Adapter GridView grid = (GridView) findViewById(R.id.grid); grid.setAdapter(new ApplicationsAdapter(this, mApplications)); grid.setOnItemClickListener(new ApplicationLauncher()); } Classe ApplicationsAdapter : private class ApplicationsAdapter extends ArrayAdapter { //--------------------------- Application Adapter Variables -------------------- private Rect mOldBounds = new Rect(); //--------------------- ApplicationsAdapter Constructor ----------------------- public ApplicationsAdapter(Context context, ArrayList apps) { //super(context, textViewResourceId, objects); super(context, 0, apps); } //------------------- ApplicationsAdapter Methods --------------------------- @Override public View getView(int position, View convertView, ViewGroup parent) { final ApplicationInfo info = mApplications.get(position); if (convertView == null) { final LayoutInflater inflater = getLayoutInflater(); convertView = inflater.inflate(R.layout.application, parent, false); } Drawable icon = info.iconApp; if (!info.filtered) { int width = 42; int height = 42; final int iconWidth = icon.getIntrinsicWidth(); final int iconHeight = icon.getIntrinsicHeight(); if (icon instanceof PaintDrawable) { PaintDrawable painter = (PaintDrawable) icon; painter.setIntrinsicWidth(width); painter.setIntrinsicHeight(height); } if (width > 0 && height > 0 && (width < iconWidth || height < iconHeight)) { final float ratio = (float) iconWidth / iconHeight; if (iconWidth > iconHeight) { height = (int) (width / ratio); } else if (iconHeight > iconWidth) { width = (int) (height * ratio); } final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; final Bitmap thumb = Bitmap.createBitmap(width, height, c); final Canvas canvas = new Canvas(thumb); canvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG, 0)); mOldBounds.set(icon.getBounds()); icon.setBounds(0, 0, width, height); icon.draw(canvas); icon.setBounds(mOldBounds); icon = info.iconApp = new BitmapDrawable(thumb); info.filtered = true; } } final TextView textView = (TextView) convertView.findViewById(R.id.label); textView.setCompoundDrawablesWithIntrinsicBounds(null, icon, null, null); textView.setText(info.nameApp); return convertView; } } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fluckysan Posté(e) 15 septembre 2010 Share Posté(e) 15 septembre 2010 Il nous faudrait un bout de code ou ton code pour qu'on puisse voir où est le souci :o Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hiruma Posté(e) 15 septembre 2010 Auteur Share Posté(e) 15 septembre 2010 J'ai hésité à le mettre vu la longueur donc j'espérais innocemment que quelqu'un aurait une idée avec un simple screenshot... J'ai édité mon premier post avec les 2 parties du code qui selon moi sont les plus susceptibles d'en être la cause (le reste servant à remplir un ArrayList d'informations sur les applications installées à partir d'un fichier XML) à savoir le onCreate et la classe qui génère l'adapter de la GridView. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.