iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中的控件状态需要依赖哪些框架
  • 287
分享到

Android中的控件状态需要依赖哪些框架

androidroi 2023-05-31 08:05:26 287人浏览 八月长安
摘要

今天就跟大家聊聊有关Android中的控件状态需要依赖哪些框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在生产型Android客户端软件(企业级应用)开发中,界面可能存在多个输入

今天就跟大家聊聊有关Android中的控件状态需要依赖哪些框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在生产型Android客户端软件(企业级应用)开发中,界面可能存在多个输入(EditText)和多个操作(MotionEvent和KeyEvent),且操作依赖于输入的状态。如下图所示的场景:

Android中的控件状态需要依赖哪些框架

设定图中

  • 确认操作依赖于商品编码和储位的状态

  • 跳过操作不依赖于输入状态

  • 登记差异操作依赖于储位和数量的状态

输入框有三种状态:

  • 待输入;

  • 待校验;

  • 校验成功。

操作需要当其依赖的输入数据校验成功,才能执行。

如果在Activity中去判断输入框状态,那么实际需要调用(3个输入框)*(3种状态)*(3个按钮) = 27个 if 判断,对于状态的维护将使得整个程序可维护性极差,并随着输入和操作的增加,维护的状态呈指数增长。

通过对这种场景的抽象,实现了Android控件状态依赖框架,其使用方法如下:

使用方法:

布局文件引用WatchEditText和WatchButton

<com.android.yhthu.viewdependency.view.WatchEditTextandroid:id="@+id/edit_query_1"android:layout_width="match_parent"android:layout_height="wrap_content"android:tag="editQuery1"android:imeOptions="actionNext"android:hint="商品编码"android:inputType="number"/><com.android.yhthu.viewdependency.view.WatchButtonandroid:id="@+id/search_button_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:tag="buttonSearch2"android:text="确认" />

由于Library Module中的控件id不是常量(可参考ButterKnife对Library Module的支持采用R2的原因),这里采用了tag的方式。

在Activity中通过注解申明依赖

@ViewName("商品编码")private WatchEditText editQuery1;@ViewName("储位")private WatchEditText editQuery2;@ViewName("数量")private WatchEditText editQuery3;@ViewDependency(name = @ViewName("确认"), dependency = {"editQuery1", "editQuery2"})private WatchButton buttonSearch2;@ViewDependency(name = @ViewName("跳过"))private WatchButton buttonSearch3;@ViewDependency(name = @ViewName("登记缺货"), dependency = {"editQuery2", "editQuery3"})private WatchButton buttonSearch4;

ViewName定义控件名称,ViewDependency中dependency指定其依赖的控件tag。

直接执行onClick和onEditorAction(修改状态)

@Overridepublic void onClick(View v) {if (v == buttonSearch2) { Toast.makeText(this, "调接口", Toast.LENGTH_SHORT).show();} else if (v == buttonSearch3) { Toast.makeText(this, "跳下一页", Toast.LENGTH_SHORT).show();} else if (v == buttonSearch4) { Toast.makeText(this, "登记缺货", Toast.LENGTH_SHORT).show();}}

可以看出,这里并没有通过if判断各个输入控件的状态。

