package com.hdl.hdllinphonesdk.dialog;
|
|
import android.app.Activity;
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.content.res.Resources;
|
import android.graphics.Point;
|
import android.graphics.drawable.ColorDrawable;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.util.DisplayMetrics;
|
import android.view.Display;
|
import android.view.Gravity;
|
import android.view.View;
|
import android.view.WindowManager;
|
import android.widget.DatePicker;
|
import android.widget.EditText;
|
import android.widget.LinearLayout;
|
import android.widget.NumberPicker;
|
import android.widget.TextView;
|
import android.widget.TimePicker;
|
|
import com.hdl.hdllinphonesdk.R;
|
|
import java.lang.reflect.Field;
|
|
public class LpTimeDialog extends Dialog {
|
|
private Context mContext;
|
private DatePicker datePicker;
|
private TimePicker timePicker;
|
private TextView cancelBtn, confirmBtn;
|
private ClickListenerInterface mClickListener;
|
|
public LpTimeDialog(Context context, ClickListenerInterface listener) {
|
super(context, R.style.video_dialog);
|
this.mContext = context;
|
this.mClickListener = listener;
|
}
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.dialog_lpsdk_time_select);
|
initView();
|
initData();
|
Display display = ((Activity) mContext).getWindowManager().getDefaultDisplay();
|
WindowManager.LayoutParams p = getWindow().getAttributes();
|
Point point = new Point();
|
display.getSize(point);
|
p.width = point.x;
|
getWindow().setGravity(Gravity.BOTTOM);
|
}
|
|
/**
|
* initView
|
*/
|
private void initView() {
|
datePicker = findViewById(R.id.lp_dialog_data_picker);
|
timePicker = findViewById(R.id.lp_dialog_time_picker);
|
cancelBtn = findViewById(R.id.lp_dialog_cancel_tv);
|
cancelBtn.setOnClickListener(view -> {
|
if (mClickListener != null)
|
mClickListener.onCancelClick(this);
|
});
|
confirmBtn = findViewById(R.id.lp_dialog_confirm_tv);
|
confirmBtn.setOnClickListener(view -> {
|
String time = datePicker.getYear() + "-" + getMonth(datePicker) + "-" + getDay(datePicker) +
|
" " + getHour(timePicker) + ":" + getMinute(timePicker);
|
|
if (mClickListener != null)
|
mClickListener.onConfirmClick(this, time);
|
});
|
}
|
|
// 获取月份
|
private String getMonth(DatePicker _datePicker) {
|
String moth_str = "";
|
int month_int = _datePicker.getMonth() + 1;
|
if (month_int < 10)
|
moth_str = "0" + month_int;
|
else
|
moth_str = month_int + "";
|
return moth_str;
|
}
|
|
// 获取日
|
private String getDay(DatePicker _datePicker) {
|
String day_str = "";
|
int day_int = _datePicker.getDayOfMonth();
|
if (day_int < 10)
|
day_str = "0" + day_int;
|
else
|
day_str = day_int + "";
|
return day_str;
|
}
|
|
// 获取小时
|
private String getHour(TimePicker _timePicker) {
|
String hour_str = "";
|
int hour_int = _timePicker.getHour();
|
if (hour_int < 10)
|
hour_str = "0" + hour_int;
|
else
|
hour_str = hour_int + "";
|
return hour_str;
|
}
|
|
// 获取分钟
|
private String getMinute(TimePicker _timePicker) {
|
String minute_str = "";
|
int minute_int = _timePicker.getMinute();
|
if (minute_int < 10)
|
minute_str = "0" + minute_int;
|
else
|
minute_str = minute_int + "";
|
return minute_str;
|
}
|
|
/**
|
* initData
|
*/
|
private void initData() {
|
timePicker.setIs24HourView(true);
|
timePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);
|
|
// setDataPickerDividerColor(datePicker);
|
//setTimePickerDividerColor(timePicker);
|
}
|
|
private void setDataPickerDividerColor(DatePicker timePicker) {
|
LinearLayout llFirst = (LinearLayout) timePicker.getChildAt(0);
|
LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(1);
|
for (int i = 0; i < mSpinners.getChildCount(); i++) {
|
if (mSpinners.getChildAt(i) instanceof NumberPicker) {
|
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
|
setPickerMargin((NumberPicker) mSpinners.getChildAt(i));
|
for (Field pf : pickerFields) {
|
if (pf.getName().equals("mSelectionDivider")) {
|
pf.setAccessible(true);
|
try {
|
pf.set(mSpinners.getChildAt(i), new ColorDrawable());
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
} catch (Resources.NotFoundException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
}
|
break;
|
}
|
}
|
}
|
}
|
}
|
|
private void setTimePickerDividerColor(TimePicker timePicker) {
|
LinearLayout llFirst = (LinearLayout) timePicker.getChildAt(0);
|
LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(1);
|
for (int i = 0; i < mSpinners.getChildCount(); i++) {
|
if (mSpinners.getChildAt(i) instanceof NumberPicker) {
|
Field[] pickerFields = NumberPicker.class.getDeclaredFields();
|
setPickerMargin((NumberPicker) mSpinners.getChildAt(i));
|
for (Field pf : pickerFields) {
|
if (pf.getName().equals("mSelectionDivider")) {
|
pf.setAccessible(true);
|
try {
|
pf.set(mSpinners.getChildAt(i), new ColorDrawable());
|
} catch (IllegalArgumentException e) {
|
e.printStackTrace();
|
} catch (Resources.NotFoundException e) {
|
e.printStackTrace();
|
} catch (IllegalAccessException e) {
|
e.printStackTrace();
|
}
|
break;
|
}
|
}
|
}
|
}
|
}
|
|
/**
|
* 设置picker之间的间距
|
*/
|
private void setPickerMargin(NumberPicker picker) {
|
LinearLayout.LayoutParams p = (LinearLayout.LayoutParams) picker.getLayoutParams();
|
p.setMargins(-getDensityValue(16, mContext), 0, -getDensityValue(16, mContext), 0);
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
p.setMarginStart(-getDensityValue(16, mContext));
|
p.setMarginEnd(-getDensityValue(16, mContext));
|
}
|
setEditTextSize(picker);
|
}
|
|
/**
|
* 设置picker字体大小
|
*/
|
private void setEditTextSize(NumberPicker np) {
|
if (null != np) {
|
for (int i = 0; i < np.getChildCount(); i++) {
|
View child = np.getChildAt(i);
|
if (child instanceof EditText) {
|
EditText editText = (EditText) child;
|
editText.setTextSize(18);
|
}
|
}
|
}
|
}
|
|
public interface ClickListenerInterface {
|
void onCancelClick(LpTimeDialog dialog);
|
|
void onConfirmClick(LpTimeDialog dialog, String startTime);
|
}
|
|
public static int getDensityValue(float value, Context activity) {
|
DisplayMetrics displayMetrics = activity.getResources().getDisplayMetrics();
|
return (int) Math.ceil(value * displayMetrics.density);
|
}
|
|
}
|