bd985fb53b31904fef3bfe544677ddd234c76b48.svn-base 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package eVVM.apk.helper.basepicker;
  2. import android.app.Dialog;
  3. import android.content.Context;
  4. import android.text.TextUtils;
  5. import android.view.Gravity;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.Window;
  9. import android.view.WindowManager;
  10. import android.widget.TextView;
  11. import java.util.ArrayList;
  12. import java.util.List;
  13. import eVVM.apk.R;
  14. /**
  15. * Created by Android Studio.
  16. * User: zbb
  17. * Date: 2019/6/4
  18. * Describe: DataPickerDialog
  19. */
  20. public class DataPickerDialog extends Dialog {
  21. private Params params;
  22. public DataPickerDialog(Context context, int themeResId) {
  23. super(context, themeResId);
  24. }
  25. private void setParams(DataPickerDialog.Params params) {
  26. this.params = params;
  27. }
  28. public void setSelection(String itemValue) {
  29. if (params.dataList.size() > 0) {
  30. int idx = params.dataList.indexOf(itemValue);
  31. if (idx >= 0) {
  32. params.initSelection = idx;
  33. params.loopData.setCurrentItem(params.initSelection);
  34. }
  35. }
  36. }
  37. public interface OnDataSelectedListener {
  38. void onDataSelected(String itemValue);
  39. }
  40. private static final class Params {
  41. private boolean shadow = true;
  42. private boolean canCancel = true;
  43. private LoopMsgView loopData;
  44. private String title;
  45. private String unit;
  46. private int initSelection;
  47. private OnDataSelectedListener callback;
  48. private final List<String> dataList = new ArrayList<>();
  49. }
  50. public static class Builder {
  51. private final Context context;
  52. private final DataPickerDialog.Params params;
  53. public Builder(Context context) {
  54. this.context = context;
  55. params = new DataPickerDialog.Params();
  56. }
  57. private final String getCurrDateValue() {
  58. return params.loopData.getCurrentItemValue();
  59. }
  60. public Builder setData(List<String> dataList) {
  61. params.dataList.clear();
  62. params.dataList.addAll(dataList);
  63. return this;
  64. }
  65. public Builder setTitle(String title) {
  66. params.title = title;
  67. return this;
  68. }
  69. public Builder setUnit(String unit) {
  70. params.unit = unit;
  71. return this;
  72. }
  73. public Builder setSelection(int selection) {
  74. params.initSelection = selection;
  75. return this;
  76. }
  77. public Builder setOnDataSelectedListener(OnDataSelectedListener onDataSelectedListener) {
  78. params.callback = onDataSelectedListener;
  79. return this;
  80. }
  81. public DataPickerDialog create() {
  82. final DataPickerDialog dialog = new DataPickerDialog(context, params.shadow ? R.style.Theme_Light_NoTitle_Dialog : R.style.Theme_Light_NoTitle_NoShadow_Dialog);
  83. View view = LayoutInflater.from(context).inflate(R.layout.layout_picker_data, null);
  84. if (!TextUtils.isEmpty(params.title)) {
  85. TextView txTitle = (TextView) view.findViewById(R.id.tx_title);
  86. txTitle.setText(params.title);
  87. }
  88. if (!TextUtils.isEmpty(params.unit)) {
  89. TextView txUnit = (TextView) view.findViewById(R.id.tx_unit);
  90. txUnit.setText(params.unit);
  91. }
  92. final LoopMsgView loopData = (LoopMsgView) view.findViewById(R.id.loop_data);
  93. loopData.setArrayList(params.dataList);
  94. loopData.setNotLoop();
  95. if (params.dataList.size() > 0) loopData.setCurrentItem(params.initSelection);
  96. view.findViewById(R.id.tx_finish).setOnClickListener(new View.OnClickListener() {
  97. @Override
  98. public void onClick(View v) {
  99. dialog.dismiss();
  100. params.callback.onDataSelected(getCurrDateValue());
  101. }
  102. });
  103. Window win = dialog.getWindow();
  104. win.getDecorView().setPadding(0, 0, 0, 0);
  105. WindowManager.LayoutParams lp = win.getAttributes();
  106. lp.width = WindowManager.LayoutParams.MATCH_PARENT;
  107. lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
  108. win.setAttributes(lp);
  109. win.setGravity(Gravity.BOTTOM);
  110. win.setWindowAnimations(R.style.Animation_Bottom_Rising);
  111. dialog.setContentView(view);
  112. dialog.setCanceledOnTouchOutside(params.canCancel);
  113. dialog.setCancelable(params.canCancel);
  114. params.loopData = loopData;
  115. dialog.setParams(params);
  116. return dialog;
  117. }
  118. }
  119. }