概述

某些业务场景下,为了提高用户体验,我们可能需要在前一个页面就将下一个页面的数据准备好,减少用户后续操作的时间。因为Activity在设计上采用了低耦合,高度的隔离使得传统的预加载Activity方案不够优雅,现提供一种更加优雅的预加载方案,可以预先加载好布局和页面数据。

github:https://github.com/long8313002/PreloadingActivity

效果展示

使用

说明:因为库使用的是kotlin开发,需要在项目配置kotlin开发环境

库引用

implementation 'com.zhangzheng.preloading.activity:library:1.0.0'

使用示例

val intent = Intent(this,TestActivity::class.java)

intent.putExtra("id",1111)

PreLoading.preLoading(this,intent,TestPreLoadingView::class.java)

textView.setOnClickListener {

startActivity(intent)

}

默认情况下,当打开预加载页面后,页面销毁后,预加载的实例也会一起被销毁。当下次再进行就需要重新加载布局和数据,如果需要保留预加载的数据,多次重复使用,可以设置参数 autoDestroy = false ,如下:

PreLoading.preLoading(this,intent,TestPreLoadingView::class.java,false)

预加载页面实现

考虑到不同的项目使用的基类Activity会有所不同,为了通用性,未直接定制Activity,而是提供 AbsPreLoadingView 来通过组合的方式来实现。为了使用方便,这边提供了一个继承于Activity的基类,实际使用中可以参考这个类来实现自己的基类,如下:

示范基类

abstract class AbsPreLoadingActivity : Activity() {

abstract fun preLoadingViewClass() : KClass

private lateinit var preLoadingView: AbsPreLoadingView

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

preLoadingView =preLoadingViewClass().getOrCreate(intent, this)

setContentView(preLoadingView)

preLoadingView.callCreate(savedInstanceState)

}

override fun onStart() {

super.onStart()

preLoadingView.callStart()

}

override fun onResume() {

super.onResume()

preLoadingView.callResume()

}

override fun onPause() {

super.onPause()

preLoadingView.callPause()

}

override fun onStop() {

super.onStop()

preLoadingView.callStop()

}

override fun onDestroy() {

super.onDestroy()

preLoadingView.callDestroy()

}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

super.onActivityResult(requestCode, resultCode, data)

preLoadingView.onActivityResult(requestCode, resultCode, data)

}

}

使用示范

class TestActivity : AbsPreLoadingActivity() {

override fun preLoadingViewClass() = TestPreLoadingView::class

}

class TestPreLoadingView(context: Context) : AbsPreLoadingView(context) {

override fun resId() = R.layout.activity_test_list

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

requestTestData(intent?.getIntExtra("id",0)?:0)

}

override fun onResume() {

super.onResume()

}

private fun requestTestData(id:Int){

Thread {

Thread.sleep(1000)

val listData = ArrayList()

listData.add("$id === > 1")

listData.add("$id === > 2")

listData.add("$id === > 3")

listData.add("$id === > 4")

listData.add("$id === > 5")

listData.add("$id === > 6")

listData.add("$id === > 7")

listData.add("$id === > 8")

listData.add("$id === > 9")

listData.add("$id === > 10")

listData.add("$id === > 11")

listData.add("$id === > 12")

Handler(Looper.getMainLooper()).post {

listview.adapter = ArrayAdapter(context,android.R.layout.simple_list_item_1,listData)

}

}.start()

}

}

