博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android开发之浮动Activity
阅读量:6785 次
发布时间:2019-06-26

本文共 1213 字,大约阅读时间需要 4 分钟。

场景

在使用App时,曾经看到这样一个场景,如下图所示,点击顶部菜单按钮,有一个类似的对话框的列表显示出来,让用户选择其中的一个快递选项,然后选中的快递信息就会填充到底部的Activity中。

分析

类似这样的效果到底是怎么做出来的?弹出的是一个普通对话框吗?其实不一定,弹出的可能是一个Activity,但不同的是该Activity是浮动显示在某一个Activity之上,而不是直接跳转。

案例

在最近一个App中有一个界面如下:

点击底层Activity中浮动按钮,会浮动一个年份列表,选择某一个年份后回到底部Activity,然后底部Activity根据选择的年份加载对应的数据。这里底层的Activity略过,重点讲解一下浮动的Activity是如何实现的。

1、由于其本质还是一个Activity,所以看到的界面就是需要在xml中布局,这里非常简单,就是一个ListView,显示年份,比较简单,就不粘贴代码了

2、新建一个style,该style配置Activity为浮动显示

复制代码

3、AndroidManifest.xml中设置Activity的主题如上

复制代码

4、在底部的Activity中调用 startActivityForResult,并重写onActivityResult方法接收浮动Activity返回的数据,进行相应的逻辑处理,如之前提到的快递信息。

5、最后在浮动的Activity中设置ListView的点击事件,这里将要将返回的数据添加到Intent中,然后调用 setResultonBackPressed(),传值回底层的Activity并让当前浮动的Activity消失,大功告成。代码如下

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView
adapterView, View view, int i, long l) { //将选择的年份回传至上个界面 并让本界面消失 Intent intent = new Intent(); intent.putExtra("selYear", years.get(i)); setResult(RESULT_OK, intent); onBackPressed(); } });复制代码

转载于:https://juejin.im/post/5a31139551882531e944cf01

你可能感兴趣的文章
App启动流程
查看>>
原理 | 分布式链路跟踪组件 SOFATracer 和 Zipkin 模型转换
查看>>
我的第一篇博客
查看>>
手把手教你如何用Python从PDF文件中导出数据(附链接)
查看>>
维珍银河完成最长距离火箭飞行,下一步剑指太空旅行
查看>>
[Python]attributeError:'module' object has no attribute 'dump'
查看>>
Docker系列教程11-使用Nexus管理Docker镜像
查看>>
业界最全,阿里云混合云灾备服务上线!
查看>>
Windows Linux 子系统可以在资源管理器中打开
查看>>
WebStorm文件类型关联设置
查看>>
13.1 Spring MVC 关于controller的字符编码
查看>>
理发店与 App 定价模型
查看>>
ES6(数组)
查看>>
php simplexml_load_file 函数执行不稳定
查看>>
C#,VB.NET如何将Word转换为PDF和Text
查看>>
玩转Kafka的生产者
查看>>
解决android.permission.WRITE_APN_SETTINGS
查看>>
py编程技巧-1.1-如何在列表、字典、集合中根据条件筛选数据
查看>>
Ruby on Rails: UUID as your ActiveRecord primary key
查看>>
Bean property属性说明
查看>>