Archives Auteur

Widget Androïd : customisation des barres de progression horizontales

Je me suis amusé à réaliser un simple widget pour Androïd. J’ai consulté un peu de documentation en ligne, d’exemples et honnêtement ce n’est pas cela qui manque.

L’objectif de ce premier programme était de comprendre comment fonctionnent les widgets car leur approche est un peu différente des programmes classiques basés sur les « activities ».

Ce premier widget rend un service très simple, il affiche la place disponible sur votre carte SD et la mémoire interne. Tout cela accessible sur le bureau en un seul coup d’oeil.

Dans ce post je ne vais pas décrire comment créer un widget sous Androïd, les exemples sont nombreux sur la toile. Je vais plutôt décrire la résolution d’un point m’ayant posé problème :

  • la customisation des barres de progression horizontales.

En effet, par défaut les barres de progression horizontales offrent assez peut de paramètres : elles sont larges et jaunes sur fond gris. Souhaitant afficher une barre verte sur fond rouge, dans un espace minuscule (48 pixels sur 48 pixels), j’ai été contraint de dépasser les paramètres de base.

Pour ce faire, après quelques recherches, il faut récupérer le fichier natif décrivant les barres de progression horizontales, le modifier et l’intégrer au projet.

Récupérer le fichier natif

Pour récupérer ce fichier il faut simplement fouiller dans la sdk Androïd. Chercher et récupérer le fichiers :

  • progress_horizontal.xml

Le copier dans le répertoire res/drawable de votre projet.

Le modifier

Editer le contenu du fichier pour modifier les valeurs des balises gradient suivantes :

  • @android:id/background
  • @android:id/secondaryProgress (si vous avez besoin d’afficher une deuxième zone de progression dans la même barre, à la manière d’un tampon de chargement dans un logiciel de visualisation de vidéo par exemple).
  • @android:id/progress

L’intégrer au projet

Il suffit maintenant de déclarer dans notre fichier de layout que nous utilisons ce fichier là pour nos barres de progression (attribut android:progressDrawable= »@drawable/progress_horizontal ») :

<ProgressBar android:id="@+id/progressBar1" style="?android:progressBarStyleHorizontal" android:minHeight="14dip" android:gravity="center_horizontal|center_vertical" android:progressDrawable="@drawable/progress_horizontal" android:maxHeight="14dip"</ProgressBar>

Changer l’épaisseur

L’épaisseur se change avec les attributs xml suivants, exprimés en dip (Density-independent Pixels), voir cet excellent post résumant les unités de mesure sur Androïd :

  • android:maxHeight
  • android:minHeight

Et voilà, ce n’est pas bien compliqué mais cela illustre une façon de modifier le comportement natif des éléments d’interface sous Androïd.

Petite mise à jour de classfinder

Je viens de mettre à jour classfinder pour y intégrer hsqldb. En effet, je ne trouvais pas la sauvegarde des données sous forme d’un objet sérialisé très élégante ;).
Maintenant un répertoire data est créé à la volée à côté du Jar, contenant tout ce dont à besoin hsqldb.
Les commandes sont les mêmes :
java -jar classfinder.jar -index chemin du répertoire à indexer
java -jar classfinder.jar -search nom de la classe

Note : il est maintenant possible de rechercher une classe en utilisant les jokers sql (% et _).

Pour télécharger : classfinder.jar et classfinder.zip (le projet eclipse).

A la recherche des jar manquants

Pour le boulot et pour le plaisir je suis régulièrement à la recherche de librairies Java. Soit parce que je reprends du vieux code, soit parce que je copie/colle des snippets à droite ou à gauche.

S’il est facile de retrouver des Jars open sources à l’aide de Google, c’est souvent plus délicat lorsqu’il s’agit de bibliothèques propriétaires (c’est souvent la cas au boulot car nous utilisons de nombreux frameworks non libres).
Le dernier exemple en date, je me suis retrouvé à chercher une classe bien précise. Je connaissais son package et son nom, mais le framework cible contenait des dizaines de Jars. Ne souhaitant pas polluer mon développement, ni notre dépôt Maven je ne me voyais pas tout mettre dans mon pom… Au petit bonheur la chance…
D’habitude j’utilise la recherche de mon OS ou un éditeur de texte capable de faire des recherches sur des fichiers binaires, mais c’est généralement une opération plutôt fastidieuse. Je me suis alors lancé dans l’écriture d’un petit utilitaire permettant de chercher dans des répertoires pour interroger tous les Jars trouvées. Cette recherche aveugle stocke le nom des Jars, les packages et les classes qu’ils contiennent. Pour finalement créer un fichier sérialisant les résultats trouvés. Ce qui me permet d’éviter de me taper le parcours des répertoires à chaque fois. Le résultat, cet « index » est bien évidement mis à jour à chaque nouvelle recherche, de façon à constituer petit à petit une « base » des classes disponibles dans mes environnements de développement.
Une deuxième fonction permet de rechercher une classe précise dans cet « index ». Si la classe est trouvée, le nom du package s’affiche.
Rudimentaire, mais cela me rend déjà des services 🙂