@Overridepublic boolean onEditorAction(TextView v, int actionId, KeyEvent event) {if (actionId == EditorInfo.IME_ACTION_NEXT && v == editQuery1 && (query1Str = editQuery1.getText().toString()).isEmpty()) { if (query1Str.equals("12345")) { editQuery1.complete(); return true; }} // 省略代码return false;}

onEditorAction模拟调用软件的Enter进行校验,这里需要注意通过editQuery1.complete()修改该EidtText的状态。

实现原理

整个框架分为三个package:annotation、state和view。

在annotation中定义ViewName和ViewDependency注解,分别用于WatchEditText和WatchButton。ViewName指定WatchEditText控件在业务中的名称,ViewDependency指定WatchButton依赖的WatchEditText控件;

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ViewDependency {ViewName name() default @ViewName;String[] dependency() default {};}

在state中通过状态模式定义Enter、Verify、Complete,其基类为抽象类Operator,定义方法operator;

public abstract class Operator {// 操作对应的上下文protected Context context;// 操作public abstract boolean operator(String operatorName, String viewName);}
public class Enter extends Operator {private static Enter enter;private Enter(Context context) { this.context = context;}public static Enter getInstance(Context context) { if (enter == null) { enter = new Enter(context); } return enter;}@Overridepublic boolean operator(String operatorName, String viewName) { Toast.makeText(context, String.fORMat("[%s]为空,不允许执行[%s]", viewName, operatorName),  Toast.LENGTH_SHORT).show(); return false;}}

WatchEditText和WatchButton定义控件的依赖关系。WatchEditText实现ViewState接口,其包含三种状态的转换方法。

public interface ViewState {void enter();void verify();void complete();}

看完上述内容,你们对Android中的控件状态需要依赖哪些框架有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Android中的控件状态需要依赖哪些框架

本文链接: https://www.lsjlt.com/news/224429.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中的控件状态需要依赖哪些框架
    今天就跟大家聊聊有关Android中的控件状态需要依赖哪些框架,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在生产型Android客户端软件(企业级应用)开发中,界面可能存在多个输入...
    99+
    2023-05-31
    android roi
  • 常用的android插件化框架有哪些
    常用的Android插件化框架有以下几种:1. VirtualAPK:支持动态加载APK,并且插件与宿主之间可以共享资源。它的特点是...
    99+
    2023-10-21
    android
  • ASP 接口框架文件:有哪些常见错误需要避免?
    随着互联网的普及,越来越多的企业开始使用 ASP 接口框架文件来构建自己的网站和应用程序。但是,由于 ASP 接口框架文件的复杂性,很容易出现各种各样的错误。在本文中,我们将介绍 ASP 接口框架文件中常见的错误,并提供一些避免这些错误的...
    99+
    2023-07-28
    接口 框架 文件
  • ASP 接口框架文件:有哪些最佳实践需要知道?
    ASP 接口框架文件是一种常用的工具,可以帮助开发者快速构建 Web 应用程序。然而,对于初学者来说,可能会感到困惑,不知道如何正确使用 ASP 接口框架文件。本文将为您介绍 ASP 接口框架文件的最佳实践,以便您更好地利用这一工具。 使...
    99+
    2023-07-28
    接口 框架 文件
  • ASP 接口框架文件:有哪些常见问题需要注意?
    随着互联网的发展,越来越多的网站需要接入第三方平台的数据,实现数据共享和业务扩展。ASP 接口框架文件作为一种常见的接口开发方式,被广泛应用于数据接口的开发。在使用 ASP 接口框架文件进行开发时,我们需要注意以下几个常见问题: 一、请求...
    99+
    2023-07-27
    接口 框架 文件
  • Android中的 View框架可以对哪些事件进行操作
    Android中的 View框架可以对哪些事件进行操作?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.Android View框架提供了3个对事件的主要操作概...
    99+
    2023-05-31
    android view
  • Spring框架中的并发控制机制有哪些?
    Spring框架是Java应用程序开发中非常常用的框架之一。在现代应用程序中,多线程和并发控制是必不可少的。在本文中,我们将探讨Spring框架中的并发控制机制。 Synchronized关键字 Synchronized关键字是Java...
    99+
    2023-07-20
    并发 spring 日志
  • 软件构架之码农需要了解的软件构架模式有哪些
    这篇文章主要讲解了“软件构架之码农需要了解的软件构架模式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“软件构架之码农需要了解的软件构架模式有哪些”吧!...
    99+
    2024-04-02
  • 你的 Python 框架 numy 学习笔记有哪些需要注意的地方?
    Python 是一门十分流行的编程语言,其强大的生态圈和丰富的库使其成为数据科学领域的首选语言。NumPy 是其中的一个重要框架,它提供了一个用于 Python 语言的多维数组对象,以及一些处理这些数组的函数。本文将介绍一些在学习 NumP...
    99+
    2023-10-25
    框架 numy 学习笔记
  • Java框架在Windows系统上的应用,有哪些需要注意的细节?
    Java作为一种广泛应用的编程语言,被越来越多的开发者使用。而Java框架作为Java开发中的重要组成部分,也是开发者们必备的技能之一。在Windows系统上使用Java框架,我们需要注意哪些细节呢?本文将对此进行详细介绍。 JDK的安装...
    99+
    2023-09-12
    windows 框架 leetcode
  • 你需要了解哪些Python库来应对Spring框架的面试题目?
    Python是一种广泛使用的编程语言,而Spring框架是一种用于开发Java应用程序的框架。对于那些想要在面试中脱颖而出的Python开发人员,了解一些Python库来应对Spring框架的面试题目将是非常重要的。在本文中,我们将介绍一些...
    99+
    2023-09-07
    spring 面试 numpy
  • 在使用GO框架时,Git和IDE有哪些需要注意的问题?
    在开发过程中,Git和IDE是程序员最常用的工具之一。Git作为一个版本控制工具,可以帮助我们更好地管理我们的代码,而IDE则可以提高我们的开发效率。在使用GO框架时,Git和IDE也不可或缺。但是,有些问题需要我们注意,本文将介绍在使用...
    99+
    2023-09-01
    框架 git ide
  • 在React中跨组件分发状态的方法有哪些
    小编给大家分享一下在React中跨组件分发状态的方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!问题;为了向您展示我的意思,我将使用一个简单的书籍CRUD(译者注:增加(Creat...
    99+
    2024-04-02
  • vb中图像框控件的常用属性有哪些
    VB中的图像框控件常用属性有:1. BackColor:设置图像框的背景颜色。2. BorderColor:设置图像框的边框颜色。3...
    99+
    2023-10-10
    vb
  • C++ 生态系统中最受欢迎的库和框架有哪些?
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • C#中文件安全管理需要注意的事项有哪些
    这篇文章给大家分享的是有关C#中文件安全管理需要注意的事项有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一.DotNet文件目录常用操作:     &nbs...
    99+
    2023-06-14
  • Java中的文件处理技巧:你需要掌握哪些知识?
    Java是一种非常流行的编程语言,被广泛应用于各种领域。在Java中,文件处理是一个非常重要的方面。无论是读取文件、写入文件、复制文件还是删除文件,Java都提供了非常方便的方法。在本篇文章中,我们将深入探讨Java中的文件处理技巧,帮助...
    99+
    2023-06-24
    文件 二维码 shell
  • IDE 文件中的 ASP 重定向:有哪些需要注意的地方?
    在 ASP 的开发中,我们经常需要使用重定向功能来实现页面的跳转。ASP 重定向是一种非常常见的页面跳转方式,它可以帮助用户快速地跳转到目标页面,同时也能够帮助开发人员更好地管理页面之间的关系。在本文中,我们将介绍 ASP 重定向的相关知...
    99+
    2023-10-29
    重定向 ide 文件
  • 想要在 ASP 应用程序中使用重定向?您需要了解这些分布式框架的知识。
    在 ASP 应用程序中,重定向是一个重要的功能,它可以让用户在访问网站时自动跳转到另一个页面。这个功能在很多场景中都非常有用,比如在用户登录后,将用户重定向到他们最初请求的页面,或者在用户访问了一个需要权限的页面时,将他们重定向到登录页面...
    99+
    2023-10-26
    分布式 框架 重定向
  • php文件系统中创建需要用到哪些类型的函数
    这篇文章主要介绍了php文件系统中创建需要用到哪些类型的函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是文件系统文件系统只是PHP知识的一个完整的模块而已。对所有的文...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作