首页 > 其他分享 >andorid开发--记账本(七)

andorid开发--记账本(七)

时间:2024-02-21 20:11:59浏览次数:22  
标签:-- public 记账 dialog time andorid import android id

今天主要完成记录页面的完善,添加了时间选择对话框

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/white">
    <DatePicker
        android:id="@+id/dialog_time_dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/please_input_time"
        android:padding="10dp"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp">
        <EditText
            android:id="@+id/dialog_time_et_hour"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:maxLength="2"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text=":"
            android:textSize="20dp"
            android:textStyle="bold"/>
        <EditText
            android:id="@+id/dialog_time_et_minute"
            android:layout_width="60dp"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:maxLength="2"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:orientation="horizontal">
        <Button
            android:id="@+id/dialog_time_btn_cancel"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:textColor="@color/green_006400"
            android:background="@null"
            android:layout_marginRight="20dp"/>
        <Button
            android:id="@+id/dialog_time_btn_ensure"
            android:layout_width="80dp"
            android:layout_height="wrap_content"
            android:text="@string/ensure"
            android:textColor="@color/green_006400"
            android:background="@null"
            android:layout_marginRight="20dp"/>
    </LinearLayout>
    
</LinearLayout>
package com.example.myapplication.utils;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

import androidx.annotation.NonNull;

import com.example.myapplication.R;

/*
 * 记录页面弹出时间的对话框*/
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);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.dialog_time_btn_cancel) {
            cancel();
        } else if (v.getId() == 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();
        }
    }

//    //隐藏dataPicker的头布局
//    private void hideDatePickerHeader() {
//        ViewGroup rootView = (ViewGroup) datePicker.getChildAt(0);
//        if (rootView == null) {
//            return;
//        }
//        View headView = rootView.getChildAt(0);
//        if (headView == null) {
//            return;
//        }
//        int headerID = getContext().getResources().getIdentifier("day_picker_selector_layout", "id", "android");
//        if(headerID==headView.getId()){
//            headView.setVisibility(View.GONE);
//            ViewGroup.LayoutParams layoutParamsRoot=rootView.getLayoutParams();
//            layoutParamsRoot.width=ViewGroup.LayoutParams.WRAP_CONTENT;
//            rootView.setLayoutParams(layoutParamsRoot);
//
//            ViewGroup childAt = (ViewGroup) rootView.getChildAt(1);
//        }
//    }
}

标签:--,public,记账,dialog,time,andorid,import,android,id
From: https://www.cnblogs.com/gyg1222/p/18022224

相关文章

  • 《程序是怎样跑起来的》第十章:汇编语言与程序实际构成
    在高级编程语言和用户界面之下,隐藏着复杂的机器语吉和汇编语言,它们是实际指挥计管机宁成每一个操作的“底层力量”。汇编语言,作为与机器语言最为接近的编程语言,为我们提供了一个独特的视角来了解程序的真正构成。它直接对应着计算机硬件的操作,每一个汇编指令几乎都可以直接映射到......
  • 33: 三个数的最大值
    题目描述有三个整数abc,由键盘输入,输出其中的最大的数。 输入一行数组,分别为abc 输出abc其中最大的数 输入样例102030 输出样例30 分析和代码根据题意编写代码即可#include<bits/stdc++.h>usingnamespacestd;intmain(){inta,......
  • 人类智慧
    记录在各种题目看到的人类智慧操作。$\sum\limits_{i=1}^{n}(i\text{约数个数})\implies\prod\limits_{i=1}^k(\sum\limits_{j=1}^{c_i}p_i^j)$。(P3497[JLOI2014]聪明的燕姿)网格图上最短路径计数问题\(\implies\)拆成横向和纵向移动;对于每一块2*2连通都只用连三......
  • Dockerfile 使用
    dockerfile编写详见:https://www.cnblogs.com/liyuanhong/articles/13265836.html使用dockerfile创建一个node应用的镜像编写一个app.js的文件,代码如下:varhttp=require("http");http.createServer(function(request,response){response.writeHead(200,{"Content-Typ......
  • 进行开发1
    开发流程一:初始思路:1、引导页设计:引导页主要包含app运行时的图片,这里先用普通照片代替。在app启动界面设置引导页,第一次启动进入引导页,第二次跳过引导导页进入app主界面。2、登录界面设计:感觉注册跟记账的关联不大,这里先不设计。3、主页面设计:单一界面,分成......
  • 对于计算机汇编语言的认识(《程序是怎样跑起来的》第10章)
    通过阅读程序《程序是怎样跑起来的》第10章,我对于汇编语言的知识有了一定的了解。通过阅读,我认为汇编语言是介于程序员所编写的高级语言和CPU能读懂的机器语言之间的以供深入了解计算机运行原理,同时可以直观看到程序运行问题所在的语言。因为汇编语言是为机器语言添加助记符,如此可......
  • 128. 最长连续序列C
    o(n)现在水平不够。采用先快排序,再找。O(nlogn),注意每次划分枢纽选择中间节点(中间节点和首节点互换)intdivide(int*nums,inthead,inttail){intx=nums[(head+tail)/2];nums[(head+tail)/2]=nums[head];nums[head]=x;intt=nums[head];while(head<ta......
  • 读《程序是怎样跑起来的》三、四章有感
    我在《程序是怎样跑起来的》第三章主要学到了计算机进行小数运算时出错的原因。计算机内部所有的信息都是以二进制数的形式来处理的,在这一点上整数和小数没有区别。将1011.0011这个有小数的二进制数转换成十进制数,如图了解将二进制数表示的小数转换成十进制数,那计算机运算出错的......
  • 遇到过的rsa解题总结
    rsa证明c=m**emodnm=c**dmodn将式1带入式2 得 m = (m ^ e % N ) ^ d % N需要证明:m == ( m ^ e % N ) ^ d % N(me%N)d%N=>  (me)d%N #模运算 a ^ b % p = ((a % p) ^ b) % pm^(e*d)%N #幂的乘方,底数不变,指数相乘将 e * d......
  • 力扣递归之 236. 二叉树的最近公共祖先
    给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例1:输入:root=[3,5,1,6,2,0,8,null,n......