Je souhaite utiliser une SeekBar (c.-à-d. Java Slider old school) dans un sélecteur de dégradés de couleurs. J'ai vu quelques exemples comme celui-ci mais ils ont tous besoin de faire de nouvelles classes et autres. Il doit y avoir un moyen de modifier ou de remplacer les classes d'origine. Ou simplement remplacer l'arrière-plan avec un dégradé.Comment créer un dégradé de couleurs dans un SeekBar?
Répondre
Je l'ai compris ici est comment vous le faites.
Vous créez une barre de recherche standard dans votre fichier XML.
<SeekBar
android:id="@+id/seekbar_font"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:layout_below="@id/color_font_text"
android:max="100"
android:progress="50"></SeekBar>
Ensuite, vous personnalisez la barre de recherche dans votre onCreate() en créant un boxShape puis forcer un LinearGradient à l'intérieur.
LinearGradient test = new LinearGradient(0.f, 0.f, 300.f, 0.0f,
new int[] { 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF,
0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
null, TileMode.CLAMP);
ShapeDrawable shape = new ShapeDrawable(new RectShape());
shape.getPaint().setShader(test);
SeekBar seekBarFont = (SeekBar)findViewById(R.id.seekbar_font);
seekBarFont.setProgressDrawable((Drawable)shape);
Voici une image du code actuel au-dessus SeekBar Color Gradient
Ceci est en plus de la solution fournie à l'aide LinearGradient. Essayez cette logique pour traduire la progression en rgb:
lineColorSeekbar.setMax(256*7-1);
lineColorSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
int r = 0;
int g = 0;
int b = 0;
if(progress < 256){
b = progress;
} else if(progress < 256*2) {
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*3) {
g = 255;
b = progress%256;
} else if(progress < 256*4) {
r = progress%256;
g = 256 - progress%256;
b = 256 - progress%256;
} else if(progress < 256*5) {
r = 255;
g = 0;
b = progress%256;
} else if(progress < 256*6) {
r = 255;
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*7) {
r = 255;
g = 255;
b = progress%256;
}
lineColorSeekbar.setBackgroundColor(Color.argb(255, r, g, b));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Merci, cela a bien fonctionné. Comment pouvez-vous revenir en arrière étant donné r, g, b? Nous avons un second sélecteur de couleur et nous voulons mettre à jour le curseur en conséquence. – RealCasually
Chaîne hex = String.format ("#% 02X% 02X% 02X", r, g, b); – user3219446
- 1. Comment calculer un dégradé de quatre couleurs?
- 2. Comment créer un dégradé vertical en flex
- 3. Génération du dégradé de couleurs
- 4. Comment créer un bouton de dégradé sur un iPhone?
- 5. 4 couleurs logique de dégradé nécessaire
- 6. Recherche de couleurs de dégradé en Java
- 7. Comment connecter Media Player à un SeekBar?
- 8. Remplacer le dégradé de couleurs dans l'image transparente
- 9. Comment faire un dégradé transparent?
- 10. Simple effet de dégradé de deux couleurs sans image?
- 11. Comment puis-je obtenir un dégradé de couleurs arc-en-ciel en C#?
- 12. menu flash avec sous-menu et dégradé de couleurs?
- 13. Création du dégradé de couleurs plein écran le plus efficace
- 14. Créer un sélecteur de dégradé Adobe avec jquery et javascript
- 15. Comment rendre un dégradé transparent avec RMagick?
- 16. Comment définir un arrière-plan dégradé UITableViewCell?
- 17. Comment remplir un chemin dans Android avec un dégradé linéaire?
- 18. Comment remplir un chemin avec un dégradé dans drawRect :?
- 19. Comment créer un fond dégradé qui fonctionne avec la plupart/tous les navigateurs?
- 20. Obtenir un mélange de deux couleurs dans .NET
- 21. Créer de nouvelles couleurs dans JExcelApi
- 22. Comment puis-je utiliser OnSeekBarChangeListener de SeekBar pour rechercher un point spécifique dans un objet MediaPlayer?
- 23. Comment peindre un dégradé précis avec LinearGradientBrush en C#?
- 24. Comment configurer un SeekBar Android pour être inamovible/gelé?
- 25. Comment dessiner un dégradé lisse/dégradé sur une toile dans Android
- 26. vb6: remplir un polygone avec un dégradé
- 27. Comment implémenter un dégradé conique/cône/circulaire dans WPF
- 28. Comment créer un effet de dégradé CSS avec une barre latérale fanée
- 29. Puis-je animer un dégradé radial dans l'iPhone?
- 30. Comment définir des couleurs de lien dans un composant RichEditableText
Merci beaucoup pour ce morceau de code, fonctionne comme un charme. Mais comment obtenez-vous la couleur choisie alors? Le seul paramètre que je peux obtenir est la progression, alors, comment relier la couleur à la progression? Merci d'avance! –
Ouais c'est la partie difficile. Puisque le gradient n'est techniquement pas linéaire, vous devez écrire votre propre algorithme pour corréler l'emplacement du sélecteur avec la couleur réelle de la barre de progression. – JPM
Je pense que le paramètre 'x2' pour' LinearGradient' aurait besoin d'être ajusté en fonction de la largeur de la barre de recherche pour que le dégradé remplisse exactement la barre entière. Utiliser 'GradientDrawable' évite à la place ce problème:' seekBar.setProgressDrawable (nouveau GradientDrawable (GradientDrawable.Orientation.LEFT_RIGHT, nouvel int [] {startColor, endColor})) ' – hagabaka