From a14f3c65611fca82411545809dc3bde9d13b22f6 Mon Sep 17 00:00:00 2001 From: kangshulong <1095887643@qq.com> Date: Mon, 9 Feb 2026 15:57:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BA=8C=E7=BA=A7=E8=8F=9C=E5=8D=95=E5=B7=B2?= =?UTF-8?q?=E5=B1=95=E5=BC=80app=E5=88=97=E8=A1=A8=E5=86=85,=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E6=8C=89=E4=B8=8B=E6=BB=9A=E5=8A=A8=E6=97=B6=E7=84=A6?= =?UTF-8?q?=E7=82=B9=E8=B7=B3=E8=B7=83=E8=90=BD=E5=9C=A8=E5=BA=95=E8=A1=8C?= =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AAitem=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ik/mboxlauncher/ui/Launcher.java | 64 +++++++++++++------ .../ui/fragment/CategoryFragment.java | 42 ++++++------ 2 files changed, 65 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java index fed60d7..d488a56 100644 --- a/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java +++ b/app/src/main/java/com/ik/mboxlauncher/ui/Launcher.java @@ -26,6 +26,7 @@ import android.widget.GridView; import android.widget.Toast; import androidx.media3.common.Player; +import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; @@ -267,28 +268,27 @@ public class Launcher extends FragmentActivity implements SplashView.SplashAdLi gv_shortcut.setCanFocusOutHorizontal(false); gv_shortcut.setCanFocusOutVertical(true); - StaggeredGridLayoutManager customLayoutManager = new StaggeredGridLayoutManager(9, StaggeredGridLayoutManager.VERTICAL); + GridLayoutManager customLayoutManager = new GridLayoutManager(Launcher.this,9); grid_coustom_apps.setLayoutManager(customLayoutManager); grid_coustom_apps.setAdapter(mCustomAppAdapter); - - grid_coustom_apps.addOnScrollListener(new RecyclerView.OnScrollListener() { - int childViewPosition=0; - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - View childView = recyclerView.getFocusedChild(); - childViewPosition= recyclerView.getChildAdapterPosition(childView); - LogUtils.loge("childView|childViewPosition==>"+childViewPosition); - if(childViewPosition==-1){//当焦点错乱是,强制修正找到目标位置(例如第一个可见项) - int[] rows=new int[8]; - ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPositions(rows); - View targetView = recyclerView.findViewHolderForAdapterPosition(rows[0]).itemView; - targetView.post(() -> targetView.requestFocus()); - } - - } - } - }); +// grid_coustom_apps.addOnScrollListener(new RecyclerView.OnScrollListener() { +// int childViewPosition=0; +// @Override +// public void onScrollStateChanged(RecyclerView recyclerView, int newState) { +// if (newState == RecyclerView.SCROLL_STATE_IDLE) { +// View childView = recyclerView.getFocusedChild(); +// childViewPosition= recyclerView.getChildAdapterPosition(childView); +// LogUtils.loge("childView|childViewPosition==>"+childViewPosition); +// if(childViewPosition==-1){//当焦点错乱是,强制修正找到目标位置(例如第一个可见项) +// int[] rows=new int[8]; +// ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPositions(rows); +// View targetView = recyclerView.findViewHolderForAdapterPosition(rows[0]).itemView; +// targetView.post(() -> targetView.requestFocus()); +// } +// +// } +// } +// }); ADSWindowManager.init(this); bindAdsWindowMultiView(); @@ -515,7 +515,29 @@ private void loadShortAppList(){ } sortAppList(filteredList); mCustomAppAdapter.addDatas(filteredList); - grid_coustom_apps.setAdapter(mCustomAppAdapter); +// grid_coustom_apps.setAdapter(mCustomAppAdapter); +// if(filteredList.size()>0){ +// if(Build.VERSION.SDK_INT<29){ +// grid_coustom_apps.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { +// @Override +// public void onGlobalLayout() { +// grid_coustom_apps.getViewTreeObserver().removeOnGlobalLayoutListener(this); +// grid_coustom_apps.scrollToPosition(0); +// grid_coustom_apps.post(()->{ +// int[] rows = new int[9]; +// ((StaggeredGridLayoutManager) grid_coustom_apps.getLayoutManager()).findFirstVisibleItemPositions(rows); +// View targetView = grid_coustom_apps.findViewHolderForAdapterPosition(rows[0]).itemView; +// if(targetView!=null){ +// targetView.post(() -> targetView.requestFocus()); +// } +// }); +// +// } +// }); +// }else { +// grid_coustom_apps.setSelectedPosition(0); +// } +// } } }); diff --git a/app/src/main/java/com/ik/mboxlauncher/ui/fragment/CategoryFragment.java b/app/src/main/java/com/ik/mboxlauncher/ui/fragment/CategoryFragment.java index 4e5fb50..00c7018 100644 --- a/app/src/main/java/com/ik/mboxlauncher/ui/fragment/CategoryFragment.java +++ b/app/src/main/java/com/ik/mboxlauncher/ui/fragment/CategoryFragment.java @@ -7,6 +7,7 @@ import android.view.animation.TranslateAnimation; import android.widget.ImageView; import android.widget.TextView; +import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; @@ -18,6 +19,7 @@ import com.android.nebulasdk.presenter.callback.AppnetCallback; import com.android.util.GsonUtil; import com.android.util.LogUtils; import com.ik.mboxlauncher.R; +import com.ik.mboxlauncher.ui.Launcher; import com.ik.mboxlauncher.ui.adapter.CustomAppAdapter; import com.ik.mboxlauncher.ui.adapter.VideoAppAdapter; import com.ik.mboxlauncher.ui.adapter.MyAppInfoAdapter; @@ -100,28 +102,28 @@ public abstract class CategoryFragment extends BaseFragment implements AppnetCal } }); } - StaggeredGridLayoutManager customLayoutManager = new StaggeredGridLayoutManager(8, StaggeredGridLayoutManager.VERTICAL); + GridLayoutManager customLayoutManager = new GridLayoutManager(getActivity(),8); grid_coustom_apps.setLayoutManager(customLayoutManager); grid_coustom_apps.setAdapter(mCustomAppAdapter); - grid_coustom_apps.addOnScrollListener(new RecyclerView.OnScrollListener() { - int childViewPosition=0; - @Override - public void onScrollStateChanged(RecyclerView recyclerView, int newState) { - if (newState == RecyclerView.SCROLL_STATE_IDLE) { - // 找到目标位置(例如第一个可见项) - View childView = recyclerView.getFocusedChild(); - childViewPosition= recyclerView.getChildAdapterPosition(childView); - LogUtils.loge("childView|childViewPosition==>"+childViewPosition); - if(childViewPosition==-1){ //当焦点错乱是,强制修正找到目标位置(例如第一个可见项) - int[] rows=new int[8]; - ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPositions(rows); - View targetView = recyclerView.findViewHolderForAdapterPosition(rows[0]).itemView; - targetView.post(() -> targetView.requestFocus()); - } - - } - } - }); +// grid_coustom_apps.addOnScrollListener(new RecyclerView.OnScrollListener() { +// int childViewPosition=0; +// @Override +// public void onScrollStateChanged(RecyclerView recyclerView, int newState) { +// if (newState == RecyclerView.SCROLL_STATE_IDLE) { +// // 找到目标位置(例如第一个可见项) +// View childView = recyclerView.getFocusedChild(); +// childViewPosition= recyclerView.getChildAdapterPosition(childView); +// LogUtils.loge("childView|childViewPosition==>"+childViewPosition); +// if(childViewPosition==-1){ //当焦点错乱是,强制修正找到目标位置(例如第一个可见项) +// int[] rows=new int[8]; +// ((StaggeredGridLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPositions(rows); +// View targetView = recyclerView.findViewHolderForAdapterPosition(rows[0]).itemView; +// targetView.post(() -> targetView.requestFocus()); +// } +// +// } +// } +// }); loadCustomAppList(); gv_category_apps.setmFocusOnBoundaryListener(new CustomRecyclerViewer.FocusOnBoundaryListener() {