PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

Exemplo WINDEV Mobile Indent e Callback Java
Publié par Boller
dans la catégorie Outils
Nouveautés



Description
Exemplo WINDEV Mobile Indent e Callback Java

import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.dd.CircularProgressButton;
import java.lang.reflect.Field;
import android.content.res.Resources;

// Fonction Java native pour créer le champ "bouton jauge circulaire" par programmation
public static void AndroidNatif_AjouteBoutonDansChampNatif( String texteBoutonFini, int idBouton, int idParent, final String callbackActivation )
{
// Le code Java est susceptible de générer des exceptions en cas de problème
// On l'entoure par une structure try/catch
try {
// Création dynamique du champ
CircularProgressButton button = new CircularProgressButton(getContexteApplication());

// Affecte les propriétés
button.setCompleteText(texteBoutonFini);
button.setProgress(-1);
button.setId(idBouton);

// Affecte le membre 'mCornerRadius' de la classe Java en y accédant grâce à l'introspection
Field field = button.getClass().getDeclaredField("mCornerRadius");
field.setAccessible(true);
field.set(button, 48 * Resources.getSystem().getDisplayMetrics().density);

// Ajoute une callback pour réagir au clic sur le bouton
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// ATTENTION : la callback doit être une procédure globale !
appelProcedureWL(callbackActivation);
}
});

// Récupère le champ parent (le conteneur natif) à partir de son identifiant et ajoute le bouton dedans
ViewGroup parent = (ViewGroup)getActiviteEnCours().findViewById(idParent);
if(parent != null)
{
parent.addView(button);
}

}
// Si une exception se produit, elle est récupérée et affichée
catch ( Exception e ) {
appelProcedureWL("WLAndroid_AfficheInfo", e.getMessage());
}

}

//---------------------------------------------------------------------------------------------------------------


// Fonction Java native pour faire avancer un "bouton jauge circulaire"
public static void AndroidNatif_AvanceJaugeBouton( int idBouton, int niveauJauge, final String callbackClic )
{
// Recherche le bouton dans l'activité (la fenêtre) en cours
CircularProgressButton button = (CircularProgressButton) getActiviteEnCours().findViewById(idBouton);
if (button!=null) {
button.setProgress(niveauJauge);
// Si le niveau de jauge est fixé à 100, le bouton va se transformer de jauge en bouton
// A partir de ce moment, on lui affecte une callback de clic
if (niveauJauge==100) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// ATTENTION : la callback doit être une procédure globale !
appelProcedureWL(callbackClic);
}
});
}
}
}

//--------------------------------------------------------------------------------------------------------------------------------------------------

public static void AndroidNatif_ChangeLibelleBouton( int idBouton, String texteAttente )
{
// Recherche le bouton dans l'activité (la fenêtre) en cours
CircularProgressButton button = (CircularProgressButton) getActiviteEnCours().findViewById(idBouton);
if (button!=null) {
button.setIdleText(texteAttente);
button.setProgress(0);
}
}

//-------------------------------------------------------------------------------------------------------------------------------------------------------------

import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.dd.CircularProgressButton;
import java.lang.reflect.Field;
import android.content.res.Resources;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import java.io.StringReader;
import android.view.LayoutInflater;

// Fonction Java native pour créer le champ "bouton jauge circulaire" à partir de la description XML contenue dans les ressources de l'application
// Dans ce cas, toutes les propriétés du bouton sont définies dans le XML
public static void AndroidNatif_CreationIHMDynamique( int idBouton, int idParent, final String callbackActivation )
{
// Le code Java est susceptible de générer des exceptions en cas de problème
// On l'entoure par une structure try/catch
try {
// Construction du bouton en utilisant le contenu de la ressource "CircularProgressButton.xml"
LayoutInflater inflater = getActiviteEnCours().getLayoutInflater();
View button = inflater.inflate(getIdRessource("CircularProgressButton.xml"),null);
button.setId(idBouton);

// Ajoute une callback pour réagir au clic sur le bouton
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
// ATTENTION : la callback doit être une procédure globale !
appelProcedureWL(callbackActivation);
}
});

// Récupère le champ parent (le conteneur natif) à partir de son identifiant et ajoute le bouton dedans
ViewGroup parent = (ViewGroup)getActiviteEnCours().findViewById(idParent);
if(parent != null)
{
parent.addView(button);
}

}
// Si une exception se produit, elle est récupérée et affichée
catch ( Exception e ) {
appelProcedureWL("WLAndroid_AfficheInfo", e.getMessage());
}
}

