Android=ユーザーがシークバーで最大値を選択するアプリケーションを構築しています。
ユーザーが特定の固有のシークバーから最大値と最小値を選択できるように、同じシークバーに別のボタンが必要です。
これがシングルシークバーの私のコードです-
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
}
}
これがシークバーの私のxmlコードです-
<?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>
Androidウィジェットクラスライブラリには、スライダーコントロールが1つだけあり、親指コントロールが1つしかないシークバーがあります。オンラインで調べたところ、このクールなカスタムウィジェットのrange-seek-barが見つかりました。
以下のいずれかをフォローできます
https://github.com/edmodo/range-bar
サムカラーなどを提供できる双方向および単一方向シークバーを完全にカスタマイズ http://codingsignals.com/crystal-range-seekbar-in-Android/
グラドルを追加
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"/>
から ここ
<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) {
}
});
2つのシークバーを使用する必要はありませんが、2つのつまみを持つ1つのシークバーのみを使用することで、最小と最大の同じ機能を実行できます。ここに使用できるライブラリ https://code.google .com/p/range-seek-bar /
以下のコードを使用して使用できます
private final Thumb getClosestThumb(float touchX)
{
double xValue = screenToNormalized(touchX);
return (Math.abs(xValue - normalizedMinValue) < Math.abs(xValue - normalizedMaxValue)) ? Thumb.MIN : Thumb.MAX;
}
そして「公開ブール値onTouchEvent(MotionEvent event)」では、
if(pressedThumb == null),
pressedThumb = getClosestThumb(mDownMotionX);
RangeSeekBarhttps://github.com/RanaRanvijaySingh/RangeSeekBar 。また、多くのカスタマイズを提供する他のライブラリも利用できます。よりインタラクティブなデザインにしたい場合は、Material Range Barhttp://Android-arsenal.com/details/1を探してください。/1272 。