Author Archives: Francis N Numbi

About Francis N Numbi

Gradué en Business Studies à Nkrumah Université de Kabwe - Zambie. Enseigné pendant des années l'informatique bureautique. Enthousiaste et amateur de programmation, j'ai appris seul à l'aide des livres, des tutoriels, différentes langues de programmation telles que: java et java mobile, BlackBerry, Android, C++, C#, Visual Basic, HTML et JavaScript, ... Gradué en Économie Générale et Licencié en Économie Monétaire à l'Université de Lubumbashi. Maîtrise du paquet Microsoft Office, des logiciels de programmation. Notion suffisante du logiciel d'économétrie. Consultant informatique. La liste est longue.

Android Custom EditText with line numbers

Sometimes you could be wandering how to have an edittext with numbered lines, just like most code editors.
Be assured that things ate easier than you think.
In this tutorial, I will show you how you can implement. We’ll name our custom EditText LineNumberedEditText.

  1. Extend EditText, implement one constructor and prepare the only overdrawn method, onDraw()
  2. Decide the complementary properties

    • We need to be able to show or hide the numbers, so we set a flag:
    • There should be a margin gap between the rightmost number margin and the left margin of the text. This gap is temporarily set to 2.
    • The font size of the number should be smaller than that of the actuall text. We set it 2 sizes less.
  3. We just declare the Paint and Rect we will use.
  4. We then provide Getter/Setter for these properties. But we did not provide any for LINE_NUMBER_TEXTSIZE_GAP. we do not want it to change, however, we allow the class that will extend this one to change. We do so by applying protected modifier.
  5. Next we need to initialize some variables inside the constructor. Paint and Rect are initialized.
  6. Now, the most important phase.

  • onDraw() will actually do the drawing.
  • the drawing is done only if the user choses to show line numbers.
  • next we adjust the font size of the line number in case the user decided to change the size of his text.
  • we get the base line, the y position at which the number will be drawn.
  • we prepare the String t variable will contain the number to draw an it will help calculate the width of the line text.
  • the for…loop will enable the canvas to draw the numbers on each line. the number of lines is determined by getCount(), the y coordinate of the new line is determined by adding the line height to the base line.
  • after all the line numbers are drawn, we have to readjust the padding of the actual text. We will keep the 3 paddings, but we have to modify the left padding. the left padding will be equal to the width of the last line number printed + lineNumberMarginGap.
  • finally, we call super to draw the actual text on top of the line numbers layer.

the full code can be found here.

