package com.shanzhou.appmodel.view.activity; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.text.Editable; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.DatePicker; import android.widget.EditText; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.TextView; import android.widget.TimePicker; import com.bigkoo.pickerview.builder.TimePickerBuilder; import com.bigkoo.pickerview.listener.OnTimeSelectChangeListener; import com.bigkoo.pickerview.listener.OnTimeSelectListener; import com.bigkoo.pickerview.view.TimePickerView; import com.lzy.okgo.OkGo; import com.lzy.okgo.model.Response; import com.shanzhou.appmodel.R; import com.shanzhou.appmodel.callback.TextWatcherListener; import com.shanzhou.appmodel.http.BaseBean; import com.shanzhou.appmodel.http.UnEncryptionCallback; import com.shanzhou.appmodel.http.Url; import com.shanzhou.appmodel.utils.TextUtil; import com.shanzhou.appmodel.view.base.BaseActivity; import com.shanzhou.appmodel.widget.LoadingDialog; import java.sql.Time; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import static com.shanzhou.appmodel.utils.Constant.PUBLISH_RESULTCODE; /** * @ClassName: PublishActivity * @Description: 发布页面 * @Author: YangKuan * @Date: 2019/3/27 11:06 */ public class AddActivity extends BaseActivity { private int mYear; private int mMonth; private int mDay; private int mYea; private int mMont; private TimePickerView pvTime; private int mDa; String log; Calendar calendar = Calendar.getInstance(Locale.CHINA); @BindView(R.id.btn_back) ImageButton btnBack;//返回按钮 @BindView(R.id.tv_title) TextView tvTitle;//标题 @BindView(R.id.tv_submit) TextView tvSubmit;//提交 @BindView(R.id.et_name) EditText etName;//名称 @BindView(R.id.et_link) EditText etLink;//链接 @BindView(R.id.et_total) EditText etTotal;//总数 @BindView(R.id.et_finish) EditText etFinish;//完成数 @BindView(R.id.et_instruction) EditText etInstruction;//说明 @BindView(R.id.et_remarks) EditText etRemarks;//备注 @BindView(R.id.start_time) TextView start_time;//开始时间 @BindView(R.id.st_time) TextView st1_time; boolean flag=true; boolean ischeck=true; private LoadingDialog loadingDialog;//加载弹窗 private String httpUrl = "";//网络请求链接 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add); ButterKnife.bind(this); } @Override public void initView() { initTimePicker(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss //获取当前时间 Date date = new Date(System.currentTimeMillis()); log=simpleDateFormat.format(date); Calendar ca = Calendar.getInstance(); mYear = ca.get(Calendar.YEAR); mMonth = ca.get(Calendar.MONTH); mDay = ca.get(Calendar.DAY_OF_MONTH); mYea = ca.get(Calendar.YEAR); mMont = ca.get(Calendar.MONTH); mDa = ca.get(Calendar.DAY_OF_MONTH); loadingDialog = new LoadingDialog(this); tvTitle.setTextColor(getColour(R.color.c_333333)); btnBack.setImageResource(R.drawable.ic_arrow_back_black); start_time.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /* flag=true; new DatePickerDialog(AddActivity.this, onDateSetListener, mYear, mMonth, mDay).show();*/ if (pvTime != null) { flag=true; pvTime.show(view);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view } } }); st1_time.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (pvTime != null) { flag=false; pvTime.show(view);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view } /* flag=false; new DatePickerDialog(AddActivity.this, onDateSetListener, mYear, mMonth, mDay).show();*/ } }); tvTitle.setText("发布"); tvSubmit.setVisibility(View.VISIBLE); Bundle bundle = getBundle(); if (bundle != null) { int num = bundle.getInt("pageNum"); if (num == 0) { httpUrl = Url.urlPublish; } else { httpUrl = Url.getPublishUrl(num); } } } private void initTimePicker() { pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() { @Override public void onTimeSelect(Date date, View v) { if (flag){ Log.d("news","true"); start_time.setText(getTime(date)); } else { Log.d("newse","e"); st1_time.setText(getTime(date)); } /* start_time.setText(getTime(date));*/ Log.i("pvTime", "onTimeSelect"); } }) .setTimeSelectChangeListener(new OnTimeSelectChangeListener() { @Override public void onTimeSelectChanged(Date date) { Log.i("pvTime", "onTimeSelectChanged"); } }) .setType(new boolean[]{true, true, true, true, true, true}) .isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。 .build(); Dialog mDialog = pvTime.getDialog(); if (mDialog != null) { FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM); params.leftMargin = 0; params.rightMargin = 0; pvTime.getDialogContainerLayout().setLayoutParams(params); Window dialogWindow = mDialog.getWindow(); if (dialogWindow != null) { dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式 dialogWindow.setGravity(Gravity.BOTTOM);//改成Bottom,底部显示 } } } private String getTime(Date date) {//可根据需要自行截取数据显示 Log.d("getTime()", "choice date millis: " + date.getTime()); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return format.format(date); } /** * 日期选择器对话框监听 */ private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { mYear = year; mMonth = monthOfYear; mDay = dayOfMonth; String days; if (mMonth + 1 < 10) { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-").append("0"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } else { if (mDay < 10) { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append("0").append(mDay).append("").toString(); } else { days = new StringBuffer().append(mYear).append("-"). append(mMonth + 1).append("-").append(mDay).append("").toString(); } } if (flag){ Log.d("news","true"); start_time.setText(days); } else { Log.d("newse","e"); st1_time.setText(days); } } }; @Override public void setListener() { etTotal.addTextChangedListener(new TextWatcherListener() { @Override public void afterTextChanged(Editable s) { String finishNumStr = etFinish.getText().toString(); if (!TextUtil.isEmpty(finishNumStr)) { int finishNum = Integer.parseInt(finishNumStr); if (!TextUtil.isEmpty(s)) { int totalNum = Integer.parseInt(s.toString()); if (totalNum < finishNum) { showToast("完成数不能超过总数量!"); } } } } }); etFinish.addTextChangedListener(new TextWatcherListener() { @Override public void afterTextChanged(Editable s) { String totalNumStr = etTotal.getText().toString(); if (!TextUtil.isEmpty(totalNumStr)) { int totalNum = Integer.parseInt(totalNumStr); if (!TextUtil.isEmpty(s)) { int finishNum = Integer.parseInt(s.toString()); if (totalNum < finishNum) { showToast("完成数不能超过总数量!"); } } } } }); } @OnClick({R.id.btn_back, R.id.tv_submit}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_back: //返回 finish(); break; case R.id.tv_submit: //提交 String nameStr = etName.getText().toString();//名称 String linkStr = etLink.getText().toString();//链接 String totalStr = etTotal.getText().toString();//总数 String finishStr = etFinish.getText().toString();//完成数 String instructionStr = etInstruction.getText().toString();//说明 String remarksStr = etRemarks.getText().toString();//备注 String endtimeStr=start_time.getText().toString(); String log=st1_time.getText().toString(); if (TextUtil.isEmpty(nameStr)) { showToast("请输入名称"); break; } if (TextUtil.isEmpty(endtimeStr)) { showToast("请输入截止时间"); break; } if (TextUtil.isEmpty(linkStr)) { showToast("请输入链接"); break; } if (TextUtil.isEmpty(totalStr)) { showToast("请输入总数"); break; } if (TextUtil.isEmpty(finishStr)) { showToast("请输入完成数"); break; } if (Integer.parseInt(totalStr) < Integer.parseInt(finishStr)) { showToast("完成数不能超过总数量!"); break; } if (TextUtil.isEmpty(instructionStr)) { showToast("请输入说明"); break; } if (TextUtil.isEmpty(remarksStr)) { showToast("请输入备注"); break; } publishData(nameStr, linkStr, totalStr, instructionStr, finishStr, remarksStr,endtimeStr,log); break; default: break; } } /** * 发布 */ private void publishData(String name, String link, String total, String instruction, String finish, String remarks,String endtime,String log) { if (loadingDialog != null && !loadingDialog.isShowing()) { loadingDialog.show(); } OkGo.post(httpUrl) .params("webname", name)//名称 .params("linkurl", link)//链接 .params("number", total)//总数量 .params("intro", instruction)//说明 .params("finish", finish)//完成数(完成数不能小于总数) .params("way", remarks)//备注 .params("endtime", endtime)//截止时间 .params("addtime", log)//截止时间 .execute(new UnEncryptionCallback () { @Override public void error(Response response) { showToast(getString(R.string.server_error)); if (loadingDialog != null && loadingDialog.isShowing()) { loadingDialog.dismiss(); } } @Override public void response(BaseBean bean, int stateCode, String message, long timeDifference) { if (loadingDialog != null && loadingDialog.isShowing()) { loadingDialog.dismiss(); } if (stateCode == 1) { setResult(PUBLISH_RESULTCODE); finish(); } showToast(message); } }); } /** * 时间选择 * * @param activity * @param themeResId * @param tv * @param calendar */ public static void showTimePickerDialog(Activity activity, int themeResId, final TextView tv, Calendar calendar) { // Calendar c = Calendar.getInstance(); // 创建一个TimePickerDialog实例,并把它显示出来 // 解释一哈,Activity是context的子类 new TimePickerDialog(activity, themeResId, // 绑定监听器 new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { tv.setText(hourOfDay + ":" + minute + ""); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String tv = formatter.format(new Date()); } } // 设置初始时间 , calendar.get(Calendar.HOUR_OF_DAY) , calendar.get(Calendar.MINUTE) // true表示采用24小时制 , true).show(); } /* @Override public void onClick(View view) { switch (view.getId()) { case R.id.end_time: kktp(true); break; case R.id.st1_time: kktp(false); break; } } private void kktp(boolean ischeck) { Log.d("name", String.valueOf(ischeck)); if (ischeck){ Log.d("news1","true"); showTimePickerDialog(this, 4, end_time, calendar); } else { Log.d("newse2","e"); showTimePickerDialog(this, 4, st_time, calendar); } }*/ } 代码中包含两个时间选择器 一个是PickerView 一个是原生自带,都比较简单, implementation 'com.contrarywind:Android-PickerView:4.1.6'