Android10 Launcher3的一些总结

由于最近解决Launcher3所有应用界面,一个区域图标闪烁的问题,故将Launcher3这部分代码梳理了一编,做个总结归纳一下。

       Launcher3的主入口是Launcher.java这个Activity文件,并且他的布局文件的入口在luancher.xml,从这个入口开始延申很多东西出来,如果深入研究,你会发现这套代码非常庞大,

并且运用了很多设计模式在里面,并且后续为了完善又出了quickstep这种版本。

    本次需要研究的范围主要为AllApps这个模块,这也是我们上拉之后会出现的所有应用界面。并且我们把范围继续缩小到每个图标。

在分析之前我们需要搞清楚几个概念,就是workspace,allapps,draglayer,hotset,apps_view,overview这几个部分。当我们打开launcher.xml后会发现这些相关的部分,如果不搞清每个部分负责哪些功能,分析代码

时会难度很大,不能缩小到我们想要的部分。首先我们可以看到launcher.xml是由一个自定义控件LauncherRootView来实现的,并且他的控件(不包括孙子空间)只有一个,那就是DragLayer,从字面我们可以

猜测到这是一个拖拽的视图。这也就是我们的laucher可以上下左右拖拽的功能实现。

下面我们看看DragLayer的子控件。

workspace,这个就是我们开机启动和点击home键所回到的主界面。

hotset,这个就是我们workspace下的底座显示的图标,用于一些常用应用的放置,windows同样有这个功能,位于导航栏之上。

overview_panel,这个是我们长按桌面空白区域会进入到的界面。

apps_view,这个就是我们所有应用的界面allapps。

那么接下来我们就主要寻找这个apps_view,它的定义位于all_apps.xml。这里面又包含了一个all_apps_rv_layout,这就是我们所有应用被列表起来的界面,它在我们的all_apps_rv_layout.xml。这个布局文件里面没有子控件。

这是一个自定义控件AllAppsRecyclerView,它继承于BaseRecylerView,并且BaseRecylerView又继承于RecylerView,

RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。

关于这个视图的使用方法参考链接https://www.jianshu.com/p/b4bb52cdbeb7。通过对RecyclerView的学习可以发现需要对这个视图进行一些配置。

那么就需要看一下调用AllAppsRecyclerView的视图all_app.xml。这个视图也是一个自定义视图AllAppsContainerView,我们去看到在内部类AdapterHolder里的setup函数中调用了AllAppsRecyclerView,并对其进行设置。

 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
腾讯X5内核WebView是一款基于Chromium内核的浏览器内核,相比于原生WebView,具有更好的性能和稳定性。以下是一些优化实践总结: 1. 集成腾讯X5内核 在使用WebView时,可以使用腾讯提供的X5内核替代原生内核。在集成X5内核时,需要在build.gradle文件中添加依赖: ``` dependencies { implementation 'com.tencent.tbs.tbssdk:sdk:43697' } ``` 2. 预加载 使用X5内核时,可以通过预加载提高WebView的响应速度。可以在应用启动时预加载X5内核: ``` // 在Application的onCreate方法中 QbSdk.initX5Environment(context, null) ``` 3. 启用多进程 如果应用中使用了多个WebView,可以启用多进程来提高性能和稳定性。可以在AndroidManifest.xml文件中设置: ``` <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:process=":webview"> ``` 4. 启用硬件加速 在使用X5内核时,可以启用硬件加速来提高渲染速度。可以在布局文件中设置: ``` <com.tencent.smtt.sdk.WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:layerType="hardware" /> ``` 5. 使用缓存 使用缓存可以减少网络请求,提高WebView的加载速度。可以在初始化WebView时设置: ``` val webSettings = webView.settings webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK ``` 以上是一些常见的优化实践总结,可以根据具体的场景进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值