French Contrôle rotatif incrémental

Joël06

New Member
Bonjour à Tous
Je souhaitais depuis des années migrer mes applications Windows Phone vers Android.
Je me suis cassé le nez sur Java et Android Studio.
Il a une dizaine de jours j'ai trouvé B4A et j'ai fouillé les forums pour pouvoir démarrer.
Et voici le premier résultat, un potentiomètre incrémental.
Si jamais cela intéresse quelqu'un.
Je pense avoir assez commenté pour que tout le monde s'y retrouve
Il a encore quelques soucis de saccades dans la rotation, peut être qu'un expert trouvera une solution.
Bonne journée
 

Attachments

  • controle rotatif.zip
    9.9 KB · Views: 152

yfleury

Active Member
Licensed User
Je vais tester même à si je n'utilise pas ce genre de contrôle et je te reviens avec mes impressions
 

yfleury

Active Member
Licensed User
C'est cool. Le rotatif est surement trop gros pour l'intégrer a une application. J'imagine que l'on peux réduire la taille facilement.
Pense a enlever la lecture du doigts au centre du rotatif car il devient fou.

Si je me souviens bien, il y un rotatif B4X qui fonctionne sur B4J B4A et B4I
 

Joël06

New Member
Merci Yfleury de tes remarques encourageantes.
Je n'avais pas vu ce défaut. Corrigé.
A l'origine, ce contrôle est prévu dans une application permettant de commander par réseau le volume d'un processeur audio et comme c'est la principale commande, il est assez gros.
 

Attachments

  • controle rotatif1.1.zip
    10 KB · Views: 139

klaus

Expert
Licensed User
J'ai aussi regardé ton projet et me permets quelques commentaires.
Il y a toujours des fluctuations au niveau du doigt selon les positions.
Je suppose que ça vient du fait que tu utilises l'évènement de le Panel doigt, doigt_Touch.
Le problème est que les valeurs de x et de y dans doigt_Touch se réfèrent au Panel doigt, mais celui-ci est déplacée, donc la référence est aussi déplacée.
Je te propose d'utiliser le Panel volume, donc volume_Touch, pour déplacer le doigt. De cette manière tu as une référence fixe et tu peux aussi facilement limiter le mouvement lorsque le doigt est proche du centre.
J'ai vu, dans le layout, que le Panel doigt a une largeur et une hauteur de 70 mais le rayon des coins est à 50.
Moi, j'aurais mis 35, la moitié, comme tu l'as fait pour le Panel volume. A voir, le système corrige de lui-même une valeur trop grande.

Suggestion pour une étape suivante, faire une CustomView multi-plateforme, que tu pourrais réutiliser directement dans le Designer avec des propriétés modifiables.

Les potentiomètres pour audio sont logarithmiques, tu devrais peut-être envisager une progression logarithmique.

Si je me souviens bien, il y un rotatif B4X qui fonctionne sur B4J B4A et B4I
C'est sûrement ceci xRotaryKnob dont tu te rappelles.
 

Joël06

New Member
Merci Klaus pour ces remarques constructives.
j'ai rajouté un panel transparent par dessus les deux autres et cela fonctionne très bien.
Pour le rayon des coins, certainement une faute d'inattention et/ou de débutant.
Pour information : Les processeurs audio que j'utilise sont prévus pour fonctionner en réseau et utilisent eux-même un codeur incrémental physique en lieu et place du potentiomètre de volume.
Comme ils peuvent gérer de 1 à plus de 30 voies audio suivant les modèles, ce potentiomètre règle le volume de chacune d'entre elles avec un VCA (voltage control amplifier) qui se charge des problèmes de progression. D'ailleurs on peut aussi connecter un potentiomètre "standard" et le constructeur précise qu'il doit avoir une courbe linéaire.
Dans tout les cas, merci encore de ton aide
Voici la version corrigée.
 

Attachments

  • controle rotatif1.2.zip
    10.2 KB · Views: 112

klaus

Expert
Licensed User
Tu n'a pas besoin d'un Panel supplémentaire.
Avec volume_Touch ça fonctionne aussi.
Pour essayer mets le panel touch invisible dans le Designer et remplaces touch_Touch par volume_Touch.
 

Joël06

New Member
J'ai bien essayé mais je n'ai pas d'événement de volume_touch lorsque je pose le doigt sur le panel doigt qui est au dessus.
Y a t'il un moyen de transférer l'événement doigt_touch à volume_touch ?
 
Top