Mega Code Archive

 
Categories / Android / UI
 

Extends DialogPreference

//package org.ametro.util; import android.content.Context; import android.preference.DialogPreference; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; public class BarPreference extends DialogPreference implements SeekBar.OnSeekBarChangeListener {   private static final String androidns = "http://schemas.android.com/apk/res/android";   private SeekBar mBar;   private TextView mMessageText, mValueText;   private String mPostfix;   private int mDefault = 0;   private int mMax = 100;   private int mValue = 0;   public BarPreference(Context context, AttributeSet attrs) {     super(context, attrs);     mPostfix = attrs.getAttributeValue(androidns, "postfix");     mDefault = attrs.getAttributeIntValue(androidns, "defaultValue", 0);     mMax = attrs.getAttributeIntValue(androidns, "max", 100);   }   public void onProgressChanged(SeekBar seek, int value, boolean fromTouch) {     String valueText = String.valueOf(value);     mValueText.setText(mPostfix == null ? valueText : valueText + mPostfix);     if (shouldPersist()){       persistInt(value);     }     callChangeListener(new Integer(value));   }   public void onStartTrackingTouch(SeekBar seek) {   }   public void onStopTrackingTouch(SeekBar seek) {   }      protected View onCreateDialogView() {     LinearLayout container = new LinearLayout(getContext());     container.setOrientation(LinearLayout.VERTICAL);     container.setPadding(10, 5, 10, 5);     mMessageText = new TextView(getContext());     mMessageText.setText(getSummary());     container.addView(mMessageText);     mValueText = new TextView(getContext());     mValueText.setGravity(Gravity.CENTER_HORIZONTAL);     container.addView(mValueText, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));     mBar = new SeekBar(getContext());     mBar.setOnSeekBarChangeListener(this);     mBar.setPadding(5, 0, 5, 0);     container.addView(mBar, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));          if (shouldPersist()){       mValue = getPersistedInt(mDefault);     }     mBar.setMax(mMax);     mBar.setProgress(mValue);     return container;   }   protected void onBindDialogView(View v) {     super.onBindDialogView(v);     mBar.setMax(mMax);     mBar.setProgress(mValue);   }   protected void onSetInitialValue(boolean restore, Object defaultValue) {     super.onSetInitialValue(restore, defaultValue);     if (restore)       mValue = shouldPersist() ? getPersistedInt(mDefault) : 0;     else       mValue = (Integer) defaultValue;   }     }