mercredi 18 décembre 2013

Android : message d'erreur "unable to resolve target"

Bonjour,

Ce message survient quand on a développé une application avec une version d'Android pas supporté sur un nouvel ordinateur / un nouveau environnement de développement Eclipse.

Habituellement, on peut récupérer une version différente d'android qui permettra d'ouvrir le projet en question.

On va dans les propriétés du projet --> Android --> on choisit un version d'Android qui nous convient.


vendredi 6 décembre 2013

Présentation des projets de fin d'étude des finissants : mardi 17 décembre


Bonjour à tous,

Vous êtes invités à la présentation des projets de fin d'étude des finissants.
La présentation aura lieu mardi le 17 décembre de 13h30 à 17h30 au local A5.29.

Vous aurez la chance de voir des projets très variés :
  • jeux vidéos de plusieurs formes (Python, Java, C++ et Web);
  • site web transactionnel (présentation de produits et jukebox);
  • simulation d'écosystème et évolution d'agents (C++);
  • résolution de problèmes industriels (inspection par traitement d'image et étiquetage de défauts sur éolienne - C++);
  • génération de terrains 3D (C++)
  • . . .

jeudi 28 novembre 2013

Les Images 9-Patch

Pour plus d'informations sur les images 9-Patch, cet article m'a bien aidé :

http://blog.ace-art.fr/2010/10/14/tutoriel-android-partie-12-le-9-patch/

Java : transformer un tableau en Vector

Bonjour,

La classe Arrays contient plusieurs méthodes utilitaires pour travailler avec les tableaux ( trier, copier une partie d'un tableau dans un autre, etc ) . La méthode asList est intéressante car elle permet de transformer un tableau en un objet List :

String [] tab = {"un", "deux", "trois" };
List liste = Arrays.asList(tab);

On peut transformer une List en Vector à l'aide d'un constructeur :

Vector v = new Vector ( liste );


lundi 11 novembre 2013

Android - récupérer les images contenues dans un widget ImageView

Bonjour,

Lors d'un exercice de l'annexe 2 , nous avions à modifier l'élément drawable à l'intérieur d'un widget ImageView. Certains d'entre vous ont demandé comment récupérer l'image présente dans le ImageView. Voici le résultat de mes recherches.

Drawable d = image.getDrawable();

Cette ligne nous permet de récupérer l'objet Drawable associé à un ImageView ( ici appelé image ).

Drawable stromae = getResources().getDrawable(R.drawable.stromae);
Drawable reflektor = getResources().getDrawable(R.drawable.reflektor);

Ces deux lignes, dans le contexte de l'exercice, retournent des objets Drawable correspondant aux deux images utilisées. Ensuite, on pourra comparer le Drawable présent dans l'ImageView avec ces deux Drawables avec la méthode equals...


if ( d.equals(stromae))

CA NE FONCTIONNE PAS...parce que la méthode equals n'est pas redéfinie pour la classe Drawable...( voir cours B33 )



On est dans un cul-de-sac à moins de réaliser une sous-classe de la classe Drawable et d'y redéfinir la méthode equals, un peu long...

L'autre approche est d'utiliser les Tags. Un tag peut être associé à un widget ( n'importe quel objet dont la superclasse est View ) afin d'ajouter de l'information sur ce widget. On peut l'utiliser à la fois dans le XML ( propriété android:tag ) ou dans le code java ( getTag, setTag )

On associe donc un tag à notre ImageView :


        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:src="@drawable/stromae"
        android:layout_weight="0.67"
        android:tag="stromae" />

et on travaille dans notre .java :

if ( image.getTag().equals("stromae"))
{
image.setImageResource(R.drawable.reflektor);
image.setTag("reflektor");
}
else
{
image.setImageResource(R.drawable.stromae);
image.setTag("stromae");
}


Merci à Louis D. pour la curiosité, 

mardi 15 octobre 2013

Android - AVD

Tel que mentionné en classe aujourd'hui, l'AVD "Nexus" semble avoir des problèms avec les chronomètres. C'est dû au choix de CPU dans cet AVD.

À l'école, vous pouvez utiliser l'.autre AVD disponible ( "Google API " ) qui a un CPU différent.

À la maison, assurez-vous que votre AVD a comme CPU : ARM  ( armeabi-V7A ) . Vous pouvez éditer l'AVD avec le bouton Edit.


projet Android : dossier crunch

Bonjour,

Il est possible qu'en amenant un projet de la maison ou en récupérant un projet que je vous fournis ( projetChrono dans le cas du travail final ), une erreur relié à un dossier crunch se produise. Ce dossier est situé dans le répertoire bin/res de votre projet. Vous pouvez seulement supprimer ce dossier crunch pour que le projet fonctionne à nouveau.

lundi 9 septembre 2013

Illustrator - récupérer les info-bulles

Le logiciel Illustrator est composé d'un grand nombre d'icônes...pour récupérer les info-bulles afin de mieux les reconnaître : Ctrl + K

Merci à Marc-André L pour l'info .


dimanche 8 septembre 2013

Les codes hexadécimaux abrégés

Les deux façons les plus efficaces pour définir une couleur dans une CSS sont d'utiliser les noms des couleurs ( ex.: "blue" ) ou d'utiliser les codes hexadécimaux.

En regardant du code, j'ai souvent vu le code #FFF sans trop comprendre pourquoi il n'avait pas le traditionnel 6 chiffres. Il s'agit d'un code abrégé. On peut abréger ainsi tous les codes hexadécimaux composés de paires ( #aaff44 devient #af4). Il est mentionné qu'utiliser des codes abrégés peut accélérer leur lecture par les navigateurs.

On parle également de couleurs "web-safe" ; 216 couleurs correspondant aux couleurs communes des systèmes MAC et PC et qui sont donc présentées sans aucun ajustement. On peut reconnaître ces couleurs avec leur code hexadécimal composé d'une combinaison des paires 00, 33, 66, 99, AA et CC.

#AA3333 est donc une couleur "web-safe".

mardi 3 septembre 2013

Clés USB perdues

Les clés USB perdues et récupérées sont habituellement ramenées au bureau des profs A5.37.

dimanche 18 août 2013

Une session qui commence ....


Eh oui ! Une autre session qui commence, cette semaine à l'intensif, la semaine prochaine pour le régulier. Bienvenue aux nouveaux lecteurs de ce blogue et je nous souhaite une belle session d'automne !

vendredi 31 mai 2013

Pour en finir avec le modificateur static...

Bonjour,

D'abord les définitions...

Une variable static ( qu'on appelle parfois une variable de classe ) est une variable qui nécessite qu'un espace en mémoire pour stocker sa valeur plutôt qu'un espace en mémoire par objet créé, ce qui est le cas pour les variables d'instance.



Par exemple, pour une classe EtudiantCegep, les variables nom et matricule ne sont pas static car chaque objet a son nom et son matricule propre; on a besoin d'un espace-mémoire par objet pour stocker ces informations. Nom et matricule sont des variables d'instance.



Cependant, les variables menuCafeteria et accèsALaBibliotheque sont des variables static car leur valeur est la même, à un instant donné, pour tous les objets EtudiantCegep ( l'accès à la bibliothèque vaut true pour tous les objets en même temps , le menuCafeteria est le même pour tous les étudiants un jour donné ) . On a donc besoin d'un seul espace mémoire pour l'ensemble de la classe pour stocker ces infos; ce sont des variables de classe.



Une méthode static est une méthode dont le résultat est indépendant des variables d'instance d'une classe.

Par exemple, une méthode calculerMoyenneCoursMaths n'est pas une méthode static car son résultat dépend des notes de chacun des étudiants.

Par contre, on pourrait considérer une méthode assignerCasier une méthode static car on assigne pas un casier en fonction du nom, du matricule ou du revenu d'un étudiant...



Les constantes

Les constantes ont tjrs le modificateur static car, par définition, une constante n'a besoin qu'un espace mémoire pour toute la classe ( on a pas besoin de stocker la même valeur dans 1000 objets créés à partir de cette classe )

On peut donc accéder à une constante directement en la précédant du nom de la classe d'où elle vient ( Ex. Font.BOLD )

De la même manière, on peut accéder à une variable statique : Ex: EtudiantCegep.accesBibliotheque ( vaut true ou false pour l'ensemble des étudiants à un instant donné de la semaine )

Une variable statique peut également être un objet, tel un objet Hashtable ( comme dans le TP 2 )



Quand les variables statiques ou les constantes sont initialisées ?

Elles sont chargées en mémoire lors de l'exécution du programme; quand la classe dont les variables font partie est chargée dans la machine virtuelle Java ( en étant présente dans le code d'une classe par exemple  ) , ses membres statiques le sont également et sont donc accessibles à tous, que ce soit des objets ou des variables de type prédéfini.

. Par exemple ,

import java.awt.Point;
public class ClasseEssai {

 public static Point variableDeClasse = new Point ( 2,3);
    

}


l'objet Point sera créé dès que cette classe est chargée en mémoire 

public class Class1 {
    public static void main(String[] args) {
       System.out.println(ClasseEssai.variableDeClasse.getX());
    }
}

"2" sera affiché.



Peut-on donner le modificateur static à une classe ? 

Très rarement, uniquement dans le cas d'une classe interne...c'est un cas assez rare, vous aurez de l'information sur le site d'Oracle ici 


Merci à Monique H. pour une expérimentation similaire.





mercredi 29 mai 2013

Modifier la couleur de fond des entêtes de colonnes d'une JTable


On doit recourir au JTableHeader...

table.getTableHeader().setBackground ( ... )  

table est votre objet JTable 

mardi 28 mai 2013

Une nouvelle utilisation du CardLayout

Nous avons vu que le layout CardLayout peut être utile lorsqu'on veut passer d'un conteneur à un autre en employant des méthodes telles que first, next, etc. De cette manière, on peut afficher différents contenus sans se soucier des problème d'affichage / rafraîchissement.

Qu'en est-il si les conteneurs à afficher ne se suivent pas ? On peut associer à chaque conteneur faisant partie du cardLayout un tag à l'aide de la méthode addLayoutComponent. Ce tag sera utile pour afficher ce conteneur à l'aide de la méthode show.


    cardLayout1.addLayoutComponent(jPanel1, "panel inscription");
  cardLayout1.addLayoutComponent(jPanel2, "panel branchement");
  cardLayout1.addLayoutComponent (jPanel3, "panel deconnexion");
J'assigne un tag à chaque panel faisant partie du CardLayout 

cardLayout1.show(FrameCardLayout.this.getContentPane(), "panel inscription"); 
On peut ainsi rendre visible un panel sans passer par plusieurs appels à next() 


Merci à Steve T. pour la collaboration.

mardi 7 mai 2013

Gala annuel du mérite étudiant - Nos gagnants au département

Le 6 mai dernier avait lieu le gala annuel du mérite étudiant du Cégep. On y remet des bourses aux étudiants méritants dans différents domaines liés à la performance académique et/ou à l'implication sociale . Deux étudiants de la technique ont été récompensés pour l'excellence de leur dossier scolaire soit :


  • Nathalie Bouchard ( groupe intensif A12 / 2ème année )
  • Marc-André Majeau ( groupe intensif H12 / finissant )

Le département d'informatique tient à féliciter ces deux étudiants pour leur rendement académique hors pair ! 

lundi 29 avril 2013

Souris sans fil

Bonjour,

Quelques souris sans fil ont été oubliés dans les locaux ces dernières semaines. Si vous en êtes le propriétaire, manifestez-vous au 537 !

lundi 8 avril 2013

Tester votre application Android sur votre téléphone


En classe, nous utilisons un AVD pour tester nos applications Java / Android. Il peut-être agréable de la faire exécuter sur votre propre appareil également. Quelques modifications suffisent :

1. Sur votre téléphone, vous devez aller dans les options de développement et crocheter l'option Débogage USB.

2. Il vous faut le dernier pilote installé sur votre ordinateur pour que le programme puisse passer d'Éclipse à votre téléphone. Vous pouvez le trouver sur le site de la compagnie de votre téléphone en sélectionnant le modèle de votre téléphone.

3. Finalement, vous devez modifier la version de votre application pour qu'elle soit compatible avec votre téléphone. On a choisi l'API 16 en classe mais vous devrez peut-être sélectionner une version antérieure. Vous pouvez la modifier dans le fichier AndroidManifest.xml

4. Branchez votre téléphone à votre ordi et le tour est joué !!

Pour plus d'infos : http://developer.android.com/tools/device.html

vendredi 29 mars 2013

Des ressources pour Android

Les versions d'android se succèdent à un rythme effréné, d'où le problème d'avoir un livre de référence qui peut te durer plus de 3 semaines !! Heureusement, pour les étudiants qui veulent approfondir le sujet, un abonnement gratuit à la Grande Bibiliothèque permet de consulter de nombreux livres virtuels à partir de leur site web. Ces livres d'éditions reconnues sont également très récents ( Android 4 ) .

Pour y accéder : banq.qc.ca / ressources en ligne / livres / Books 24/7 IT Pro

Voici mes préférés :





Professional Android 4 Application Development
Reto Meier



 






 Beginning Android 4
 Grant Allen

mardi 26 février 2013

Changer l'encodage de caractères avec Dreamweaver

Par défaut, l'encodage de caractères avec Dreamweaver est UTF-8, ce qui permet à nos pages de présenter les accents correctement. Cependant, d'autres éditeurs HTML encodent les caractères avec le protocole ISO, ce qui n'affiche pas bien les caractères accentués.

SI vous devez passer d'un à l'autre, c'est-à-dire d'avoir débuté une page avec un autre logiciel et de vouloir forcer l'encodage UTF-8 avec Dreamweaver, la propriété à modifier est dans :

Menu Modifier --> Propriétés de la page --> Titre / codage --> modifier le codage pour UTF -8

Merci à Frédéric Thériault pour la théorie et aux internets pour la pratique .

lundi 25 février 2013

Le vaste monde des sélecteurs CSS

Nous avons vu en classe un certain nombre de sélecteurs, de pseudo-classes et de pseudo-éléments. Il y en a de nombreux autres, il y a même des sélecteurs par attribut, permettant d'identifier, par exemple les liens constitués d'image :


a[href$=".jpg"] où le signe de dollar signifie " se termine par".

 Je vous soumets cet excellent article de Smashing Magazine 

...et cette traduction de Jérémie Patonnier