专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

鸿蒙上实现世界杯主界面

  最近在看社区提供的appsamples,其中有一个线性容器ArrayList,看我后让我想起Android中Scroll与ListView嵌套使用时需要解决的滑动冲突问题。
  我想在OpenHarmony系统上是否也存在类似问题,Scroll与List嵌套后是否存在滑动问题?
  Scroll内嵌套List先说个结论:不会出现List中只显示一个item问题滑动事件不会冲突,在List区域可以滑动列表,在非List区域可以滑动Scroll滚动时,若List不设置宽高,则默认全部加载,在对性能有要求的场景下建议指定List的宽高
  基础信息
  Scroll和List都属于基础容器:
  Scroll:可滚动的容器组件,当子组件的布局尺寸超过父组件的尺寸时,内容可以滚动。
  官方介绍:https:gitee。comopenharmonydocsblobmasterzhcnapplicationdevreferencearkuitstscontainerscroll。md
  List:列表包含一系列相同宽度的列表项。适合连续、多行呈现同类数据,例如图片和文本。
  官方介绍:https:gitee。comopenharmonydocsblobmasterzhcnapplicationdevreferencearkuitstscontainerlist。md
  需求
  既然在OpenHarmony系统中Scroll与List不存在冲突问题,我们做一些其他的尝试,让Scroll与List的滚动结合实现联动。
  场景:实现世界杯主界面,包括球员banner、赛事、积分榜。启动页,3s后进入主页面头部显示球员banner,首次显示3个球员,每隔3秒切换一个球员球赛列表,包括:对战球队、比分、比赛状态(未开赛、已结束、进行中)、赛程球赛列表拉到最后一条,触发全屏显示积分榜点击返回首页,返回到页面顶部,球赛列表返回首条显示在一个页面中实现草图如下:
  效果如下:
  开发环境IDE:DevEcoStudio3。0Beta4BuildVersion:3。0。0。992,builtonJuly14,2022SDK:FullSDK93。2。7。6系统:OpenHarmonyv3。2beta3
  实践
  声明:示例中的数据的自己构建的,只为示例显示使用,与实际比赛数据存在差异,请忽略。创建项目
  说明:在DevEcoStudioIDE中构建OpenHarmonyStage模型项目,SDK选择9(3。2。7。6)。
  关键代码import{BaseDataSource}from。。MainAbilitymodelBaseDataSourceimport{Information}from。。MainAbilitymodelInformationimport{MatchInfo,MatchState}from。。MainAbilitycommonFlagDataimport{MatchDataResource}from。。MainAbilitymodelMatchDataResourceimport{BannerDataResource}from。。MainAbilitymodelBannerDataResourceconstTAG:stringScrollList0代表滚动到List顶部,1代表中间值,2代表滚动到List底部constSCROLLLISTPOSITION{START:0,CENTER:1,END:2}constLISTSTART{TOP:0,BUTTON:1}classMatchDataSourceextendsBaseDataSourceInformation{constructor(infos:Information〔〕){super(infos)}}classBannerDataSourceextendsBaseDataSourceBannerDataResource{constructor(infos:BannerDataResource〔〕){super(infos)}}functionmock():Information〔〕{varinfos〔〕for(vari0;i10;i){varitemnewInformation()item。idiitem。stateMath。floor(Math。random()2)获取02的随机整数varhomeIndex:numberMath。floor(Math。random()12)获取012的随机整数item。homeNameMatchInfo〔homeIndex〕。nameitem。homeFlagMatchInfo〔homeIndex〕。resourcevarawayFieldIndex:numberMath。floor(Math。random()12)获取012的随机整数if(awayFieldIndexhomeIndex){awayFieldIndexMath。floor(Math。random()12)获取012的随机整数}item。awayFieldNameMatchInfo〔awayFieldIndex〕。nameitem。awayFieldFlagMatchInfo〔awayFieldIndex〕。resourceif(item。state!MatchState。NOTSTART){item。homeScoreMath。floor(Math。random()6)item。awayFiledScoreMath。floor(Math。random()6)}vardata:numberMath。floor(Math。random()20)获取020的随机整数vartime:numberMath。floor(Math。random()24)获取024的随机整数item。gameTime12datatime:00infos〔i〕item}returninfos}functionmockBanner():BannerDataResource〔〕{varbanners〔{id:1,resource:r(app。media。banner01)},{id:2,resource:r(app。media。banner02)},{id:3,resource:r(app。media。banner03)},{id:4,resource:r(app。media。banner04)},{id:5,resource:r(app。media。banner05)}〕returnbanners}EntryComponentstructIndex{privatelistPosition:numberSCROLLLISTPOSITION。STARTStateprivatelistState:numberLISTSTART。TOPprivatescrollerForScroll:ScrollernewScroller()可滚动容器组件的控制器privatescrollerForList:ScrollernewScroller()mock数据privatematchData:Information〔〕mock()privatematchDataSource:MatchDataSourcenewMatchDataSource(this。matchData)bannerprivatebannerData:BannerDataResource〔〕mockBanner()privatebannerDataSource:BannerDataSourcenewBannerDataSource(this。bannerData)privateswiperController:SwiperControllernewSwiperController()StateprivateisShowFlashscreen:booleantrueprivatetimeOutID:numberaboutToAppear(){this。startTimeout()}aboutToDisappear(){this。stopTimeout()}build(){Stack(){if(this。isShowFlashscreen){Image(r(app。media。flashscreen))。width(100)。height(100)。objectFit(ImageFit。Cover)}else{Scroll(this。scrollerForScroll){Column(){Swiper(this。swiperController){LazyForEach(this。bannerDataSource,(item:BannerDataResource){Image(item。resource)。width(33。3)。height(100)。objectFit(ImageFit。Cover)},itemitem。id。toString())}。width(100)。height(35)。cachedCount(3)。index(0)。autoPlay(true)。loop(true)。displayMode(SwiperDisplayMode。AutoLinear)。indicator(false)。indicatorStyle({selectedColor:r(app。color。redbg)})Divider()。strokeWidth(3)。color(r(app。color。redbg))Column(){List({space:10,scroller:this。scrollerForList}){LazyForEach(this。matchDataSource,(item:Information){ListItem(){Row(){Column({space:10}){Image(item。homeFlag)。width(60)。height(45)。objectFit(ImageFit。Contain)Text(item。homeName)。width(100)。fontSize(16)。textAlign(TextAlign。Center)}。width(30)Column({space:10}){Text(this。getMatchState(item。state))。width(100)。fontSize(12)。fontColor(r(app。color。eventtext))。textAlign(TextAlign。Center)Text(this。getMatchSource(item))。width(100)。fontSize(18)。textAlign(TextAlign。Center)Text(item。gameType)。width(100)。fontSize(12)。fontColor(r(app。color。eventtext))。textAlign(TextAlign。Center)}。width(30)Column({space:10}){Image(item。awayFieldFlag)。width(60)。height(45)。objectFit(ImageFit。Contain)Text(item。awayFieldName)。width(100)。fontSize(16)。textAlign(TextAlign。Center)}。width(30)}。width(100)。height(100)。justifyContent(FlexAlign。SpaceBetween)。border({radius:15})。backgroundColor(r(app。color。white))}。width(100)。height(95)},itemitem。id。toString())}。width(90)。height(100)。edgeEffect(EdgeEffect。Spring)滑动效果。onReachStart((){滑动开始this。listPositionSCROLLLISTPOSITION。START})。onReachEnd((){滑动结束this。listPositionSCROLLLISTPOSITION。END})。onScrollBegin((dx:number,dy:number){console。info(TAG,listPositinotallow{this。listPosition}dx{dx},dy{dy})if(this。listPositionSCROLLLISTPOSITION。STARTdy0){列表顶部this。scrollerForScroll。scrollBy(0,dy)this。scrollerForScroll。scrollEdge(Edge。Start)this。listStateLISTSTART。TOP}elseif(this。listPositionSCROLLLISTPOSITION。ENDdy0){列表底部this。scrollerForScroll。scrollBy(0,dy)this。scrollerForScroll。scrollEdge(Edge。Bottom)this。listStateLISTSTART。BUTTON}this。listPositionSCROLLLISTPOSITION。CENTERreturn{dxRemain:dx,dyRemain:dy}})}。width(100)。height(60)。padding({top:20,bottom:20})。borderRadius({bottomLeft:15,bottomRight:15})。backgroundColor(r(app。color。contentbg))Column(){if(this。listStateLISTSTART。TOP){Text(继续上滑积分排名)。width(100)。height(5)。fontColor(r(app。color。white))。fontSize(14)。textAlign(TextAlign。Center)}else{Text(回到首页)。width(100)。height(5)。fontColor(r(app。color。white))。fontSize(14)。textAlign(TextAlign。Center)。onClick((){this。scrollerForScroll。scrollEdge(Edge。Start)this。scrollerForList。scrollToIndex(0)this。listStateLISTSTART。TOP})}Stack(){Image(r(app。media。result1))。width(100)。height(100)。objectFit(ImageFit。Cover)Column(){}。width(100)。height(100)。backgroundColor(55000000)Image(r(app。media。footballposter))。width(100)。height(100)。objectFit(ImageFit。Contain)。opacity(0。70)。borderRadius({topLeft:15,topRight:15})}。width(100)。height(95)}。width(100)。height(100)}}。width(100)。height(100)。onScrollBegin((dx:number,dy:number){return{dxRemain:dx,dyRemain:0}})}}。width(100)。height(100)。backgroundColor(r(app。color。mainbg))}getMatchState(state:number):string{varstateVal:stringswitch(state){caseMatchState。PROGRESS:{stateVal进行中break;}caseMatchState。NOTSTART:{stateVal未开赛break;}caseMatchState。CLOSED:{stateVal已结束break;}default:stateVal}returnstateVal;}getMatchSource(data:Information):string{if(data。stateMatchState。NOTSTART){return:}else{returndata。homeScore:data。awayFiledScore}}startTimeout(){this。timeOutIDsetTimeout((){this。isShowFlashscreenfalse},3000)}stopTimeout(){clearTimeout(this。timeOutID)}}
  根据代码说明下实现方式:
  3s进入主页面,主要通过定时器setTimeout()实现,设置3s后隐藏全屏图片。
  全屏图片父容器使用堆叠容器Stack包裹,通过this。isShowFlashscreen变量判断是否隐藏全屏图片,显示主页面。
  主页面中,最外层通过Scroll容器,作为主页面的根容器。
  球员banner使用滑块视图容器Swiper,内部使用LazyForEach懒加载方式加载球员图片,单屏横向显示三个球员,所以球员的图片高度为屏幕总宽度的33。3。
  并将滑块组件的displayMode属性设置为SwiperDisplayMode。AutoLinear,让Swiper滑动一页的宽度为子组件宽度中的最大值,这样每次滑动的宽度就是33。3,一个球员的图片。
  赛程列表,使用List组件进行加载,赛事item使用LazyForEach懒加载的方式提交列表加载效率。
  通过List中的事件监听器onReachStart(event:()void)和onReachEnd(event:()void)监听列表达到起始位置或底末尾位置。
  并在onScrollBegin(event:(dx:number,dy:number){dxRemain:number,dyRemain:number})函数中监听列表的滑动量,如果滑动到List底部,再向上滑动界面时触发显示积分排行界面。
  积分排行界面内容,初始化时超屏显示,只有在滑动到List底部是,才被拉起显示。
  积分排行界面设置在Scroll容器中,通过this。scrollerForScroll。scrollEdge(Edge。Bottom)拉起页面。
  点击返回首页,通过设置this。scrollerForScroll。scrollEdge(Edge。Start),返回到Scroll顶部。
  代码中使用到的组件关键APIScroll
  说明:若通过onScrollBegin事件和scrollBy方法实现容器嵌套滚动,需设置子滚动节点的EdgeEffect为None。如Scroll嵌套List滚动时,List组件的edgeEffect属性需设置为EdgeEffect。None。Swiper
  List
  完整代码:https:gitee。comxjszzz9openharmonyarkuiscrolllisto
  如果您能看到最后,还希望您能动动手指点个赞,一个人能走多远关键在于与谁同行,我用跨越山海的一路相伴,希望得到您的点赞。

