说起响应试编程,要提到的当然是Rx系列的库了,Rx系列的库对于很多语言和平台的运用是非常广泛的,例如(.NET,Java,Scala,Clojure,JavaScript,Ruby,Python,C,Objective-C/Cocoa,Groovy等等。而本篇将会记录如何使用RxJava对Android点击事件的监听以异步数据流的方式来进行处理,从而实现对多次点击事件的监听。多次点击事件的监听在Android中应用还是比较广泛的,比如“再次点击关闭应用程序”,又比如7次连续点击开启开发者模式等等。常规的设计无非是定义一个变量来记录点击的时间差或者定义一个线程来重置连击标识,然而这样的设计写出来...

  SBJVrgCAOQlY   2023年11月13日   19   0   0 点击事件RxJava点击事件RxJava

随着移动应用前端化越来越严重,原生应用开发的比重逐渐降低,慢慢被微信小程序/ReactNative/Weex/H5+/混合应用等替代,而这些前端化的技术栈中,mvvm模式最受推崇。google在2015年的I/O大会就推出了mvvm模式的DataBinding框架,而在实际项目中被使用的情况并不多,在前端技术快速发展的今天,mvvm模式被推向了风口浪尖,而Android的DataBinding又一次受到了关注。在google的2017年I/O大会上,kotlin被指定为Android开发官方语言,本篇以一个小例子记录DataBinding在kotlin环境下的配置以及使用,以及和前端框架Vue...

  SBJVrgCAOQlY   2023年11月13日   692   0   0 androidMVVMMVVMandroid

在ReactNative中UI的刷新大多数情况依赖于state的变更,通过调用组件的setState方法来更新state以达到通知组件重新渲染UI的目的。当然这种做法是官方提供的标准解决方案,在进行简单UI设计时足以满足大多数需求。但是当遇到结构复杂并存在数据交互的界面设计时,手动管理state这种做法则会把代码逻辑变得非常混乱,组件内不但要负责UI的渲染,还要兼顾state的变更以及不同组件间数据的传递和同步。当项目遇到这种时,引入一个状态管理框架则显得尤为重要。本篇则着重以一个List的数据展示及更新的例子来展开,记录如何在ReactNative中使用MobX框架来代替手动管理state更...

  SBJVrgCAOQlY   2023年11月05日   175   0   0 MobXReactNativeMobXUIUIReactNative

最近突然要用到带有进度的下载按钮,暂时找不到满意的轮子,自己动手丰衣足食。两个主要特性: 文字反色 按钮镂空透明 文字的反色处理,有两种方案。一种是使用两层布局,两层布局分别使用反色来处理,再通过clipPath切割上层布局,切割掉的部分漏出下层的反色布局,以此来实现进度反色的效果。第二种则是使用canvas绘图,通过xfermode叠加绘制来实现镂空效果。 这里使用第二种方案,原因如下:1.布局叠加无法实现反色部分透明,无法看到按钮下的布局。2.太low 实现文字反色比较简单,通过XOR类型的文字paint叠加绘制到底层button上就可以了。 paintTxt.xfermode=P...

android中实现毛玻璃效果的方法比较多,有用java实现图片处理算法的,也有把算法用c/c实现并用jni调用的,而实现毛玻璃的开源库在github上也有不少.其实google的官方sdk中也为我们提供了这样的工具,本着能用官方尽量不自己实现,能自己实现尽量不用第三方的原则,官方的实现方式当然是要尝试一下的.同时,本例中的拖拽进度和图片的处理以及回显是通过RxJava放在不同的进程中处理的,如果不熟悉Rx框架可以补一下,RxJava用于异步操作以及事件流的处理非常好用.上图: 使用官方api实现高斯模糊处理我们需要用到android.renderscript.ScriptIntrinsic...

  SBJVrgCAOQlY   2023年11月02日   25   0   0 android毛玻璃毛玻璃android

在android中常规的网络请求方式是把URL地址作为常量放在某个固定的类中,比如定义一个URLConstant,里面定义URL1/URL2/URL3等等,在使用的时候使用URLConstant.URL1这样的形式来获取真实的网络地址。而每一个网络接口的参数列表则是放在另外一个类或者临时赋值,在这样的设计情况下,在网络接口达到一定量的时候会出现一个URL地址找不到对应的参数列表的困扰,因为太多了。或许在真实实践中可以通过注释或者规范的命名来规避这个问题,但是我们仍然需要考虑有没有一种更好的解决方案呢?比如这样来调用: //调用: IPersonServeriPersonServer=Serv...

由于工作内容的局限性,Service组件在平时并不经常用得上,本篇以一个简单的音乐播放器为例,记录开发过程,以熟悉Service组件的使用,以免生疏。本篇中所用到的音乐数据及音乐播放地址皆以爬虫实时获取,只用于学习交流所用。 本篇核心在于温习Service组件的使用,爬取音乐数据及列表展示不在此赘述,详情可查看篇尾项目地址 定义Service用于编写所有的音乐播放控制及监听逻辑 首先我们定义一个MusicPlayService publicclassMusicPlayerServiceextendsService{ privateMusicInfocurrentMusic=null; pri...

  SBJVrgCAOQlY   2023年11月02日   770   0   0 音乐播放音乐播放

longlongago,android开发还只能在eclipse环境中进行开发,如果遇到多产品发布的需求,唯一的选择就是把工程项目拷贝一份出来,然后定制修改后进行打包发布。如果是深度定制的还好,若只是修改logo或应用名称的这种场景,再进行项目的开发就需要在所有产品的项目工程里进行重复性的调整,可怕。而如今,我们有了更成熟的方案,只需要在guild.gradle文件中进行简单的配置,就可以实现一个项目打包多个产品的目的,果真是逆水行舟,不进则退。 注:这里的“产品”特指对客户进行定制化开发,类似于多渠道发布。 调整build.gradle 在gradle构建的android工程里,要实现多...

  SBJVrgCAOQlY   2023年11月02日   223   0   0 android打包发布打包发布android

Android平台能够使用的数据库无非SQLite和Realm两种,Realm是第三方的响应式移动平台数据库,而SQLite则是Android原生支持的文件数据库。 今天要记录的是SQLite数据库的Orm框架GreenDao3,和EventBus出自同一开源组织,来自于greenrobot。 GreenDao3相对于GreenDao2使用起来更加便捷,是不可多得的兼效率和便捷于一身的SQLiteOrm框架。 添加Gradle依赖 将下面gradle配置加入到Android项目中 buildscript{ repositories{ mavenCentral() } dependencie...

  SBJVrgCAOQlY   2023年11月02日   841   0   0 android数据库数据库android

传统的MVC架构是个非常经典的设计,它将系统的任务进行分层,将代码分割到模型(model)-视图(view)-控制器(controller)三个层面来实现解耦,从而简化开发流程,实现开发任务的分离。而在android平台中,xml布局文件作为视图的承载能力并不强,通常会将一部分的view操作放在Activity/Fragment中来处理,而Activity/Fragment通常又担任了controller的角色,这就造成了V和C在Android中通常融合在一起,以至MVC的设计架构在Android中并不能进行很好的分层,形成了一种貌合神离的现象。在这样的背景下,MVP设计架构应运而生。在MVP...

  SBJVrgCAOQlY   2023年11月02日   30   0   0 androidMVPMVPandroid

EventBus就是publish/subscribe消息总线,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息。它的三要素:Event:事件。可以是任何的对象。Subscriber:事件订阅者,接收特定的事件。方法以onEvent开头,一共有四个方法onEvent,onEventMainThread,onEventBackgroundThread,onEventAsync。它们之间的区别在于在不同的线程。等会会有一一举例。Publisher:事件发布者,用于通知Subscriber有事件发生,可以在任何的地方...

  SBJVrgCAOQlY   2023年11月02日   138   0   0 androidEventBusEventBusandroid

最近因项目需求需要在android应用程序中下载一些附件,并打开这些附件,比如音视频视频以及图片这些。开始还好,文件类型不是很多,但是后来需求又加上doc/xls/ppt等,后来又兼容了pdf。这时候已经被需求改的烦不胜烦,觉得有必要针对打开本地文件做一个通用的封装了,判断File的类型,然后用指定类型的intent去通知系统。比如这样:FileUtil.openFile(context,file) 首先我们知道通知系统打开一个指定类型的文件一般情况需要这样做: Intentintent=newIntent(); intent.addFlags(Intent.FLAG_ACTIVITY_NE...

最近工作中突然遇到一个很烦人的问题,事情的起因是这样的.我参与开发/维护着大概5个项目,负责服务端后台的同事经常在自己的本地电脑启着本地服务测试一些东西,而他们的本地局域网IP是经常变动的,那么问题来了,只要他们的IP地址变动了就会过来找我针对某个局域网IP地址为某个项目打个包,烦不胜烦.甚至有些情况下需要两项目同时开发,AndroidStudio需要连着开好几个,但是电脑受不了啊,而且AndroidStudio有一个非常不友好的地方:如果开启多个AndroidStudio工程,只要某一个窗口卡了,那么其余的工程界面也全都是无响应状态的.当这两个问题重叠到一起的时候,好了,可用把鼠标和键盘放一...

在Android开发工作中热更新一直是个遗留问题,虽然GooglePlay或者苹果商店的应用审核中都是禁止App这么做的,但仍有大量的开发者想要通过热更新或者热补丁来对已经发布的应用进行更新,而不用重新打包发布一个新的版本,毕竟一个刚发布的应用如果因为一个小bug而让用户再次进行更新,一是用户体验不好,二是发布的过程太过繁琐。之前也因为热更新的问题做过各种各样的尝试,包括H5,ReactNative,动态加载dex,使用Javascript和java交互等,单都因为各种原因造成不能在生产环境中使用。 方案 问题 H5/H5+ 性能瓶颈在于设备WebView对html和JS的解...

  SBJVrgCAOQlY   2023年11月02日   199   0   0 luaandroidjavaluajavaandroid
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~