[文章]

HarmonyOS应用开发日历练习

2021-6-9 14:13:52  204 harmonyos
分享
1

日历视频_蛟龙腾飞

JLTFCalendar(日历)。语言,JAVA。显示当前日期。
一、具体效果呈现
运行项目后显示当月日历
图片1.png
二、练习核心流程与代码
项目目录
图片3.png
MainAbilitySlice.java
// 星期
private final String[] days = new String[]{"日","一","二","三","四","五","六"};

@Override
public void onStart(Intent intent) {
    super.onStart(intent);
    // 新建table布局并设置样式
    TableLayout tableLayout =  new TableLayout(getContext());
    tableLayout.setWidth(LayoutConfig.MATCH_PARENT);
    tableLayout.setHeight(LayoutConfig.MATCH_PARENT);
    ShapeElement backgroundShape = new ShapeElement();
    backgroundShape.setRgbColor(new RgbColor(255,255,0));
    tableLayout.setBackground(backgroundShape);
    tableLayout.setRowCount(6);
    tableLayout.setColumnCount(7);

    // 循环星期
    for (String s : days) {
        // 调用text并设置值
        Text text = text();
        text.setText(s);
        // 追加到table布局中
        tableLayout.addComponent(text);
    }

    // 日期
    Date date = new Date();
    // 获取年
    int year = date.getYear();
    // 获取月
    int month = date.getMonth() + 1;
    // 获取日
    int today = date.getDate();
    // 当月的天数
    int Count= new Date(year, month, 0).getDate();
    // 当月的第一天的星期
    int day = new Date(year, new Date().getMonth(), 1).getDay();
    // 是否为星期日
    if(day != 0) {
        // 循环空格
        for (int i = 0; i < day; i++) {
            // 调用text并设置值
            Text text = text();
            text.setText("");
            // 追加到table布局中
            tableLayout.addComponent(text);
        }
    }

    // 循环天数
    for (int i = 1; i <= Count; i++) {
        // 调用text并设置值
        Text text = text();
        if(today == i) {
            text.setTextColor(Color.RED);
        }
        text.setText("" + i);
        // 追加到table布局中
        tableLayout.addComponent(text);
    }
    super.setUIContent(tableLayout);
}


public Text text() {
    Text text = new Text(getContext());
    text.setWidth(150);
    text.setHeight(150);
    text.setTextSize(100);
    text.setTextColor(Color.BLUE);
    text.setTextAlignment(TextAlignment.CENTER);
    return text;
}
难点一:设置行列数
解决方法:这里采用TableLayout表格布局
每周有七天所以是7;每月天数最大为31;
所以需要5行(因为每行至多7个);最后加上显示星期的一行
一共6
背景颜色使用护眼色
难点二:每月第一天的星期的位置
解决方法:设置空白格
空格数为每月的第一天的星期数(0表示星期日。1表示星期一。。。)
// 当月的第一天的星期
    int day = new Date(year, new Date().getMonth(), 1).getDay();
附件: HarmonyOS应用开发日历练习.zip (396.7 KB, 下载次数: 1)

评论

您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发文章
快速回复
扫一扫分享
返回顶部 返回列表