package com.test.seekbar;
import com.test.seekbar.R;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.preference.DialogPreference;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.SeekBar.OnSeekBarChangeListener;
public final class SeekBarPreference extends DialogPreference implements OnSeekBarChangeListener {
// Default values
private static final int DEFAULT_CURRENT_VALUE = 50;
private static final int DEFAULT_MIN_VALUE = 0;
private static final int DEFAULT_MAX_VALUE = 100;
private final int DefaultValue;
private final int MaxValue;
private final int MinValue;
private int mCurrentValue;
private SeekBar SeekBar;
private TextView ValueText;
public SeekBarPreference(Context context, AttributeSet attrs) {
super(context, attrs);
MinValue = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/com.mnm.seekbarpreference", "minValue", DEFAULT_MIN_VALUE);
MaxValue = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/com.mnm.seekbarpreference", "maxValue", DEFAULT_MAX_VALUE);
DefaultValue = attrs.getAttributeIntValue("http://schemas.android.com/apk/res/android", "defaultValue", DEFAULT_CURRENT_VALUE);
}
@Override
protected View onCreateDialogView() {
mCurrentValue = getPersistedInt(DefaultValue);
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.dialog_slider, null);
((TextView) view.findViewById(R.id.min)).setText(Integer.toString(MinValue));
((TextView) view.findViewById(R.id.max)).setText(Integer.toString(MaxValue));
SeekBar = (SeekBar) view.findViewById(R.id.seek_bar);
SeekBar.setMax(MaxValue - MinValue);
SeekBar.setProgress(mCurrentValue - MinValue);
SeekBar.setOnSeekBarChangeListener(this);
ValueText = (TextView) view.findViewById(R.id.current_value);
ValueText.setText(Integer.toString(mCurrentValue));
return view;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (!positiveResult) {
return;
}
if (shouldPersist()) {
persistInt(mCurrentValue);
}
notifyChanged();
}
@Override
public CharSequence getSummary() {
String summary = super.getSummary().toString();
int value = getPersistedInt(DefaultValue);
return String.format(summary, value);
}
public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {
mCurrentValue = value + MinValue;
ValueText.setText(Integer.toString(mCurrentValue));
}
public void onStartTrackingTouch(SeekBar seek) {
//ValueText.setText(getString(R.string.seekbar_on));
}
public void onStopTrackingTouch(SeekBar seek) {
// ValueText.setText(getString(R.string.seekbar_off));
}