En en parlant autour de moi je me suis rendu compte que je n’étais pas le seul à chercher régulièrement des Jars.
Si vous rencontrez ce même besoin, vous trouverez les sources de ce mini projet à la fin ce poste… Ce n’est pas grand chose, quelques lignes de Java et un mvn package. Je n’ai même pas pris la peine de commenter le code, mais si cela peu dépanner.

Edit : voir maintenant ce post, Petite mise à jour de classfinder

Projet eclipse : http://www.kaerith.fr/download/classfinder.zip
Jar : http://www.kaerith.fr/download/classfinder.jar

java -jar classfinder.jar -index chemin du répertoire à indexer
java -jar classfinder.jar -search nom de la classe.class

Notes :

  • le nom de la classe est sensible à la casse.
  • le jar actuel nécessite java 1.6
  • si vous souhaiter enrichir au fur et à mesure votre index, n’oubliez pas de conserver à côté du jar le fichier map.ser

Lady Java kyrics

[Intro]
Ga Ga a a aaaa
Ja Ja Java Java
Ga Ga u le le le
Ja Ja Java Java soul
La La u a a aaaa
Ja Ja Java Java
Ga ga u le le le
Ja Ja Java Java soul

I wanna program like they do at Oracle
Let you feel my HotSpot, let you through my firewalls
I’m object oriented and I’m ready to Browse
So call me to my house and I will let you click my mouse

You can download me anywhere
You can get me for free

[Priedainis]
Java soul, Java soul
JAVA SOUL
Java soul, Java soul
Java Java Java
Java soul your PC hundredmillion times
Ja Ja Java soul, all nigth
Ja Ja Ja Ja Ja Ja Java soul
Ja Ja Ja Ja Ja JA Java soul
Java soul

If you say Voulez.vous(coucher).avec(moi);
I’m up for it if you can write it in Java
From software application to web application
My booty shakes that it’s been just-in-time compilation

Some people prefer other languages
And that’s OK if you’re retarded, I guess
They can go home with all their .NET mates
And jerk off to a picture of William Henry Gates

[Priedainis]

Java song, sympa :)

Everquest 1 – nostalgie

Je suis tombé cet après-midi sur des vidéos d’une vieille guilde d’Everquest dont j’ai été membre sur une grosse partie de sa progression PVE. C’était une guilde plutôt hardcore gamer nommée Amoy Tagh. Difficile de décrire ce que j’ai ressenti, au minimum l’envie de revenir 10 ans en arrière.
L’année 2000, date de sortie en France de l’extension Ruins of Kunark. Date aussi où Everquest a commencé à être vendu en France, même si les serveurs proposés étaient uniquement anglophones et situés outre-atlantique.

A l’époque je jouais énormément comparé à maintenant (6 à 8+ heures par jour). Pion et étudiant, la belle vie si seul le critère temps libre est pris en considération.
Everquest reste pour moi une expérience de jeu inoubliable, des potes, des défis, la compétition entre les guildes et surtout un jeu qui pour l’époque offrait du contenu inédit. Imagine, un raid réunissait au maximum 72 joueurs, et il nous est même arrivé de créer un deuxième raid pour quelques boss récalcitrants .

Première vidéo, attention graphiquement cela pique les yeux, c’était fin 2002. Si tu es attentif, un certain Noruas appairait dans le générique.

Deuxième video. Devine qui est le paladin avec une grosse masse à deux mains qui semble danser la macarena au tout début… J’ai honte, mais c’est bon la honte .

Urumaki et maki

Google et les abrutis

A mesure que nous nous servons des ordinateurs comme intermédiaires de notre compréhension du monde, c’est notre propre intelligence qui devient semblable à l’intelligence artificielle.

C’est l’essence de la sombre prophétie de Kubrick, conclu ce passionnant article de Framablog (http://www.framablog.org/index.php/post/2008/12/07/est-ce-que-google-nous-rend-idiot).

Internet et Google vont-ils finir par nous abrutir ? Le titre est un peu trompeur, un peu racoleur même car Google fait lire ;). Cependant, ce long article propose un éclairage sur la manière dont notre consommation ininterrompue d’information modifie notre façon même d’appréhender cette information. Comment ce flot massif et immédiat de données contribue t’il à modifier jusqu’à la structure de nos neurones. Personnellement je trouve cela passionnant et je t’invite cher lecteur à prendre quelques minutes pour lire cet article qui date… 2008 🙂

Étant assez vieux pour avoir connu les livres en même temps que les premiers ordinateurs personnels, je trouve que cet article est assez fidèle à ce que je vis depuis l’arrivée du web.

J’en profite pour remercier Framasoft (http://www.framasoft.net/) pour la qualité de son contenu, éducatif et citoyen.

Blason version Omega

De sinople, écartelé de sable, omega d’argent.

VLCJ (1)

Une alternative sans doute viable pour la gestion des webcams avec Java… VLCJ : http://code.google.com/p/vlcj/

Je teste ce pilotage de VLC via Java en ce moment et cela me semble prometteur. La compatibilité windows et gnu/linux est un sérieux plus.
Peut-être une suite à SecureCam 😉

La Javadoc est minimaliste, mais c’est mieux que rien.

Haut de Page