优化applist的拨号盘算法,减少重复计算。
authorluozheng <1732036298@qq.com>
Tue, 10 Dec 2024 02:57:08 +0000 (10:57 +0800)
committerluozheng <1732036298@qq.com>
Tue, 10 Dec 2024 02:57:08 +0000 (10:57 +0800)
code/sdk/application/wearable/fd230app/nativeui/applist/src/ApplistView.cpp

index e72f7f9..1f47549 100644 (file)
@@ -586,31 +586,42 @@ static void native_app_position_init(UIImageView ** CircleListAPP,int CircleList
         if(startangle > 0 )
         {
             int numToChange = startangle / 30;
-            for (int i = 1; i <= numToChange; i++)
+            int cnt = 0;
+            for (int i = numToChange - 1; i >= 0; i--)
             {
+                if(cnt >= 12) //优化算法,只取最后12次图片路径设置,减少重复计算
+                {
+                    break;
+                }
                 // 计算 index 和 appIndex
-                index = i % nativeAppNum + 11;
+                index = i % nativeAppNum + 12;
                 appIndex = index;
                 if (startangle >= 360) {
                     appIndex = index % nativeAppNum;
                 }
 
                 // 计算 circleIndex
-                circleIndex = (12 - i) % 12;
+                circleIndex = (11 - i) % 12;
                 if (circleIndex < 0) {
                     circleIndex += 12;
                 }
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall);
                 CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall);
                 CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id);
+                cnt++;
             }
 
         }
         else if(startangle < 0)
         {
             int numToChange = abs(startangle) / 30;
-            for (int i = 0; i < numToChange; i++)
+            int cnt = 0;
+            for (int i = numToChange - 1; i >= 0; i--)
             {
+                if(cnt >= 12) //优化算法,只取最后12次图片路径设置,减少重复计算
+                {
+                    break;
+                }
                 index = i % nativeAppNum + 12;
                 appIndex = index;
                 if (abs(startangle) >= 360)
@@ -621,6 +632,7 @@ static void native_app_position_init(UIImageView ** CircleListAPP,int CircleList
                 WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "circleIndex:%d,appIndex:%d name:%s", circleIndex, appIndex, ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall);
                 CircleListAPP[circleIndex]->SetSrc(ApplistModel::GetInstance().GetApplistItems()[appIndex].iconSmall);
                 CircleListAPP[circleIndex]->SetViewIndex(ApplistModel::GetInstance().GetApplistItems()[appIndex].id);
+                cnt++;
             }
         }
         else