android listview预加载动画,Android开发Activity页面预加载相关推荐

  1. android listview下拉刷新动画,android 安卓 listview 支持下拉刷新 上拉加载更多

    [1]重写listViewimport java.text.SimpleDateFormat; import java.util.Date; import com.example.testdddlea ...

  2. android listview remove 动画,给Android ListView添加删除item动画

    给Android ListView添加删除item动画 给listview删除一个item的时候加上一个折叠动画,感觉效果会好一点. 步骤是当删除一个view,先用动画把view的高度改变,看上去就是 ...

  3. android 仿qq录音动画,Android实现QQ点赞效果动画 Android动画

    版权声明:本文为代码部落原创文章,转载请注明出处. 前言 点赞是现在社交app中比较常用的功能,一个小小的点赞按钮如果能加上一些有趣动画,一来告诉用户你已经点了赞(这是对一些手残党极大的福音),二来人 ...

  4. android 今日头条加载动画,Android 仿今日头条简单的刷新效果实例代码

    点击按钮,先自动进行下拉刷新,也可以手动刷新,刷新完后,最后就多一行数据.有四个选项卡. 前两天导师要求做一个给本科学生预定机房座位的app,出发点来自这里.做着做着遇到很多问题,都解决了.这个效果感 ...

  5. html实现图片加载动画效果,HTML5+javascript实现图片加载进度动画效果

    在网上找资料的时候,看到网上有图片加载进度的效果,手痒就自己也写了一个. 图片加载完后,隐藏loading效果. 想看加载效果,请ctrel+F5强制刷新或者清理缓存. 效果预览: 0% 代码如下: ...

  6. android 悬浮窗的显示动画,android 悬浮窗特效

    最近在开发项目的时候需要做一个悬浮层的动画,类似于支付宝掉钱动画.但是区别在于,需求是浮出一个窗口,之后边缩放边位移至屏幕右下角标签处.效果图如下: 一开始考虑用自定义View来做.后来发现开线程让其 ...

  7. android 设置键盘弹出动画,Android实现键盘弹出界面上移的实现思路

    1.首先说一下思路: 基本就是结合layout中ScrollView视图和AndroidManifest.xml中activity中的android:windowSoftInputMode属性配置实现 ...

  8. Android 仿艺龙酒店首页两个Activity页面同时动画

    -先创建一个空布局newLayout放在父控件第一的位置 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/ ...

  9. 好看的html登录遮罩提示加载中,jQuery炫酷页面预加载Loading特效插件

    fakeLoader.js是一款轻量级的 jQuery 炫酷页面预加载Loading特效插件.它能帮助我们创建一个全屏遮罩效果的旋转loading效果来模拟页面预加载过程. Bower安装 bower ...

最新文章

  1. 《VMware vCAT权威指南:成功构建云环境的核心技术和方法》一3.6 vCloud计量
  2. Android开发之蓝牙--扫描已经配对的蓝牙设备
  3. 拯救颓废假期!快来和我们一起刷论文写笔记
  4. Git 提交规范-Java程序员收藏必备
  5. MongoDB操作:insert()
  6. Java 8:测试Lambda水
  7. 比拼 Kafka, 大数据分析新秀Pulsar到底好在哪
  8. html前沿技术网页,html页面标签元素总结
  9. 为普通用户添加root权限
  10. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...
  11. 销售管理c语言程序设计,C语言课程设计销售管理系统
  12. Windows Server 2008下IIS 7配置ASP+ACCESS环境
  13. IBatisNet -- 保护你的配置文件及映射文件信息
  14. Xshell、Xftp免费版获取教程
  15. 解决remote: You are not allowed to upload code.fatal: unable to access.The requested URL error:403
  16. MediaCodec之Decoder
  17. 37岁程序员裸辞,120天被497家公司拒绝,网友:为自己的冲动买单
  18. 什么是rootkit
  19. Linux下同一个Tomcat部署多个项目不同端口访问
  20. 用递归方法将十进制转化为二进制数

热门文章

  1. oracle分析单个字段,ORACLE-ANALYZE命令分析
  2. php的密钥是什么意思,私钥是什么意思
  3. 网易公开课--金融市场01
  4. 弘扬雷锋精神:2019学雷锋手抄报
  5. 3DTiles Terrian Builder
  6. 类的成员变量赋值测试
  7. arduino架子鼓_基于Python和Arduino的MIDI架子鼓
  8. MyBatis从入门到精通
  9. PHP 安全:过滤、验证和转义
  10. 为什么微信卸载重安装,手机空间就大了?