Je construis une application Android où l'utilisateur sélectionne la valeur maximale par barre de recherche.
J'ai besoin d'un autre bouton sur la même barre de recherche pour que l'utilisateur puisse sélectionner la valeur maximale et minimale dans une barre de recherche unique particulière.
Voici mon code de barre de recherche unique -
package com.ui.yogeshblogspot;
public class CustomSeekBarExActivity extends Activity implements OnSeekBarChangeListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SeekBar bar=(SeekBar)findViewById(R.id.seekBar1);
bar.setOnSeekBarChangeListener(this);
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
TextView tv=(TextView)findViewById(R.id.textView2);
tv.setText(Integer.toString(progress)+"%");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
}
Voici mon code xml de barre de recherche -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical"
Android:background="#FFFFFF">
<TextView
Android:id="@+id/textView1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Choose Your Progress"
Android:textColor="#000000"
Android:textAppearance="?android:attr/textAppearanceMedium" />
<SeekBar
Android:id="@+id/seekBar1"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_gravity="center"
Android:progressDrawable="@xml/progress"
Android:max="100"
Android:thumb="@xml/thumb"/>
<TextView
Android:id="@+id/textView2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="#000000"
Android:gravity="center"
Android:layout_gravity="center"
Android:paddingTop="10dp"
Android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
La bibliothèque de classes de widgets Android Android n'a qu'un seul contrôle de curseur, barre de recherche avec un seul contrôle de pouce. A fait des recherches en ligne et a trouvé ce widget personnalisé cool, plage-barre de recherche.
vous pouvez suivre l'un des ci-dessous
https://github.com/edmodo/range-bar
Personnalisez entièrement la barre de recherche bidirectionnelle et unidirectionnelle, vous pouvez fournir la couleur du pouce, etc. http://codingsignals.com/crystal-range-seekbar-in-Android/
Ajoutez votre gradle
dependencies {
compile 'com.crystal:crystalrangeseekbar:1.0.0'
}
<com.crystal.crystalrangeseekbar.widgets.BubbleThumbRangeSeekbar
Android:id="@+id/rangeSeekbar5"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:corner_radius="10"
app:min_value="0"
app:max_value="100"
app:steps="5"
app:bar_color="#F7BB88"
app:bar_highlight_color="#E07416"
app:left_thumb_image="@drawable/thumb"
app:right_thumb_image="@drawable/thumb"
app:left_thumb_image_pressed="@drawable/thumb_pressed"
app:right_thumb_image_pressed="@drawable/thumb_pressed"
app:data_type="_integer"/>
De ici
<com.appyvet.rangebar.RangeBar
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/SearchrangeSeekbarAge"
Android:layout_width="match_parent"
Android:layout_height="72dp"
custom:tickStart="18"
custom:tickInterval="1"
custom:tickEnd="70" />
<com.appyvet.rangebar.RangeBar
xmlns:custom="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/SearchrangeSeekbarHeight"
Android:layout_width="match_parent"
Android:layout_height="72dp"
custom:tickStart="4.5"
custom:tickInterval="0.10"
custom:tickEnd="7.0" />
rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListener() {
@Override
public void onRangeChangeListener(RangeBar rangeBar, int leftPinIndex,
int rightPinIndex,
String leftPinValue, String rightPinValue) {
}
});
Vous n'avez pas besoin d'utiliser deux barres de recherche, mais vous pouvez simplement faire la même fonction de minimum et de maximum en utilisant une seule barre de recherche avec deux pouces dessus. Voici une bibliothèque que vous pouvez utiliser https://code.google .com/p/barre de recherche de plage /
Vous pouvez utiliser en utilisant le code ci-dessous
private final Thumb getClosestThumb(float touchX)
{
double xValue = screenToNormalized(touchX);
return (Math.abs(xValue - normalizedMinValue) < Math.abs(xValue - normalizedMaxValue)) ? Thumb.MIN : Thumb.MAX;
}
Et dans le "public booléen onTouchEvent (événement MotionEvent)",
if(pressedThumb == null),
pressedThumb = getClosestThumb(mDownMotionX);
RangeSeekBar https://github.com/RanaRanvijaySingh/RangeSeekBar . Il existe également d'autres bibliothèques disponibles qui offrent beaucoup de personnalisation. Si vous souhaitez opter pour une conception plus interactive, recherchez Barre de plage de matériaux http://Android-arsenal.com/details/1/1272 .