You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android应用中根据日期时间设置默认加载页面?

Android 日历应用按日期加载对应页面实现方案

1. 计算日期对应的页码(年中天数)

核心逻辑是获取指定时间戳对应的日期是当年的第几天,返回值直接作为页面序号即可:

  • 兼容Android 7.0及以下版本用Calendar实现:
// 传入对应日期的时间戳timestamp,单位为毫秒
public int getDayOfYear(long timestamp) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(timestamp);
    return calendar.get(Calendar.DAY_OF_YEAR);
}
  • 项目minSdk >= 26可以用更简洁的LocalDate实现:
public int getDayOfYear(long timestamp) {
    Instant instant = Instant.ofEpochMilli(timestamp);
    LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
    return localDate.getDayOfYear();
}

注意:闰年返回值最大为366,你可以根据需求兼容处理,比如默认映射到第365页,或者额外添加一张对应第366天的图片。

2. 根据页码加载对应图片资源

你可以把365张图片按day_1.png、day_2.png...day_365.png的规则命名后放在res/drawable目录下,通过以下代码动态获取资源ID加载:

public int getImageResByPage(int page, Context context) {
    // 兼容闰年情况,超过365的页码默认取第365页
    page = Math.min(page, 365);
    return context.getResources().getIdentifier("day_" + page, "drawable", context.getPackageName());
}

调用后拿到资源ID直接设置给ImageView即可。

3. 默认跳转到对应页面

如果你的页面容器用的是ViewPager/ViewPager2,直接把计算得到的页码减1(因为容器下标从0开始)设为当前选中项即可:

// 示例:打开应用默认跳转到当日对应页面
long currentTimeMillis = System.currentTimeMillis();
int targetPage = getDayOfYear(currentTimeMillis);
// ViewPager设置
viewPager.setCurrentItem(targetPage - 1);
// ViewPager2设置
viewPager2.setCurrentItem(targetPage - 1);

内容的提问来源于stack exchange,提问作者Sathish Guru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:06:02