wangliang_wd

feat:优化下拉刷新动效

1 import { PeopleShipRecommendComponent } from './PeopleShipRecommendComponent'; 1 import { PeopleShipRecommendComponent } from './PeopleShipRecommendComponent';
2 import { PeopleShipMainViewModel } from '../../viewmodel/PeopleShipMainViewModel'; 2 import { PeopleShipMainViewModel } from '../../viewmodel/PeopleShipMainViewModel';
3 import { HttpUtils } from 'wdNetwork/Index'; 3 import { HttpUtils } from 'wdNetwork/Index';
4 -import { Logger, DateTimeUtils, EmitterEventId, EmitterUtils, ToastUtils } from 'wdKit'; 4 +import { Logger, DateTimeUtils, EmitterEventId, EmitterUtils, ToastUtils, UserDataLocal, StringUtils } from 'wdKit';
5 import { autoRefresh, onActionEnd, onActionStart, onActionUpdate,closeRefresh } from '../../utils/NewPullDownRefresh'; 5 import { autoRefresh, onActionEnd, onActionStart, onActionUpdate,closeRefresh } from '../../utils/NewPullDownRefresh';
6 6
7 import { 7 import {
@@ -235,6 +235,12 @@ export struct PeopleShipMainComponent { @@ -235,6 +235,12 @@ export struct PeopleShipMainComponent {
235 .scrollBar(BarState.Off) 235 .scrollBar(BarState.Off)
236 .width('100%') 236 .width('100%')
237 .height('100%') 237 .height('100%')
  238 + .onScrollIndex((start: number, end: number) => {
  239 + // Listen to the first index of the current list.
  240 + this.pageModel.startIndex = start;
  241 + // 包含了 头尾item,判断时需要考虑+3
  242 + this.pageModel.endIndex = end ;
  243 + })
238 } 244 }
239 245
240 @Builder 246 @Builder
@@ -558,6 +564,12 @@ export struct PeopleShipMainComponent { @@ -558,6 +564,12 @@ export struct PeopleShipMainComponent {
558 if (this.navIndex === this.currentTopNavSelectedIndex && this.pageAttentionChange) { 564 if (this.navIndex === this.currentTopNavSelectedIndex && this.pageAttentionChange) {
559 this.getData() 565 this.getData()
560 } 566 }
  567 +
  568 + //退出登录的时候 刷新界面
  569 + let userID = UserDataLocal.getUserId()
  570 + if (!StringUtils.isNotEmpty(userID)) {
  571 + this.getData()
  572 + }
561 } 573 }
562 574
563 onAutoRefresh(changedPropertyName: string) { 575 onAutoRefresh(changedPropertyName: string) {
@@ -181,6 +181,7 @@ export function autoRefresh(pageModel: PageModel,onRefresh: () => void = () => { @@ -181,6 +181,7 @@ export function autoRefresh(pageModel: PageModel,onRefresh: () => void = () => {
181 return 181 return
182 } 182 }
183 pageModel.isVisiblePullDown = true; 183 pageModel.isVisiblePullDown = true;
  184 + pageModel.isHandRefreshing = true;
184 pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight); 185 pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
185 pullRefreshState(pageModel, RefreshState.Refreshing); 186 pullRefreshState(pageModel, RefreshState.Refreshing);
186 pageModel.currentPage = 1; 187 pageModel.currentPage = 1;
@@ -242,8 +243,18 @@ export function pullRefreshState(pageModel: PageModel, state: number) { @@ -242,8 +243,18 @@ export function pullRefreshState(pageModel: PageModel, state: number) {
242 export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { 243 export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
243 let self = pageModel; 244 let self = pageModel;
244 // 取消超时关闭定时器 245 // 取消超时关闭定时器
  246 + clearTimeout(self.refreshTimeoutTimerId)
  247 +
  248 + setTimeout(()=>{
  249 + closeRefreshLastStep(pageModel,isRefreshSuccess)
  250 + }, self.isHandRefreshing ? 800 : 0)
  251 +}
  252 +
  253 +function closeRefreshLastStep (pageModel: PageModel, isRefreshSuccess: boolean) {
  254 + let self = pageModel;
245 pullRefreshState(pageModel,RefreshState.GOLOADED); 255 pullRefreshState(pageModel,RefreshState.GOLOADED);
246 256
  257 + //定时器时间就是'已刷新至最新'停留时间
247 setTimeout(() => { 258 setTimeout(() => {
248 let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH; 259 let delay = Const.RefreshConstant_DELAY_PULL_DOWN_REFRESH;
249 if (self.isCanRefresh === true) { 260 if (self.isCanRefresh === true) {
@@ -257,6 +268,7 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { @@ -257,6 +268,7 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
257 pullRefreshState(pageModel, RefreshState.DropDown); 268 pullRefreshState(pageModel, RefreshState.DropDown);
258 self.isVisiblePullDown = false; 269 self.isVisiblePullDown = false;
259 self.isPullRefreshOperation = false; 270 self.isPullRefreshOperation = false;
  271 + self.isHandRefreshing = false
260 } 272 }
261 }, () => { 273 }, () => {
262 self.offsetY = 0; 274 self.offsetY = 0;
@@ -185,6 +185,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) { @@ -185,6 +185,7 @@ export function autoRefresh(pageModel: PageModel, pageAdvModel: PageAdModel) {
185 return 185 return
186 } 186 }
187 pageModel.isVisiblePullDown = true; 187 pageModel.isVisiblePullDown = true;
  188 + pageModel.isHandRefreshing = true
188 pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight); 189 pageModel.offsetY = vp2px(pageModel.pullDownRefreshHeight);
189 pullRefreshState(pageModel, RefreshState.Refreshing); 190 pullRefreshState(pageModel, RefreshState.Refreshing);
190 pageModel.currentPage = 1; 191 pageModel.currentPage = 1;
@@ -248,6 +249,14 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { @@ -248,6 +249,14 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
248 // 取消超时关闭定时器 249 // 取消超时关闭定时器
249 clearTimeout(self.refreshTimeoutTimerId) 250 clearTimeout(self.refreshTimeoutTimerId)
250 251
  252 + setTimeout(()=>{
  253 + closeRefreshLastStep(pageModel,isRefreshSuccess)
  254 + }, self.isHandRefreshing ? 800 : 0)
  255 +
  256 +}
  257 +
  258 +function closeRefreshLastStep (pageModel: PageModel, isRefreshSuccess: boolean) {
  259 + let self = pageModel;
251 pullRefreshState(pageModel,RefreshState.GOLOADED); 260 pullRefreshState(pageModel,RefreshState.GOLOADED);
252 261
253 //定时器时间就是'已刷新至最新'停留时间 262 //定时器时间就是'已刷新至最新'停留时间
@@ -264,10 +273,10 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) { @@ -264,10 +273,10 @@ export function closeRefresh(pageModel: PageModel, isRefreshSuccess: boolean) {
264 pullRefreshState(pageModel, RefreshState.DropDown); 273 pullRefreshState(pageModel, RefreshState.DropDown);
265 self.isVisiblePullDown = false; 274 self.isVisiblePullDown = false;
266 self.isPullRefreshOperation = false; 275 self.isPullRefreshOperation = false;
  276 + self.isHandRefreshing = false
267 } 277 }
268 }, () => { 278 }, () => {
269 self.offsetY = 0; 279 self.offsetY = 0;
270 }) 280 })
271 }, self.isCanRefresh ? Const.DELAY_ANIMATION_DURATION : 0); 281 }, self.isCanRefresh ? Const.DELAY_ANIMATION_DURATION : 0);
272 -  
273 } 282 }
@@ -61,6 +61,7 @@ export default class PageModel { @@ -61,6 +61,7 @@ export default class PageModel {
61 endIndex = 0; 61 endIndex = 0;
62 downY = 0; 62 downY = 0;
63 lastMoveY = 0; 63 lastMoveY = 0;
  64 + isHandRefreshing:boolean = false //是否手动刷新
64 isRefreshing: boolean = false; 65 isRefreshing: boolean = false;
65 isCanRefresh = false; 66 isCanRefresh = false;
66 isPullRefreshOperation = false; 67 isPullRefreshOperation = false;