AndroidUIO

Android UI 及 IO 工具库
授权协议 LGPL
开发语言 Java
所属分类 手机/移动开发、 手机开发包
软件类型 开源软件
地区 国产
投 递 者 冯枫涟
操作系统 Android
开源组织
适用人群 未知
 软件概览

Android UI 及 IO 工具库(基础框架)

Android APP framework 是一个拖沓冗余的体系,正是因为他的不足,才需要我们去完善他。

通用回调机制

---- 有物混成,先天地生

函数,是编程中最常见的处理单元,加上泛型信息,我们可以让函数的表达能力更强。

Java的函数虽然用起来不如一些函数式语言那样简洁,但是,包装在接口下面的函数,还可以更加方便的携带更丰富的信息。

在这套类库中,一个简单通用的可以携带泛型信息的回调接口, 将贯穿整个系统。

设计理念

---- 有之以为利,无之以为用。

设计一个具有良好扩展性的基础框架, 最重要的一点是掌握 “有”和“无”的平衡。

  • 有: 我需要提供那些模块?那些功能?什么结构?

  • 无: 我在我的系统中提供那些自定义的坑,可以让你自己去完善,去扩展。

我在这套类库中, 通过一个通用回调接口, 用来描述“无”的存在,绝大部分功能都以“无” 为中心来设计。

自动化处理

---- 太上,不知有之。

上善若水,我认为最好的工具,就是,当他帮你做了实实在在的事情,而你不需要关心他的存在。

在这个UI&IO框架中,大多数情况下都尊崇这个设计思想。

如:

  • 当你适用网络图片的时候,不用关心图片缓存的操作;

  • 当你编写网络任务时,Activity暂停/恢复/终止时,您无需再为相关的任务调度优化操心;

  • 没有网络的时候,不需要关心离线展示的支持;等等...

网络请求

  • 任务管理

    • 自动根据生命周期调度(终止/暂停/继续)任务。

    • 随时手动终止任务。

  • 网络缓存优化

    • 自动缓存

    • 自动离线支持

  • 双回调机制

    • 快速内容展示

    • 网络数据检查并按需更新

图片处理

  • 简单bind接口

  • 自动计数和内存管理

  • 自动支持动画gif

  • 自定义图像预处理接口

    比如,如果你想画个圆角阴影什么的

自动模型转换

数据结构和java对象是一一对应的,  但是我们很多老实的程序员天天乐此不疲的手动解析json,手动吧这些json一个个复制到java对象模型中, 这些实在是没有必要。

存储模型

  • 健值对存储DSL

    • 健值存储接口的属性,可以自动实现读写抄作, 系统通过动态代理自动将其实现。

  • 关系数据库映射DSL

    • 定义一个java类,加上简单的注解,即可描述一个简单的数据存储格式,根据这个类就可以自动创建出一个SQLiteMapping, 自动实现一个简单的关系数据映射DAO。

状态管理

  • Activity 状态

  • ##其他

  • 网络检测。

  • Toast,Application等等

Http Request && Cache && schedule automatic


    //the http request will be canceled after activity finished
    //and auto paused after the activity is paused when the task is pauseable.
    //and auto resume after the activity is resume again.
    Cancelable task = UIO.get(new Callback<MyClass>(){
        //http stream will be auto parsed and mapping to you standard javabean object.
         public void callback(MyClass javabean){
             //TODO:...
         }
         public void error(Throwable ex, boolean callbackError){
             //TODO:....
         }
    },url);
    // and you can cancel it any time by yourself
    // task.cancel();

    // double callback (cache first show and update on need)
    Cancelable task = UIO.get(new CacheCallback<MyClass>(){
         public void callback(MyClass javabean){
            //TODO: on cache parsed!
         }
         public void update(MyClass javabean){
            //TODO: on new network result(null for not modified data)
         }
         public void error(Throwable ex, boolean callbackError){
            //TODO:....
         }
    },url);

    // post file
    Cancelable task = UIO.post(new Callback<MyClass>(){
         public void callback(MyClass javabean){
            //TODO: upload success!
         }
         public void error(Throwable ex, boolean callbackError){
            //TODO:....
         }
    }, url, fileName, file);

Image Bind

//the image url will auto load and parse and set as the drawable for the imageView 
//if the image url is a animated gif,then it is show as a movie!
UIO.bind(imageView,imageUrl);

//you can set the drawableFactory for the image loading(getLoadingDrawable) and process(such as radious, shawdown....)
//and set the fallback drawable for the action
UIO.bind(imageView,imageUrl,drawableFactory,fallbackResourceId);


//you can set the callback for the bind action(callback on image load(or cached) and bind to image view)
UIO.bind(imageView, imageUrl,drawableFactory,fallbackResourceId,  callback);//Callback<Drawable>


 相关资料
  • 由来 IO工具类的存在主要针对InputStream、OutputStream、Reader、Writer封装简化,并对NIO相关操作做封装简化。总体来说,Hutool对IO的封装,主要是工具层面,我们努力做到在便捷、性能和灵活之间找到最好的平衡点。 方法 拷贝 流的读写可以总结为从输入流读取,从输出流写出,这个过程我们定义为拷贝。这个是一个基本过程,也是文件、流操作的基础。 以文件流拷贝为例:

  • 字符集和CharSet CharSet 方法说明 功能描述 availableCharsets() 获取当前JDK所支持的字符集 forName() 创建CharSet对象 newDecoder() 创建解码器 newEncoder() 创建编码器 decode() 解码 encode() 编码 CharsetDecoder 方法说明 功能描述 decode() 解码 CharsetEncoder

  • 本文向大家介绍java关闭流连接IO工具类,包括了java关闭流连接IO工具类的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java关闭流连接IO工具类的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 开发及调试工具 文本编辑器或 IDE (集成开发环境) Google Chrome, Firefox Firebug, Safari Developer Tool NOTE: Google Chrome DevTools Doc

  • 我正在尝试在flutter中使用相机插件(对于来自相机的图像选择器作为源),我知道我需要有一个最小的sdk版本到21才能使用它,但是当我看到错误时,它也建议我们也可以覆盖插件用法(这可能会导致运行时崩溃)

  • 问题内容: 尝试为自己总结这两个概念之间的区别(因为当我看到人们在一句话中同时使用这两个概念时,我感到非常困惑,例如“ Non-blocking async IO”,我试图弄清楚它是做什么的)意思)。 因此,以我的理解,无阻塞IO是操作系统的主要机制,如果有任何可用数据,则该OS处理IO,否则仅返回错误/不执行任何操作。 在异步IO中,您仅提供回调,当数据可用时,系统将通知您的应用程序。 那么,实

  • 一、介绍 mitmproxy是一组工具,可为HTTP/1,HTTP/2和WebSockets提供交互式的,具有SSL/TLS功能的拦截代理。 二、特征 拦截HTTP和HTTPS请求和响应并即时修改它们; 保存完整的HTTP对话以供以后重播和分析; 重播HTTP对话的客户端; 重播先前记录的服务器的HTTP响应; 反向代理模式将流量转发到指定的服务器; macOS和Linux上的透明代理模式; 使用

  • 1.1 为什么是Python? 1.1.1 科学家的需求 获得数据(模拟,实验控制) 操作及处理数据 可视化结果... 理解我们在做什么! 沟通结果:生成报告或出版物的图片,写报告 1.1.2 要求 对于经典的数学方法及基本的方法,有丰富的现成工具:我们不希望重新编写程序去画出曲线、傅立叶变换或者拟合算法。不要重复发明轮子! 易于学习:计算机科学不是我们的工作也不是我们的教育背景。我们想要在几分钟