首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RxBinding详解: 规范而强大的安卓UI响应式编程

一段时间后,你的fragment或者activity中由于各种匿名类而显得十分混乱。这时,如果你想再为该类中控件/视图添加由其它视图触发的响应事件,那将变得非常复杂。...下面我们来看看如何用RxBinding完全实现TextWatcher。...让我们来看一下这个例子: 假设你想察看一个EditText输入文字时文本的变化(查看指定类型的数据)。...EditText的原始文本类型是CharSequence,而你要获取倒序的String类型的文本,你可以这样: final TextView nameLabel = (TextView) findViewById...你可以想象,通过RxJava的操作方法及自定义的操作方法你可以实现许多功能。 我想再表扬一下这么强大的语法糖,远超Android这些视图/控件API。

2.9K40

《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

从用户的角度来看,用户在使用Android应用的时候,经常打开多个界面(活动),完成一系列的操作,比如:用户要在浏览器中查看新闻就需要点击新闻列表,打开新闻浏览界面;如果想把刚才看到的新闻分享给微信中的朋友...如果用鼠标点击列表项,通过position就能够知道当前点击的是哪一个知识点。接下来,获取知识点的图片Id号和标题文本,把它们显示在控件上。...从Intent中取出数据时,需要根据数据的类型调用相应的get函数,比如使用getStringExtra()函数来获取字符串类型数据,函数的参数是对应数据的键值。...在活动的onCreate函数中,首先,创建DisplayMetrics对象,通过它来获取与屏幕相关的信息。在创建双缓冲视图是,需要获取屏幕的像素宽度和高度,它们的单位是px(像素)。...从Intent中获取图片的uri,通过输入流读取图片数据,然后解码。