//-----------------------------------------------------------------------------------------------------------------------------------

import java.util.ArrayList;
import java.util.List;
import com.jpardogo.android.flabbylistview.lib.FlabbyListView;
import java.util.List;
import java.util.Random;
import butterknife.ButterKnife;
import butterknife.InjectView;
import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.jpardogo.android.flabbylistview.lib.FlabbyLayout;


public static void AndroidNatif_CreeListeElastique( int idListe, int idParent )
{
// Le code Java est susceptible de générer des exceptions en cas de problème
// On l'entoure par une structure try/catch
try {
// Construction de la liste en utilisant le contenu de la ressource "FlabbyListView.xml"
LayoutInflater inflater = getActiviteEnCours().getLayoutInflater();
FlabbyListView list = (FlabbyListView) inflater.inflate(getIdRessource("FlabbyListView.xml"),null);
list.setId(idListe);

// Construction de la liste des éléments à ajouter dans le contrôle liste
ArrayList<String> items = new ArrayList<String>();
for(int i=0;i<50;i++){
items.add("Item"+i);
}

ListAdapter mAdapter = new ListAdapter(getContexteApplication(),items);
list.setAdapter(mAdapter);

// Récupère le champ parent (le conteneur natif) à partir de son identifiant et ajoute le bouton dedans
ViewGroup parent = (ViewGroup)getActiviteEnCours().findViewById(idParent);
if(parent != null)
{
parent.addView(list);
}

}
// Si une exception se produit, elle est récupérée et affichée
catch ( Exception e ) {
appelProcedureWL("WLAndroid_AfficheInfo", e.getMessage());
}
}


public static class ListAdapter extends ArrayAdapter<String>{
private Context mContext;
private List<String> mItems;
private Random mRandomizer = new Random();

public ListAdapter(Context context, List<String> items) {
super(context,0,items);
mContext = context;
mItems = items;
}

@Override
public int getCount() {
return mItems.size();
}

@Override
public String getItem(int position) {
return mItems.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(getIdRessource("ItemList.xml"), parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

int color = Color.argb(255, mRandomizer.nextInt(256), mRandomizer.nextInt(256), mRandomizer.nextInt(256));
((FlabbyLayout)convertView).setFlabbyColor(color);

holder.text.setText(getItem(position));
return convertView;
}

static class ViewHolder {
@InjectView(R.id.text) TextView text;

public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
}

//------------------------------------------------------------------------------------------------------------------

// Résumé : Procédure d'avancement du bouton 1 (appelée par le timer)
// Syntaxe :
//avancementBouton1 ()
//
// Paramètres :
// Aucun
// Valeur de retour :
// Aucune
//
// Exemple :
// Indiquez ici un exemple d'utilisation.
//
PROCEDURE avancementBouton1()

SI nJaugeBouton1<100 ALORS
nJaugeBouton1++
AndroidNatif_AvanceJaugeBouton(ID_BTN1, nJaugeBouton1,"WLAndroid_surClicBouton1")

FIN

//-------------------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE avancementBouton2()

SI nJaugeBouton2<100 ALORS
nJaugeBouton2++
AndroidNatif_AvanceJaugeBouton(ID_BTN2, nJaugeBouton2,"WLAndroid_surClicBouton2")
FIN

//-------------------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE WLAndroid_activeBouton1()

SI gnTimerBouton1=0 ALORS
gnTimerBouton1 = TimerSys("avancementBouton1",50ms)
FIN

//-------------------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE WLAndroid_activeBouton2()

SI gnTimerBouton2=0 ALORS
gnTimerBouton2 = TimerSys("avancementBouton2",50ms)
FIN

//-------------------------------------------------------------------------------------------------------------------------------------------------

PROCEDURE WLAndroid_surClicBouton1()

Info("Callback de clic sur le bouton 1")

//--------------------------------------------------------------------

PROCEDURE WLAndroid_AfficheInfo( sInfo est une chaîne )

Info(sInfo)

//--------------------------------------------------------------------

PROCEDURE WLAndroid_surClicBouton2()

Info("Callback de clic sur le bouton 2")
Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
Aucun avis ou commentaire ? Soyez le premier !