README.md

News应用示例

介绍

本示例是一个帮助用户看见更大的世界的通用信息平台,将优质丰富的信息进行高效精准的分发。
整体使用Tabs容器设计应用框架,通过TabContent组件设置分页面,在子页面中绘制界面。使用自定义弹窗设置分享页面。使用stack组件实现主页面和登录弹窗的堆叠。通过不同的url访问不同的页面,包括跳转到应用内的指定页面、同应用内的某个页面替换当前页面、返回上一页面或指定的页面等。

效果预览

Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台
Android平台 iOS平台 鸿蒙平台

使用说明

1.连接网络获取新闻接口链接
2.首页推荐为新闻列表页,可下滑加载更多

  • 点击新闻进入详情页
  • 点击分享,弹出分享选项
  • 点击点赞,为文章点赞
  • 点击右上方更多图标,弹出选项 3.点击关注,进入关注页面
    4.点击视频,进入视频页面
    5.点击商城,进入商城页面
    6.点击未登录,进入登录页面

工程目录

entry/src/main/ets
|---entryability					
|   |---EntryAbility.ets			// Ability入口
|---pages             				
|   |---components                  
|   |	|---LogIn.ets				// 登录页面
|   |	|---OfflinePage.ets			// 无网络页面
|   |	|---TopSearch.ets			// 搜索栏组件
|   |---news                 		
|   |	|---NewHomeItem.ets	        // 新闻列表组件
|   |	|---NewHomePage.ets	        // 新闻首页
|   |	|---NewsDetail.ets	        // 新闻详情页面
|   |	|---NewsLazy.ets	        // 新闻数据源
|   |---util                  		
|   |	|---Common.ets				// 公共工具类
|   |	|---Mock.ets				// 模拟数据工具类
|   |	|---Request.ets				// 网络请求工具类
|   |---video                  		
|   |	|---VideoDetail.ets			// 视频播放页面
|   |	|---VideoItem.ets			// 视频列表
|   |	|---VideoLazy.ets			// 视频数据源
|   |	|---VideoPage.ets			// 视频推荐页面

具体实现

  • 基本的页面展示封装在Index,源码参考:Index.ets
    • 进入首页之后自动打开NewHomePage.ets首页tab。
      • 进入NewHomePage后通过homePageRequest()函数请求网络数据,如果请求失败则显示网络异常页面,如果请求成功则显示新闻列表。
      • 新闻列表由NewHomeItem.ets解析并显示。
      • 如果点击新闻列表中的某一条新闻,在NewHomeItem页面中会通过skipRouter()函数传递url数据并跳转到新闻详情页面NewsDetail.ets
      • 如果监听到新闻列表滑动到最下面,则会在NewHomePage.ets中自动调用homePageRequest()函数请求加载新的新闻数据。
    • 进入视频页面之后自动打开VideoPage.ets视频tab。
      • 视频tab页面分为两种显示情况,分别是有网络VideoItem.ets和无网络页面OfflinePage.ets
      • 视频列表的实现方式为在VideoPage.ets中通过LazyForEach解析显示VideoItem。
      • 当视频列表滑动到最下面时,通过onReachEnd()监听到滑到结束位置之后,自动调用homePageRequest('video')函数请求更新视频数据。
      • 点击视频则调用VideoItem.ets文件中的onClick()回调开始播放,当滑动视频列表时通过onVisibleAreaChange()回调监听视频是否可见,如果视频不可见则调用stop()函数停止播放。
    • 点击商城tab后显示Index.ets页面中的自定义组件ShopLogIn(),显示内容为您还没有登录账号。
    • 点击登录tab后显示LogInPage.ets登录页面。

相关权限

ohos.permission.INTERNET

  • 本项目使用http网络请求,请确保设备已连接网络

依赖

不涉及

约束与限制

1.本示例仅支持标准Android/iOS/鸿蒙系统上运行。

2.本示例已适配API version 12版本的ArkUI-X SDK,版本号:2.0.0.27及以上。

3.本示例需要使用DevEco Studio 5.0 Beta1 (Build Version: 5.0.3.403, built on June 21, 2024)及以上版本才可编译运行。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo /News > .git/info/sparse-checkout
git remote add origin https://gitcode.com/arkui-x/samples.git
git pull origin master