22610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android设计模式二

    采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。...Facade设计模式更注重从框架的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。 Facade设计模式并非一个集装箱,可以任意地放进任何多个对象。...一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加功能。我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。...,根据不同的主体,进行不同的活动 this.s = s; } } class CroptoStream extends DecroratorStream { //通过调用父类...其缺点在于难以应对“新对象”的需求变动。 如果没有应对“多系列对象构建”的需求变化,则没有必须使用这个模式,这时候使用简单工厂完全可以。

    43420

    安卓软件开发_应用程序UI组件意外停止

    通过Activity.setContentView() 方法放置一个视图层次在一个活动窗口中。内容视图(content view)是层次结构的根视图对象。...例如一个服务可能是播放背景音乐而用户做其他一些事情,或者它可能从网络获取数据,或计算一些东西并提供结果给需要的活动(activities)。每个服务都继承自Service基类。...典型的是放在一个持久的图标在状态栏,用户可以打开获取信息。...内容提供者是Android应用程序的主要组成部分之一,提供内容给应用程序。他们封装数据且通过单个ContentResolver接口提供给应用程序。只有需要在多个应用程序间共享数据是才需要内容提供者。...例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。如果你不需要在多个应用程序间共享数据,你可以直接使用SQLiteDataBase。

    1K10

    Android开发笔记(三十六)展示类控件

    View/ViewGroup View是单个视图,所有的控件类都是从它派生出来;而ViewGroup是个视图组织,所有的布局视图类都是从它派生出来。...由于View和ViewGroup是基类,因此很少会直接使用,偶尔用到的场景,主要有如下几个: 1、页面上需要单独显示一条横线或者竖线。...需要注意的是,scrollbars只能在xml中设置,而无法通过代码设置。反过来,setMovementMethod只能在代码中设置,而无法通过xml设置。...可能大家很奇怪为何还要该方法,其实是因为绘图缓存默认背景色是黑色,如果不提前设置缓存的背景色的话,截图的结果就是黑乎乎一片,所以需要将背景色设置为默认颜色(通常是白色)。...于是我们得通过输入法工具类InputMethodManager来协助,该类的对象从系统服务Context.INPUT_METHOD_SERVICE中获取。

    1.5K30

    Android 9.0 强势来袭,带来了哪些新特性?

    增强的消息体验 从Android 7.0(API级别24)开始,开发者可以添加操作以回复消息或直接从通知中输入其他文本。...多相机支持 在Android 9的设备上,用户可以同时从两个或多个物理摄像头访问数据流。在具有双前置或双后置摄像头的设备上,可实现使用单个摄像头无法实现的创新功能,例如无缝变焦,散景和立体视觉。...您可以使用ImageDecoder或BitmapFactory进行jpeg-to-heic转换以从jpeg获取位图,并且可以使用HeifWriter从YUV字节缓冲区,Surface或Bitmap写入HEIF...频带和活动阶段的数量是可配置的,并且大多数参数可以实时控制。...引导语义 Android 9中添加的属性使我们可以更轻松地定义辅助功能服务(尤其是屏幕阅读器)如何从屏幕的一个部分导航到另一个部分。

    3.5K20

    Android软键盘输入处理技巧

    因此,了解如何监听软键盘输入是非常重要的。 如何监听软键盘输入 在Android中,我们可以使用EditText的TextWatcher接口来监听软键盘输入。...} }); 通过TextWatcher接口,我们能显示层进行输入监听,但如果我们需要在软键盘操作的过程中就监听用户的输入行为,又该如何实现呢?...如何监听用户的输入事件 要监听用户的输入事件,你可以通过实现InputConnection的方法来实现。...以下是一个示例,演示如何使用 InputConnection 监听和记录用户的文本输入: public class MyInputConnection extends InputConnectionWrapper...现在,软键盘输入将通过 MyInputConnection 进行监听和记录。 总结 通过使用TextWatcher接口,我们可以轻松地监听软键盘输入,并在用户输入文本时执行相应的操作。

    48210

    Android开发之那些好用的数据结构与API

    ,使用的是二分查找法 //创建一个存储String值得SparseArray SparseArray sparseArray = new SparseArray();...//存储 注意key是int类型 sparseArray.put(1, "zhangsan"); sparseArray.put(2, "123456"); //通过int类型的key获取value...sparseArray.get(1); //第二个参数是默认值 sparseArray.put(2, "000000"); //获取索引处的key与value sparseArray.keyAt(1)...key的类型是int、long或者boolean类型,那么使用SparseArray,因为它避免了自动装箱的过程; (2)如果key类型为其它的类型,则使用ArrayMap; (3)两个数据结构都适合数据量不是特别大的情况...str.equals("")) **3.TextWatcher **接口,用来监听文本输入框内容的改变,这个应该相对知道的人多一点,因为经常会有这样的需求,基本结构如下: TextWatcher mTextWatcher

    83850

    最新iOS设计规范四|3大界面要素:视图(Views)

    显示多个浮层会使界面混乱不堪。永远不要显示一个有层级关系的浮层,或一个浮层接着又弹出一个浮层。如果你需要显示另一个浮层,请先关闭当前浮层。 警示框除外,不要在浮层上显示其他视图。...除了警示框,浮层上不应显示任何视图。 如果可能的话,让用户在一次点击中关闭一个浮层,同时打开另一个浮层。避免额外的点击,尤其是需要在多个不同的项目栏中打开浮层时。 避免浮层太大。...由于拆分视图提供了对多个层次结构的访问权限,因此人们可以通过在列之间拖放项目来将内容从应用程序的一个部分快速移动到另一部分。...文本视图可以是任何高度,并可以通过滚动的方式显示额外的内容。 默认情况下,文本视图中的文本是左对齐的,并使用黑色的系统字体。如果文本视图可编辑,则在视图内部点击时,屏幕下方会弹出键盘。 ?...网页视图支持前进和后退导航,但默认情况下这种交互行为是被禁用了的。如果用户想通过网页视图访问多个页面,请启用前进和后退导航,并提供相应的控件来启动这些功能。 避免使用网页视图来构建一个网页浏览器。

    8.5K31

    Android设计模式一

    一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象添加功能。我们称这个嵌入的对象为装饰。这个装饰与它所装饰的组件接口一致,因此它对使用该组件的客户透明。...它将客户请求转发给该组件,并且可能在转发前后执行一些额外的动作。透明性使得你可以递归的嵌套多个装饰,从而可以添加任意多的功能。 模式定义 动态(组合)地给一个对象增加一些额外的职责。...,根据不同的主体,进行不同的活动 this.s = s; } } class CroptoStream extends DecroratorStream { //通过调用父类...但在实现上又表现为has-a Component的组合关系,即Decorator类又使用了另一个Component类。...其缺点在于难以应对“新对象”的需求变动。 如果没有应对“多系列对象构建”的需求变化,则没有必须使用这个模式,这时候使用简单工厂完全可以。

    50720

    最新iOS设计规范五|3大界面要素:控件(Controls)

    添加联系人按钮 用户可以点击“添加联系人”按钮来浏览现有联系人列表,并选择一个要插入到文本字段或其他视图中的联系人。...通过颜色选择器的选项卡式界面,人们可以从网格或光谱中选择颜色,也可以通过选择RGB值来选择颜色。人们还可以通过点击吸管按钮并使用放大镜来选择出现在屏幕上任何地方的颜色,从而选择一种颜色。 ?...为了与你的设计风格融合并且更准确地传达设计意图,滑块的外观是可以更改的,包括轨道颜色、“拇指”图标以及左右位置的图标。 不要使用滑块来调节音量。如果你的APP需要提供音量控制,请使用音量视图。...如果你需要工具栏或导航栏中使用类似功能,请改用按钮,并提供两个不同的图标来传达不同的状态。 避免在开关中添加说明标签。关于开关的打开或关闭,用户是很明确的。...若有“清除”按钮,点击它便会立即清空文本字段的内容,避免一直点击删除。 适当时候,使用安全文本字段。若需要输入的是敏感数据(如密码)时,请始终使用安全提示类的文本字段。

    8.6K30

    《iOS Human Interface Guidelines》——Table View表视图

    一个表视图: 在可以分章节或分组的行中显示数据 提供让用户添加或移除行、选择多个行、查看关于一行条目的更多信息或显示另一个表视图的控件 iOS定义了两种风格的表视图: 简单风格。...NOTE 所有四个标准表单元格风格都允许额外的表视图元素,比如勾选符号和扩展指示器。添加这些元素会减少标题和子标题可使用的单元格宽度。 清晰而有效地使用表视图来显示大量或少量的信息。...在点击之后,用户期待一个新视图的出现(或者行显示一个勾选符号)来表示条目被选中了。 如果表内容是冗长的或复杂的,不要等到所有数据都获取之后再显示。...而是立即用文本数据填成屏幕上的行然后当复杂的数据获取之后——比如图片——再显示它们。这个技术可以立马给用户有用的信息并且提高了你app的响应能力。 在等待新数据到达时考虑显示旧数据。...表应该在屏幕中间显示一个旋转的活动指示器,伴随着信息文本(比如“加载中...”)。这个行为可以使用户安心。 合适的话,给删除按钮使用一个自定义的标题。

    2.4K20

    【Android从零单排系列三十五】《Android四大组件——Activity》

    前言 小伙伴们,在之前的系列文章我们分别介绍了Android视图组件及布局相关的内容,从本文开始我们继续盘点介绍Android开发中另一个比较重要的内容,Android四大组件,第一个 Activity...可以在Intent中携带数据,启动目标Activity后可以通过获取Intent中的数据进行处理。...处理界面交互:可以在Activity中通过findViewById()方法获取布局中的UI组件,并进行事件监听和处理。例如设置按钮的点击事件、文本框的输入监听等。...启动Activity:可以使用Intent来启动另一个Activity。根据需要,可以设置Intent中的数据和启动标志。...七 总结 总之,Activity是Android应用程序开发的重要组件,它处理用户界面和交互,并提供了生命周期管理、布局和视图管理、意图启动等核心功能,帮助开发者构建丰富、交互性强的应用程序。

    22610

    ML.NET介绍:最常使用的数据结构IDataView

    注意,表和视图都是示意图化的,被组织成符合列类型的类型化列和行。 视图在以下几个方面与表不同: 视图是可组合。新视图是通过对其他视图应用转换(查询)形成的。...多个游标可以在同一个视图上活动,可以是顺序的,也可以是并行的。特别是,视图支持通过行进行多次迭代。每个游标都有一组活动列,在游标构建时指定。通过在游标构造时传递的可选随机数生成器支持变换。...要访问视图中的数据,可以通过调用GetRowCursor方法从视图中获取行游标。行游标是视图中单个行(即当前行)上的可移动窗口。行游标提供当前行的列值。光标的MoveNext()方法前进到下一行。...(一个或多个),使用TextLoader对象读取文本文件数据到IDataView对象。...如果您希望与多个线程同时进行预测,则需要为每个线程提供一个预测函数。 ML中支持的机器学习类型: 深度学习Deep Learning 深度学习是机器学习的一个子集。

    1.8K41

    WWV 2018年十大必看视频

    创建ML可以与图像识别,文本分析甚至表格数据一起使用,其中多个特征可以进行可靠的预测。您甚至可以利用Apple的现成模型利用转移学习来增强培训 - 将培训时间从几小时缩短到几分钟。...利用泛型类型可以使Swift使用参数多态 - 这是泛型的另一个名称。 设计协议是检查泛型是Swift的好方法。该演讲涵盖了如何使用泛型类型统一具体类型。...Miles进一步演示了如何通过在运行期间明智地设置属性来减少重复调用。 另一个高级技巧涉及执行线程 - 谨慎,因为您可以更改应用程序的状态。p是另一个LLDB命令,用于查看当前对象的调试表示。...Kasia Wawer通过解释如何构建高效布局来继续会议。使用并不总是出现的元素的一个技巧是将其设置为隐藏而不是添加或删除它。考虑始终存在的约束,并分别对来来去去的约束进行分组。...可以通过其内容文本或图像来了解前者的视图。后者从引擎中获取大小信息。 调用systemLayoutSizeFitting创建引擎实例,添加约束,解决布局,返回大小调整并删除引擎。

    2.8K20

    SAP S4 HANA业务伙伴工具集(BDT)

    程序逻辑: •每个应用程序的事件(读取数据、检查数据、保存数据) •表事件(应用程序/功能组之间的通信 •每个视图的事件 o用于准备表(排序等)的PBC事件 o数据输入前的PBO事件从定制表中读取文本、...查看属性事件功能模块 1 输出前(PBO):例如,选择并显示文本 2 输入后(PAI):字段检查 3 屏幕调用(PBC)之前:排序表,显示第一个条目 仅在以下情况下显示视图 1 视图应用程序处于活动状态...2 视图被分配给要维护的对象 子屏幕的流程逻辑 1 在PBO中调用功能模块BUS_PBO(字段修改,消息) 2 在PAI中调用功能模块BUS_PAI(确定光标位置) 数据集的特殊重要性另一个有趣的点是如何处理角色和技术元素之间的连接...请记住,对于BP事务,每个选定的角色都以不同的屏幕布局(可见选项卡)显示。系统是如何管理这一点的?每个视图都被分配给视图定义中的数据集。所选数据集被分配给所谓的BP视图(事务BUSD)。...另一个功能是通过单击特定的屏幕名称、视图名称、节名称……直接从BDT Analyzer导航到定制设置……字段组字段组表示具有强关系的字段的集合。请记住,字段修改基于字段组。

    55830

    WWDC 2018年十大视频评论

    创建ML可以与图像识别,文本分析甚至表格数据一起使用,其中多个特征可以进行可靠的预测。您甚至可以利用Apple的现成模型利用转移学习来增强培训 - 将培训时间从几小时缩短到几分钟。...利用泛型类型可以使Swift使用参数多态 - 这是泛型的另一个名称。 设计协议是检查泛型是Swift的好方法。该演讲涵盖了如何使用泛型类型统一具体类型。...他潜入渲染循环,因为它处理在屏幕上获取视图的各个部分。首先是updateConstraints确定是否需要和设置约束更新。其次,子视图的布局和设置。最后,如果需要,显示将绘制视图并刷新。...Kasia Wawer通过解释如何构建高效布局来继续会议。使用并不总是出现的元素的一个技巧是将其设置为隐藏而不是添加或删除它。考虑始终存在的约束,并分别对来来去去的约束进行分组。...可以通过其内容文本或图像来了解前者的视图。后者从引擎中获取大小信息。 调用systemLayoutSizeFitting创建引擎实例,添加约束,解决布局,返回大小调整并删除引擎。

    3.4K20

    Android 4.0 平台特性

    Eventintent 如果你想要做的是用户的日历添加事件,你可以使用"vnd.android.cursor.item/event"类型 的ACTION_INSERTintent 开始在日历应用程序的活动...如果URI是一个特殊的格式,您希望您的应用程序也收到一个Android束事件期间,您应该为您的活动创造的意图过滤器使用相同的URI方案,以接收传入的NDEF消息。...当其他设备接收的的应用程序记录和多个应用程序,处理的指定意图的活动NDEF消息时,系统提供的消息,在应用程序中的活动(基础上的匹配应用程序记录)如果目标设备目前还没有安装您的应用程序,该系统采用的Andr​​oid...这是有益的,如果碎片被添加到活动,但不可见的,因此应该被隐藏的菜单项。...同样的,如果你把那些观点从视图层次中他们的标记不再适用。 其他事件同步活动改变系统能见度UI(例如,隐藏的动作条或其他用户界面控制该系统界面隐藏),你应该登记的景色。

    1.2K20

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    4.3.2 添加联系人按钮 添加联系人按钮让用户将现有联系人添加到文本框或者其它文字视图中。 ? API注释 想要了解如何在代码中定义添加联系人按钮,请参考UIButton....网络活动指示器: 出现在状态栏中,当网络活动正在进行时它会旋转,在活动停止时它则消失 不支持用户交互行为 当你的app正在链接网络,而这个连接过程将会持续好几秒的时候,你可以通过网络活动指示器来给用户以反馈...如果过于一来用户自己执行所有刷新操作的话,那些不会自动刷新的用户就会疑惑,为何你app中的数据永远都不更新。...避免在同一个分段控件中,一些分段里使用纯文字,另一些分段里使用纯图。 请在必要时调整分段控件中文本的对齐方式。如果你给分段控件添加了自定义底图,请确保控件里自动居中的文本依然清晰美观。...有时候,这些直接指向的字眼容易引起歧义,有时候甚至会被误认为是一种冒犯。 适当地使用大写和标点符号,尤其是在以下这些场景中: ? 如果你必须为警告框添加正文文本,请使用一个完整的短句。

    13.2K30
    领券