SeekBarPreference.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package me.yoqi.app.wxredpacket.activities;
  2. import android.content.Context;
  3. import android.content.SharedPreferences;
  4. import android.preference.DialogPreference;
  5. import android.util.AttributeSet;
  6. import android.view.View;
  7. import android.widget.SeekBar;
  8. import android.widget.TextView;
  9. import xyz.monkeytong.hongbao.R;
  10. /**
  11. * Created by Zhongyi on 2/3/16.
  12. */
  13. public class SeekBarPreference extends DialogPreference {
  14. private SeekBar seekBar;
  15. private TextView textView;
  16. private String hintText, prefKind;
  17. public SeekBarPreference(Context context, AttributeSet attrs) {
  18. super(context, attrs);
  19. setDialogLayoutResource(R.layout.preference_seekbar);
  20. for (int i = 0; i < attrs.getAttributeCount(); i++) {
  21. String attr = attrs.getAttributeName(i);
  22. if (attr.equalsIgnoreCase("pref_kind")) {
  23. prefKind = attrs.getAttributeValue(i);
  24. break;
  25. }
  26. }
  27. if (prefKind.equals("pref_open_delay")) {
  28. hintText = getContext().getString(R.string.delay_open);
  29. } else if (prefKind.equals("pref_comment_delay")) {
  30. hintText = "发送回复(暂不支持延时)";
  31. }
  32. }
  33. @Override
  34. protected void onBindDialogView(View view) {
  35. super.onBindDialogView(view);
  36. SharedPreferences pref = getSharedPreferences();
  37. int delay = pref.getInt(prefKind, 0);
  38. this.seekBar = view.findViewById(R.id.delay_seekBar);
  39. this.seekBar.setProgress(delay);
  40. if (prefKind.equals("pref_comment_delay")) {
  41. this.seekBar.setEnabled(false);
  42. }
  43. this.textView = view.findViewById(R.id.pref_seekbar_textview);
  44. setHintText(0);
  45. this.seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
  46. @Override
  47. public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
  48. setHintText(i);
  49. }
  50. @Override
  51. public void onStartTrackingTouch(SeekBar seekBar) {
  52. }
  53. @Override
  54. public void onStopTrackingTouch(SeekBar seekBar) {
  55. }
  56. });
  57. }
  58. @Override
  59. protected void onDialogClosed(boolean positiveResult) {
  60. if (positiveResult) {
  61. SharedPreferences.Editor editor = getEditor();
  62. editor.putInt(prefKind, this.seekBar.getProgress());
  63. editor.commit();
  64. }
  65. super.onDialogClosed(positiveResult);
  66. }
  67. private void setHintText(int delay) {
  68. if (delay == 0) {
  69. this.textView.setText(getContext().getString(R.string.delay_instantly) + hintText);
  70. } else {
  71. this.textView.setText(getContext().getString(R.string.delay_delay) + delay + getContext().getString(R.string.delay_sec) + getContext().getString(R.string.delay_then) + hintText);
  72. }
  73. }
  74. }