197个淘宝村32个电商园区拼了!记者实探奋战双11的义乌奋战双11。11月10日,中国证券报记者赶往义乌,实地探访了包括快递分拨中心电商小镇等多地。与往年相比,今年义乌企业备战热情不减,物流保障持续优化。据统计,2021年双11期间(1如果iPhone14把芯片换成A16,情况会不一样吗?由于产品力不如预期,iPhone14标准版从上市至今,就没有传出过好消息。一会是首销遇冷,一会是苹果向供应链砍单,一会是iPhone14Plus降价速度创纪录。乍一看,iPhone截至目前,盘点2022年支持IP68级防尘防水的手机1iPhone14搭载满血版A15仿生处理器,采用台积电5nm工艺制程,性能强悍,发热控制优秀正面是一块6。1英寸的AMOLED柔性直屏,屏幕素质更高,画质更加清晰,还采用超瓷晶面最新研究重复感染冠病者出现严重健康问题风险大增(华盛顿综合电)美国研究显示,不论是否接种过冠病疫苗和追加剂,冠病痊愈者若是再度感染,他们面对死亡住院和出现严重健康问题的风险都会显著提高。圣路易斯华盛顿大学医学院的研究员根据美国FTX破产影响加密货币公司的股票FTX申请破产后,加密货币行业的公司股票开始贬值。在加密货币行业运营和附属于加密货币行业的公司受到FTX破产申请的不利影响。美国加密货币巨头Coinbase的股价下跌约8,而资产负资讯240W快充4600mAh组合realme新旗舰曝光继iQOO10Pro的200W有线快充RedmiNote12探索版的210W有线快充后,早前爆料称,欧加将在2023年第一季度落地240W有线闪充。虽然暂时不清楚具体是由哪款手机首时风推出2款电动三轮车,搭载新科技增程器,最大续航300公里随着时间的推移,大家是否还记得那句耳熟能详的时风时风路路畅通的广告词,小编也是今天翻到了时风集团推出的新款电动三轮车才想到的。那就让小编给大家分享一下,由时风推出的两款电动三轮车,天舟系列货运飞船实力升级提速央视网消息12日,中国空间站建造阶段最后一次太空快递完成上新,13日,神舟十四号航天员进入天舟五号货运飞船。从天舟一号到天舟五号,天舟系列连战连胜,舟行天地,构筑起载人航天工程的生中非深化农业合作助力非洲粮食安全气候变化给发展中国家应对粮食安全问题的行动带来严峻挑战。近年来,中国和非洲在农业领域不断深化合作,将中国的好做法好技术好经验传递到非洲,助力非洲应对气候变化带来的粮食安全问题。总台菜鸟首次公布巴西3年发展规划!助力巴西成第二个巴铁近日,菜鸟宣布在巴西圣保罗开设拉丁美洲总部。这是菜鸟进军拉美市场后自动化程度最高的分拨中心。巴西可谓是菜鸟继巴基斯坦市场之后开辟的第二个巴铁。此举亦是大势所趋,意料之中。据悉,20(社会)文旅助力乡村振兴江苏省徐州市政府有关部门开展非遗特色风情小镇文化生态保护区建设,推进乡村旅游旅游扶贫,通过开展文旅项目助力乡村振兴。江苏省徐州市汉王镇紫山村在不离土不离乡不离业的情况下,将闲置住房
酒充电宝能带上火车吗?红网时刻新闻12月17日讯(通讯员包卫华)元旦春节坐火车带年货回家的小伙伴请注意,出发前赶快筛查行李单,有些物品需要限量携带,有些物品过不了安检哦!酒类饮品携带规定如下1。包装密封新华全媒丨从环城绿带到拥湖入怀一座城市的生态底色这是12月2日拍摄的合肥市环城公园风光(无人机照片)。安徽省合肥市的环城公园颇具特色,是有翡翠项链之称的开放性公园,它将生态绿意融入城市繁华之中,是市民家门口的诗意栖居地。2011可以生吃的丝瓜,软糯香甜比普通丝瓜好吃,院里种一棵够一家人吃丝瓜老表们都吃过,但都是炒熟了吃或者打汤吃,生吃的丝瓜老表们别说没吃过,估计见都没见过吧?今天给老表们开开眼。这款新品种的丝瓜叫苹果丝瓜,听名字是不是觉得它像苹果一样好吃?确实是的禄口街道杨树湾村童趣手工,星星向党12月17日,杨树湾的孩子们迈着欢快的步伐走进杨树湾新时代文明实践站,有的孩童牵着家长的手,也来参加本次由杨树湾新时代文明实践站联合江宁溧社培育指导中心举办的活动童趣手工,星星向党种下心中的玫瑰园头条创作挑战赛今天是周末,也是个阳光明媚的日子。在深冬,这样的日子真的是很美好。因为体质的问题,我怕冷,不喜欢冬天。我喜欢在家把暖气开的足足的。但是我更喜欢在冬日的暖阳里走一走。以炒股如何从1万到1000万,退神的曲折经历让普通散户看到了希望在知名的炒股大神中,相比起家里有钱的涅槃重生,相比起在互联网大厂上班的北京炒家,退神(退学炒股)明显条件差了很多。大三时,退神的父亲去世,家里建房子欠下的债务压到他身上。大四开学前2023年,港股牛市可期图片来源视觉中国文薛洪言近期,港股投资者终于尝到了暴涨的喜悦。前期暴跌时有多痛苦,当前暴涨时便有多欣喜,前提是没有割肉卖出。在前期的文章中,我们曾提醒读者港股市场的波动性远较A股为青城有爱呼和浩特90后创业者敢闯敢干,走出困难有信心复工11天,内蒙古自治区首府呼和浩特一家咖啡甜品店的客流相比疫情前少得可怜,但店主武小满说她撑得住。近日,武小满和呼和浩特另一位90后创业者向澎湃新闻(www。thepaper。c供应链自主可控,还有多远?汽车产业链具有长全球化的特点。汽车产业链对增强国内大循环内生动力和可靠性至关重要。今年以前,我国汽车产业的供应链薄弱环节尚聚焦在缺芯上,但今年却将更多短板曝光在台面之上。上半年,汽抓住能源合作治理新机遇日前召开的首届中国阿拉伯国家峰会提出,中方愿同阿方开展能源科技研发合作,加强能源政策协调,推动建立公平公正均衡普惠的全球能源治理体系。这彰显了我国一直以来积极推进与有关国家和地区能喜报!安井达利圣农金达威上榜胡润食品百强榜!12月18日,2022环球首发胡润中国食品行业百强榜发布,按照企业市值或估值进行排名。这是胡润研究院第二次发布中国食品行业百强榜。上榜的100家食品企业涵盖食品综合酒类软饮料乳制品
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网