This is the snapshot of its implementation.

    Installer Application Android d’une source inconnue

    Pas tous les programmes Android sont sur Google PlayStore. Certains se trouvent ailleurs et que vous aimeriez les avoir dans votre téléphone.

    C’est souvent quand ce programme vient d’un ami ou d’autres sites.

    Certains programmes sont malicieux comportant des viruses, des chevaux-de-troy et autres. Google PlayStore les vérifie avant de les disponibiliser pour le téléchargement. C’est pourquoi il est l’un des meilleurs endroits sécurisés pour le téléchargement de vos applications Android.

    Cependant, certaines applications, quoi que ne venant pas de Google PlayStore, sont propres, sachant avec assurance qu’elles proviennent des sources sures.

    Pour cela il faut changer une configuration.

    En voici la procédure :

    1. Vous lancez l’installation et ce dialogue apparaît. Cliquer sur Paramètres.
    2. Aller sur Sources inconnues et cocher dans sa case droite pour autoriser l’installation.
    3. Taper OK pour confirmer.
    4. Rassurez-vous que Sources inconnues est bel-et-bien coché et quittez cette fenêtre.
    5. Si la fenêtre d’installation n’est plus visible, recommencer l’installation. Et taper sur installer pour continuer.

    Excel : Trouver le MAX() ou le MIN() tenant en compte une condition SI()

    Alors que SOMME(), NB(), MOYENNE() ont leur version conditionnelle unique, [SOMME.SI(), NB.SI(), MOYENNE.SI()], ainsi que leur version conditionnelle multiple, [SOMME.SI.ENS(), NB.SI.ENS(), MOYENNE.SI.ENS()], il n’est plutôt pas evident pour MAX() et MIN().

    Pour corriger cette lacune, nous allons inserer SI() dans MAX ou MIN. Toutes les opérations s’éffectueront dans SI(). Ce sera alors une formule matricielle (array formula). Une formule matricielle en Excel est celle qui necessite pour sa validation, la combinaison CTRL+SHIFT+ENTER.

    ILLUSTRATION

    • Dans la colonne A: (A5:A20) se trouve les dates auxquelles les clients sont venus acheter
    • Dans la colonne B: (B5:B20) se trouve les noms des clients, qui peuvent se répéter si les clients sont revenus à plusieures reprises
    • Dans la colonne C: (C5:C20) se trouve les valeurs d’achats

      Nous voulons savoir pour chaque client la plus grande valeur et la plus petite valeur de la série des achats de cette période.

      À titre d’exemple, nous allons considérer un seul client qui sera placé dans E5, et alors, max et min seront placés successivement dans F5 et G5.

      SI sera une formule matricielle.

      • Condition: B5:B20=E5
      • La plage d’opération: C5:C20
      • Ainsi: SI(B5:B20=E5,C5:C20)

      La même formule matricielle sera utilisée et pour MAX() et pour MIN()

      Ainsi dans:

      • F5: =MAX(SI(B5:B20=E5;C5:C20))
      • G5: =MIN(SI(B5:B20=E5;C5:C20))

      N’oubliez pas que pour confirmer, il faut la combinaison CTRL+SHIFT+ENTER

      Excel: nb.si.ens() ~ countifs()

      Comme toutes les autres fonctions les plus utilisées, ajouter un .si ou if [comme dans somme.si(), moyenne.si(), nb.si(), …] lui permet de faire une operation à une condition, mais ajouter un .si.ens ou ifs [comme dans somme.si.ens(), moyenne.si.ens(), nb.si.ens(), …] lui permet de faire une opération à multiples conditions.

      Sa forme est:

      =NB.SI.ENS(vecteur_test_1;valeur_test_1[;vecteur_test_2;valeur_test_2; …;vecteur_test_n;valeur_test_n])

      Cela signifie que chaque vecteur a sa valeur contre laquelle on va tester.

      • Un vecteur est une plage des données. Ex. D12:D21;
      • Une valeur peut être un texte, un nombre, une date,… ou une référence cellulaire. Pour comparer on utilise les opérateurs de comparaison (= égal, > supérieur, >= supérieur ou égal, < inférieur, <= inférieur ou égal, <> inégale ou différent);
      • = égal peut être omis.
      • Les autres opérateurs doivent être placés entre “”. Ex. “<12”, “>=8”;
      • S’il s’agit d’une combinaison entre operateur et référence cellulaire, l’opérateur sera toujours placé entre “” suivi de & et la cellule. Ex. “<=” & B5, “<>” & D34;
      • L’opérateur de concaténation ‘&’ sert à relier les opérants.

      Notre cas nous impose 3 conditions

      • Seul de sexe masculin : “M” ou “=M”;
      • Âgé de moins de 25 ans : “<25”;
      • De niveau d’étude inférieur à 14 : “<14”;

      Là sont les 3 valeur_test à utilisé. Ainsi nous aurons pour chaque cas:

      1. Sexe sur colonne D: Vecteur_test_1;valeur_test_1 : D12:D21;”=M”
      2. Âgé sur colonne C: vecteur_test_2;valeur_test_2 : C12:C21;”<25″
      3. Niveau d’étude sur colonne E : vecteur_test_3;valeur_test_3 : E12:E21;”<14″

      En somme:

      =NB.SI.ENS(D12:D21;”=M”;C12:C21;”<25″;E12:E21;”<14″)

      En anglais:

      =COUNTIFS(D12:D21,”=M”,C12:C21,”<25″,E12:E21,”<14″)

      EXCEL: MOYENNE.SI() ~ AVERAGEIF()

      Problématique

      On veut calculer la moyenne de certains éléments du tableau par rapport à des caractéristiques bien définies.

      Pour cela il faut utiliser la fonction MOYENNE.SI(). ou AVERAGEIF() en Anglais.

      Utilisons moyenne.si() à trois paramètres:

      • Param1: le vecteur dans lequel on va comparer. Ici prenons la colonne de ID comme elle est spécifique à chaque travailleur. Ainsi on a : $B$8:$B$13;
      • Param2: la valeur à comparer. Ainsi on a B18. Cette valeur va rester relative;
      • Param3: le vecteur où il y a des valeurs à utiliser dans le calcul de la moyenne. Ainsi on a: $D$8:$D$13



        EN RÉSUMÉ

        Dans la cellule D18 la formule sera : 

        • En français: =MOYENNE.SI($B$8:$B$13;B18;$D$8:$D$13)
        • En anglais: =AVERAGEIF($B$8:$B13,B18,$D$8:$D$13)

        La formule de la cellule D18 sera copiée dans les cellules D19 et D20.

        Le total dans D14 est une simple sommation SOMME() ~ SUM().

        ATTENTION:

        MOYENNE.SI() n’est disponible qu’à partir de Excel 2007. Pour les versions antérieures il existe des alternatifs:

        • SOMME.SI()/NB.SI(): somme conditionnelle divisée par son compte conditionnel. La fonction SOMME.SI() a déjà été abordée.
        • MOYENNE(SI()): Le tout se passe dans la fonction si().  =MOYENNE(SI($B$8:$B13=B18,$D$8:$D$13)). Pour confirmer il faut appuyer sur CONTROL+SHIFT+ENTER. Si non ça ne va pas marcher.