# 天气APP(简易版) **Repository Path**: lucze/weather-app ## Basic Information - **Project Name**: 天气APP(简易版) - **Description**: 内部包含所需文档与AI提问信息和完整代码,重新将文档给AI可以重新制作类似的天气APP - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-19 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 天气APP(简易版) 内部包含所需文档与AI提问信息和完整代码,重新将文档给AI可以重新制作类似的天气APP #### 介绍 应用名称:WeatherApp(天气预报应用) 核心功能:基于城市天气API,提供多城市管理、天气查询与可视化展示 技术栈:Java + Retrofit + MPAndroidChart + SharedPreferences + ViewPager2 三个页面: 主页:支持滑动切换城市,展示当前天气、7天预报和温度趋势 城市列表:管理已添加城市,支持搜索、添加、删除 城市详情:展示城市详细天气数据,支持添加到主页 #### 软件架构 app/ ├── manifests/ │ └── AndroidManifest.xml ├── java/com/example/weatherapplication/ │ ├── assets/ │ │ └── city.json (全国城市列表) │ ├── WeatherMainActivity.java (主页Activity) │ ├── CityListActivity.java (城市列表Activity) │ ├── CityDetailActivity.java (城市详情Activity) │ ├── WeatherPagerAdapter.java (ViewPager2适配器) │ ├── WeatherPageFragment.java (单城市天气Fragment) │ ├── adapter/ │ │ ├── ForecastAdapter.java (7天预报适配器) │ │ └── CityListAdapter.java (城市列表适配器) │ ├── model/ │ │ ├── City.java (城市模型) │ │ ├── Forecast.java (预报数据模型) │ │ └── WeatherData.java (完整天气数据模型) │ ├── network/ │ │ ├── WeatherApiService.java (Retrofit接口) │ │ └── ApiClient.java (Retrofit客户端) │ ├── ui/ │ │ └── AboutDialogFragment.java (About对话框) │ └── utils/ │ ├── SharedPreferencesManager.java (SP管理) │ ├── CitySearchHelper.java (城市搜索) │ ├── WeatherDataParser.java (JSON解析) │ ├── WeatherCacheManager.java (内存缓存) │ └── NetworkCheck.java (网络检测) ├── res/ │ ├── layout/ │ │ ├── activity_weather_main.xml (主页布局) │ │ ├── activity_city_list.xml (城市列表布局) │ │ ├── activity_city_detail.xml (城市详情布局) │ │ ├── item_weather_page.xml (单城市页面布局) │ │ ├── item_city_list.xml (城市列表项) │ │ ├── item_forecast.xml (预报列表项) │ │ └── dialog_about.xml (About对话框) │ ├── drawable/ │ │ ├── tab_dot_selector.xml │ │ ├── tab_dot_selected.xml │ │ ├── tab_dot_unselected.xml │ │ ├── rounded_button.xml │ │ ├── circle_button.xml │ │ ├── dialog_background.xml │ │ └── search_background.xml │ ├── menu/ │ │ └── main_menu.xml │ ├── values/ │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── themes.xml #### 核心功能 1. 网络请求与数据解析 Retrofit封装:WeatherApiService + ApiClient 统一管理 JSON解析:WeatherDataParser 使用Gson解析,自动提取温度数字 错误处理:网络错误、解析错误均有Snackbar/Toast提示 2. 数据缓存策略 内存缓存:WeatherCacheManager 使用HashMap存储,30分钟过期 持久化:SharedPreferencesManager 存储城市列表,JSON格式 缓存优先级:优先读取缓存 → 再发起网络请求 → 更新缓存 3. 主页功能 上拉抽屉:CoordinatorLayout + AppBarLayout + NestedScrollView 收起:显示当前温度、天气类型、AQI按钮 展开:显示7天列表 + 折线图 城市切换:ViewPager2 + TabLayout 圆点指示器 滑动切换触发自动刷新 Tab圆点颜色区分选中/未选中 4. 城市列表 搜索功能:CitySearchHelper 从assets加载city.json,模糊匹配城市名 已添加城市:只显示已保存城市,点击返回主页并切换 搜索结果:显示城市代码,点击进入详情页 5. 城市详情 图表展示:MPAndroidChart 折线图,最高温(红)/最低温(蓝) 添加功能:点击后保存城市,立即跳转主页并定位 6. 删除功能 长按提示:用户长按列表项提示删除按钮位置 删除按钮:点击移除城市,至少保留1个城市 实时同步:主页Tab圆点数量实时更新