记账本
SelectTimeDialog.java
public class SelectTimeDialog extends Dialog implements View.OnClickListener { EditText hourEt,minuteEt; DatePicker datePicker; Button ensureBtn,cancelBtn; public interface OnEnsureListener{ public void onEnsure(String time,int year,int month,int day); } OnEnsureListener onEnsureListener; public void setOnEnsureListener(OnEnsureListener onEnsureListener) { this.onEnsureListener = onEnsureListener; } public SelectTimeDialog(@NonNull Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_time); hourEt = findViewById(R.id.dialog_time_et_hour); minuteEt = findViewById(R.id.dialog_time_et_minute); datePicker = findViewById(R.id.dialog_time_dp); ensureBtn = findViewById(R.id.dialog_time_btn_ensure); cancelBtn = findViewById(R.id.dialog_time_btn_cancel); ensureBtn.setOnClickListener(this); //添加点击监听事件 cancelBtn.setOnClickListener(this); hideDatePickerHeader(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_time_btn_cancel: cancel(); break; case R.id.dialog_time_btn_ensure: int year = datePicker.getYear(); //选择年份 int month = datePicker.getMonth()+1; int dayOfMonth = datePicker.getDayOfMonth(); String monthStr = String.valueOf(month); if (month<10){ monthStr = "0"+month; } String dayStr = String.valueOf(dayOfMonth); if (dayOfMonth<10){ dayStr="0"+dayOfMonth; } // 获取输入的小时和分钟 String hourStr = hourEt.getText().toString(); String minuteStr = minuteEt.getText().toString(); int hour = 0; if (!TextUtils.isEmpty(hourStr)) { hour = Integer.parseInt(hourStr); hour=hour%24; } int minute = 0; if (!TextUtils.isEmpty(minuteStr)) { minute = Integer.parseInt(minuteStr); minute=minute%60; } hourStr=String.valueOf(hour); minuteStr=String.valueOf(minute); if (hour<10){ hourStr="0"+hour; } if (minute<10){ minuteStr="0"+minute; } String timeFormat = year+"年"+monthStr+"月"+dayStr+"日 "+hourStr+":"+minuteStr; if (onEnsureListener!=null) { onEnsureListener.onEnsure(timeFormat,year,month,dayOfMonth); } cancel(); break; } } //隐藏DatePicker头布局 private void hideDatePickerHeader(){ ViewGroup rootView = (ViewGroup) datePicker.getChildAt(0); if (rootView == null) { return; } View headerView = rootView.getChildAt(0); if (headerView == null) { return; } //5.0+ int headerId = getContext().getResources().getIdentifier("day_picker_selector_layout", "id", "android"); if (headerId == headerView.getId()) { headerView.setVisibility(View.GONE); ViewGroup.LayoutParams layoutParamsRoot = rootView.getLayoutParams(); layoutParamsRoot.width = ViewGroup.LayoutParams.WRAP_CONTENT; rootView.setLayoutParams(layoutParamsRoot); ViewGroup animator = (ViewGroup) rootView.getChildAt(1); ViewGroup.LayoutParams layoutParamsAnimator = animator.getLayoutParams(); layoutParamsAnimator.width = ViewGroup.LayoutParams.WRAP_CONTENT; animator.setLayoutParams(layoutParamsAnimator); View child = animator.getChildAt(0); ViewGroup.LayoutParams layoutParamsChild = child.getLayoutParams(); layoutParamsChild.width = ViewGroup.LayoutParams.WRAP_CONTENT; child.setLayoutParams(layoutParamsChild); return; } // 6.0+ headerId = getContext().getResources().getIdentifier("date_picker_header","id","android"); if (headerId == headerView.getId()) { headerView.setVisibility(View.GONE); } } }
AccountAdapter.java
public class AccountAdapter extends BaseAdapter { Context context; List<AccountBean>mDatas; LayoutInflater inflater; int year,month,day; public AccountAdapter(Context context, List<AccountBean> mDatas) { this.context = context; this.mDatas = mDatas; inflater = LayoutInflater.from(context); Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH)+1; day = calendar.get(Calendar.DAY_OF_MONTH); } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = inflater.inflate(R.layout.item_mainlv,parent,false); holder = new ViewHolder(convertView); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } AccountBean bean = mDatas.get(position); holder.typeIv.setImageResource(bean.getsImageId()); holder.typeTv.setText(bean.getTypename()); holder.beizhuTv.setText(bean.getBeizhu()); holder.moneyTv.setText("¥ "+bean.getMoney()); if (bean.getYear()==year&&bean.getMonth()==month&&bean.getDay()==day) { String time = bean.getTime().split(" ")[1]; holder.timeTv.setText("今天 "+time); }else { holder.timeTv.setText(bean.getTime()); } return convertView; } class ViewHolder{ ImageView typeIv; TextView typeTv,beizhuTv,timeTv,moneyTv; public ViewHolder(View view){ typeIv = view.findViewById(R.id.item_mainlv_iv); typeTv = view.findViewById(R.id.item_mainlv_tv_title); timeTv = view.findViewById(R.id.item_mainlv_tv_time); beizhuTv = view.findViewById(R.id.item_mainlv_tv_beizhu); moneyTv = view.findViewById(R.id.item_mainlv_tv_money); } } }
dialog btn_ bg.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- 四个角设定弧度--> <corners android:radius="20dp"/> <!-- 填充颜色--> <solid android:color="@color/white"/> <stroke android:color="@color/green_006400" android:width="3dp"/> </shape>
BudgetDialog.java
public class BudgetDialog extends Dialog implements View.OnClickListener { ImageView cancelIv; Button ensureBtn; EditText moneyEt; public interface OnEnsureListener{ public void onEnsure(float money); } OnEnsureListener onEnsureListener; public void setOnEnsureListener(OnEnsureListener onEnsureListener) { this.onEnsureListener = onEnsureListener; } public BudgetDialog(@NonNull Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_budget); cancelIv = findViewById(R.id.dialog_budget_iv_error); ensureBtn = findViewById(R.id.dialog_budget_btn_ensure); moneyEt = findViewById(R.id.dialog_budget_et); cancelIv.setOnClickListener(this); ensureBtn.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_budget_iv_error: cancel(); //取消对话框 break; case R.id.dialog_budget_btn_ensure: //获取输入数据数值 String data = moneyEt.getText().toString(); if (TextUtils.isEmpty(data)) { Toast.makeText(getContext(),"输入数据不能为空!",Toast.LENGTH_SHORT).show(); return; } float money = Float.parseFloat(data); if (money<=0) { Toast.makeText(getContext(),"预算金额必须大于0",Toast.LENGTH_SHORT).show(); return; } if (onEnsureListener!=null) { onEnsureListener.onEnsure(money); } cancel(); break; } } /* 设置Dialog的尺寸和屏幕尺寸一致*/ public void setDialogSize(){ // 获取当前窗口对象 Window window = getWindow(); // 获取窗口对象的参数 WindowManager.LayoutParams wlp = window.getAttributes(); // 获取屏幕宽度 Display d = window.getWindowManager().getDefaultDisplay(); wlp.width = (int)(d.getWidth()); //对话框窗口为屏幕窗口 wlp.gravity = Gravity.BOTTOM; window.setBackgroundDrawableResource(android.R.color.transparent); window.setAttributes(wlp); handler.sendEmptyMessageDelayed(1,100); } Handler handler = new Handler(){ @Override public void handleMessage(@NonNull Message msg) { //自动弹出软键盘的方法 InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS); } }; }

浙公网安备 33010602011771号