Android MVVM框架搭建(九)TabLayout、ViewPager、城市地图切换 前言 正文 一、父Fragment加载子Fragment ① Fragment适配器 ② TabLayout组合...,现在地图上可以查看当前的所在地天气,本文中将对国内其他城市进行切换,地图进行移动,天气查询。...② 返回上一级 这里我们需要修改一下map_fragment.xml中的布局代码,添加如下布局代码: <RelativeLayout android:layout_width...mCameraUpdate = CameraUpdateFactory.newCameraPosition(new CameraPosition(latLng, 18, 30, 0)); //在地图上添加...: 运行一下: 八、加载弹窗 之前在BaseActivity中添加过加载弹窗,用来在网络加载数据未显示的时候,那么在这个MapFragment中同样会用到,因为这个高德地图API实际上还是从网络中获取数据
RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:857) 应用中有集成Google..." android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width=...中使用时 时没有什么问题的,但是当有几个界面当时都用到这个地图功能时,就会出现上面这个问题。...复现路径:打开一个有 SupportMapFragment 的 fragment 界面,能正常加载出地图,切换到顶一个SupportMapFragment的 fragment 界面,就会出现白屏,然后按返回键就会报上面的错误...fragment 是在 4.2版本添加的。
Fragment 实例无效 FragmentManager 但仍在引用中。 在某些情况下,例如以下情况,过滤器可能会产生误报: A Fragment 已创建,但尚未使用。...要显示可能正在泄漏内存的碎片和活动,请在“内存探查器”的堆转储窗格中选中“活动/碎片泄漏”复选框。(筛选堆转储以防止内存泄漏。) ?...Single points 在 Single points 标签中,可以使用 Google Maps Webview 搜索感兴趣的点,就像在手机或浏览器上使用Google Maps一样。...搜索或单击地图中的位置时,可以通过选择地图底部附近的保存点来保存位置。所有保存的位置都列在扩展控件窗口的右侧 。...要创建和保存路线,请执行以下操作: 1.在地图视图中,使用文本字段搜索路线中的第一个目的地。 2.从搜索结果中选择位置。 3.选择 Navigate 按钮 ? 4.从地图上选择路线的起点。 5.
的地图开发平台,点击:Google Maps进入,建议你使用Google Chrome进行访问。...③ 配置AndroidManifest.xml 首先配置Google Play 服务版本号,在 application标签中添加以下声明。...三、添加地图 首先我们在工程中创建一个map包,里面新建一个GoogleMapActivity。...fragment,在用于处理地图的 activity 的布局文件中,添加名称声明 xmlns:map="http://schemas.android.com/apk/res-auto"。...useViewLifecycle - 此属性必须与 SupportMapFragment 对象一起使用才有效,它用于指定是否应将地图的生命周期与 fragment 的视图或 fragment 本身关联。
" 面板 , 进入后 , 点击右上角的 " 创建应用 " 按钮 , 设置 创建应用 的 名称 和 类型 , 2、申请 key 创建应用后 , 还需要申请 Key , 点击下图中 红色矩形框 中的 " 添加...的 完整功能 , 推荐配置如下依赖库 : dependencies { // JSON 字符串解析库 ( 可不用 ) implementation 'com.google.code.gson...content/groups/public" } maven { url "http://maven.aliyun.com/nexus/content/groups/public" } google..., 该类中已经设置了 MapView 的 维护 操作 , 不需要自己手动维护 MapView 的生命周期 ; fragment android:id="@+id...android.os.Bundle; import androidx.fragment.app.FragmentManager; import com.tencent.map.vector.demo.R
某天,项目收尾时,愕然发现在某页 Google Map 与当前页面滑动冲突,最直接的表现结果便是,手指触摸地图进行滑动时,地图视觉卡顿且页面会随着手指滑动而滑动,顿时很蛋疼,脑海第一想法事件分发,拦截丫的不就好了吗...,最直接的,触摸地图的时候,父容器别管我不就好了。...://stackoverflow.com/questions/41689968/google-map-fragment-scrolling-inside-nestedscrollview */ public...default: } return super.dispatchTouchEvent(event); } } } 接着,在布局中将 fragment...指定为自定义的 SupportMapFragment: fragment android:id="@+id/mv_map" android:name="com.heliquan.ui.weight.MySupportMapFragment
Fragment中使用地图的需要,第三个就是底部弹窗与MVVM的结合。...,因此就不用重复添加了,添加位置如下图所示: 下面配置Key ② 配置Key 然后配置高德地图Key,在application标签内 地图 我们让地图显示在HomeActivity上,因此我们需要创建一个MapFragment去加载地图,一些读者只看到我用Activity加载过地图,换到Fragment上就不会用了,我很心痛啊...,毕竟我们是通过菜单去控制Fragment的切换的,打开navigation_menu.xml,在里面添加一个item,代码如下: <item android:id="@+id/map_fragment...下面进入到HomeActivity中去配置,配置切换菜单时的Fragment布局改变,如下图所示: ③ Fragment中地图生命周期绑定 要显示地图需要将地图的生命周期与Fragment的生命周期绑定起来
,将其添加到组件层次结构中: @Module(subcomponents = YourActivitySubcomponent.class) abstract class YourActivityModule...而不需要第2步和第3步,添加一个返回活动的抽象模块方法,使用@ContributesAndroidInjector对其进行注释,并指定要安装到子组件中的模块。...(即YourActivitySubcomponent),并将您的活动传递给 inject(YourActivity)。...集成方式如下: dependencies { compile 'com.google.dagger:dagger-android:2.x' compile 'com.google.dagger...:dagger-android-support:2.x' // if you use the support libraries annotationProcessor 'com.google.dagger
等到 Google 推荐了之后就开始流行起来了,如果实在不知道选什么图片加载框架,跟着 Google 爸爸走,总是没错的。...二、glide 的基本使用 我们先来看一下 glide 的基本用法 1、在 app/build.gradle 中添加依赖 dependencies { compile 'com.github.bumptech.glide...注意 with() 方法中传入的实例会决定 Glide 加载图片的生命周期,如果传入的是 Activity 或者 Fragment 的实例,那么当这个 Activity 或 Fragment 被销毁的时候...Glide 支持加载各种各样的图片资源,包括网络图片、本地图片、应用资源、二进制流、Uri 对象等等。...因此 load() 方法也有很多个方法重载 // 加载本地图片 File file = new File(getExternalCacheDir() + "/image.jpg"); Glide.with
简介 在本篇博客中,我们将使用Google Earth Engine (GEE) 对MODIS土地覆盖数据进行分析。...土地覆盖分类 土地覆盖分类是将地表按照植被类型、土地利用等特征进行分类的过程,对于理解地表特征和人类活动影响至关重要。...'27ff87', 'c24f44', 'a5a5a5', 'ff6d4c', '69fff8', 'f9ffa4', '1c0dff' ], }; // 将MODIS土地覆盖数据裁剪至研究区域并添加至地图...土地覆盖数据可视化 定义IGBP土地覆盖类型的可视化参数,并裁剪数据至研究区域,然后添加至地图。 4....计算土地覆盖类型面积 计算每个像素的土地面积(单位:平方米),并添加至MODIS图像。 6.
Hilt 提供了以下组件来绑定依赖与对应 Android 类的活动范围 Hilt 组件 对应 Android 类活动的范围 ApplicationComponent Application ActivityRetainedComponent...@Module 模块用于向 Hilt 添加绑定,告诉 Hilt 如果提供不同类型的实例。...通过添加具有接口实现类型的唯一参数来指定实现。...需要在 fragment 和 actvity 都使用这个注解。 但是如果 activity 和 fragment 没在同一个module中,就会报错。...就将你的库中所有活动一样,使父级成为 ApplicationComponent 也没有意义,因为您没有将组件放入 Application 。
以下是Android对Fragment的官方介绍:“Fragment表示Activity中的行为或用户界面部分。...您可以将多个Fragment组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个Fragment。...举个例子,在大屏上运行时,可以再添加一栏,并且加入分类列表,这些都是合理的。这个例子展示了在手机上使用一栏纵向滚动,而在平板上使用两栏横向滚动的优化。 ?...B.当用户在微信里查看定位信息有新消息提醒时,手机变成大屏模式时应该同时存在地图界面和聊天界面。 相关注意事项 Google在2018年11月就宣布了对折叠屏的支持,包括多窗口支持、不重启适配等等。...2.转场动效 从目前Google公布的新版Android系统来看,已经可以做到当折叠/展开设备的时候,页面、内容从一个屏幕自然地切换至另一个屏幕。
图 4.1 手机的设计方案 可是如果在平板上也这么设计,那么新闻标题列表将会被拉长至填充满整个平板的屏幕,而新闻的标题一般都不会太长,这样将会导致界面上有大量的空白区域,如图4.2所示。...图 4.4 平板模拟器的运行效果 4.2.1 碎片的简单用法 这里我们准备先写一个最简单的碎片示例来练练手,在一个活动当中添加两个碎片,并让这两个碎片平分活动空间。 ...4.3 动态添加碎片 在上一节当中,你已经学会了在布局文件中添加碎片的方法,不过碎片真正的强大之处在于,它可以在程序运行时动态地添加到活动当中。...这样我们就准备好了另一个碎片,接下来看一下如何将它动态地添加到活动当中。...暂停状态 当一个活动进入暂停状态时(由于另一个未占满屏幕的活动被添加到了栈顶),与它相关联的可见碎片就会进入到暂停状态。
Lifecycle集成 首先从怎么集成开始 第一步: 在build.gradle中增加google()的repo allprojects { repositories { jcenter...() google() } } 第二步: 添加依赖 Java // Lifecyle的版本,现在最新的是1.1.1 def lifecycle_version =...我们在应用中有使用地图跟踪用户的地理位置,地理位置的更新在一个listener里。...如果组件能够感知到Activity或者Fragment的变化,那么就可以在组件内部追踪Activity或者Fragment的生命周期,将之前写在Activity或者Fragment里的代码写到组件的内部...getLifecycle() { return mLifecycleRegistry; } } Lifecycle的组件和使用场景 LiveData 假设你的应用需要应用在前台的时候在地图上更新精细坐标
在Android Studio上创建官方默认的首屏标签页面很方便,首先右击需要添加标签栏的模块,在弹出的右键菜单中依次选择“New”——“Activity”——“Bottom Navigation Activity...”,弹出下图所示的活动创建页面。...在创建页面的“Activity Name”一栏填写新活动的名称,再单击页面右下角的Finish按钮,Android Studio就会自动创建该活动的Java代码及其布局文件。...不过为了定制页面的详细内容,开发者仍需修改相关代码,譬如将标签文字从英文改成中文,将频道上方的描述说明从英文改成中文,给频道页面添加图像视图等其他控件等等,故而还得梳理标签栏框架的实现方式。...首先查看标签页面的布局文件,它的关键代码如下所示: google.android.material.bottomnavigation.BottomNavigationView
Google官方是建议我们使用Fragment来填充ViewPager的,这样 可以更加方便的生成每个Page,以及管理每个Page的生命周期。...setPageTransformer(boolean reverseDrawingOrder, PageTransformer transformer) 用于设置ViewPager切换时的动画效果,并且google...view.setAlpha(0); } else if (position 至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0 { // [...view.setRotation(0); } else if (position 至b页 ; a页从 0.0 ~ -1 ;b页从1 ~ 0.0...-- 加载本地图片需要权限--> 2. xml引用
38、连接地图 连接地图 (Connection Map) 是用直线或曲线连接地图上不同地点的一种图表。...40、甘特图 甘特图 (Gantt Chart) 通常用作项目管理的组织工具,显示活动(或任务)列表和持续时间,也显示每项活动何时开始和结束。...甘特图适合用来规划和估计整个项目的所需时间,也可显示相互重迭的活动。...每当出现数值时,在相应的列或行中添加记数符号。 完成收集所有数据后,把所有标记加起来并把总数写在下一列或下一行中,最终结果类似于直方图。 推荐的制作工具有:纸和笔。...我们也把日历当作可视化工具,适用于显示不同时间段的活动事件的组织情况。 今天我们最常用的日历形式是公历,每个月份的月历由七个垂直列组成(代表每周七天),另有约五至六行以水平方式代表星期。
领取专属 10元无门槛券
手把手带您无忧上云