浅谈Android动态页面(一)

简介: 这是一个很微妙的东西,可能平时经常用到,但是没注意,我想对这个内容进行一个总结并提出一些看法,谈的是动态页面,不是动态布局。一.什么是动态页面什么是动态页面?我认为是一种在开发时的设计思想,最终展示的页面会随着数据的改变而改变,或者说会根据数据而展示页面。

这是一个很微妙的东西,可能平时经常用到,但是没注意,我想对这个内容进行一个总结并提出一些看法,谈的是动态页面,不是动态布局。

一.什么是动态页面

什么是动态页面?我认为是一种在开发时的设计思想,最终展示的页面会随着数据的改变而改变,或者说会根据数据而展示页面。

我的观点是:
页面由数据去决定,我称它为动态页面(主要是我不知道专业术语叫什么)

比如我们经常使用的RecyclerView,我觉得它就是一个动态页面,因为它的展示会随数据的改变而改变,比如说RecyclerView要展示多少条数据,一个Item里面要展示成什么样子的。这些都是由数据去决定的。还有RecyclerView也体现出了动态页面的一个特性,复用性。不管在什么地方都能使用RecyclerView并且还能展示出来不同的效果,而展示出不同效果的原因是因为数据不同。

二.举个例子

img_23de50e1f8bed88ab526cdbab641b0cd.png
image.png

比如说,我们经常有这样的操作,我做一个学社区APP,你的首页会根据我是否登录而展示不同的状态,比如说我登录了,这个activity就展示更多内容,我没登录,这个activity就展示较少的内容。
有人会说,这样的需求我们经常做啊。是的,我们经常会有这样的需求,而有些大屌做多了,一拿到这样的需求就能很快的去完成,甚至每次搭页面的时候都会优先考虑动态。而很多新人,比如我这种,没有做多,没这样的概念,做起来会很容易出问题,所以我才想写一个总结以免以后再犯错,为什么大神不写,大神都不屑写这些东西。

再举个栗子。我开发一个多列项选择的模块,比如我们经常会看到这样的功能。

img_305b1e449ff72b6bc8cae13b2ff71040.png
image.png

左边一个列表,右边一个列表,如果你把布局写死,那它始终就是两列,而我可以把这样的需求用动态页面去实现,这样的话,我就能很轻易的实现3个列表,4个列表,甚至更多个列表。
先展示一下写的一个小demo吧。

img_f5b0c8895e4b554ac155d4d47f56a849.gif
15051384411381505138249369.gif

还有一张两列的gif坏掉了,没事,我就只展示多页的吧。我这里写了一个4页的demo
用法很简单

<com.example.kylinarm.multilisttest.MultiListView
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        app:count = "4"
        android:id="@+id/mv_content"
        >
    </com.example.kylinarm.multilisttest.MultiListView>

app:count 是最大展示多少列,默认为两页.

        mvContent.setAllWeight(1,1,1);
        mvContent.setLayoutManager();
        mvContent.setAdapter(mockResult(),this);

第一行是设置每一列的比例,第二行是初始化布局,第三行是设置数据。

这么简单的调用,就能实现一扩展性这么好的动态布局。但是我也总结出了一个规律,虽然调用简单,但是封装的内容很复杂,越是复杂的布局,使用的算法就越复杂。

三.动态布局总结

1.概念
首先希望要有这样的一个概念(讲给自己听),搭建一个模块时,优先考虑去实现动态,如果实在无法实现,再去写静态的。什么叫静态,比如我们(新手)经常做的,把布局写死,这样要你改布局的话你要怎么做,要么加上需要改动后的布局隐藏,但这样也只能适应两种情况啊,多加一种情况你又要改xml布局。要么写两套布局,那如果多加一种情况你又要多写一套布局。这样就每次改需求你都要去动布局。而像我上面写的demo,你要求展示多少列,我就改个数字就行,而且返回多少列的情况我都能适配。

2.写成动态的虽然比静态的更耗时间,但是代码量比静态的多不了多少,而且功能比静态的强大很多。

3.动态页面依赖于数据,页面会根据数据的改变而改变,还有需要适配,你可以把适配想成一种数据与页面对接的逻辑的封装,就像RecyclerView有适配器一样。

4.动态页面需要真正的涉及到数据结构和算法。页面的展示会根据返回数据的结构而定,展示的逻辑也需要相应的算法去实现。

5.总的一句话,动态的东西肯定比静态的牛X,所以不光是页面,很多地方,如果使用动态的思维去开发模块,一定会比静态的功能强大很多。

关于我写的demo我想放到下篇去讲,现在太晚了,也写不了太多东西。

目录
相关文章
|
6月前
|
Android开发
Android实现页面渐变效果
Android实现页面渐变效果
51 1
|
移动开发 小程序 Android开发
小程序webview组件嵌H5页面,安卓手机没有问题,苹果有部分页面不显示
小程序webview组件嵌H5页面,安卓手机没有问题,苹果有部分页面不显示
184 0
|
Android开发
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
Android 使用ViewPager实现手动左右切换页面和底部点点跟随切换效果
187 0
|
5月前
|
Android开发 容器
35. 【Android教程】视频页面:ViewPager
35. 【Android教程】视频页面:ViewPager
56 3
|
6月前
|
Android开发
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
Android WindowFeature小探究,Android客户端Web页面通用性能优化实践
|
3月前
|
存储 安全 物联网
Android经典实战之跳转到系统设置页面或其他系统应用页面大全
本文首发于公众号“AntDream”,关注获取更多技巧。文章总结了Android开发中跳转至系统设置页面的方法,包括设备信息、Wi-Fi、显示与声音设置等,并涉及应用详情与电池优化页面。通过简单的Intent动作即可实现,需注意权限与版本兼容性。每日进步,尽在“AntDream”。
348 2
|
6月前
|
Android开发
UniApp Android 页面拖动,去掉半圆形阴影
UniApp Android 页面拖动,去掉半圆形阴影
125 0
|
3月前
|
监控 安全 API
Android项目架构设计问题之保证线上用户不会进入到本地配置页面如何解决
Android项目架构设计问题之保证线上用户不会进入到本地配置页面如何解决
28 0
|
3月前
|
Android开发
Android项目架构设计问题之定义一个关闭当前页面的Action如何解决
Android项目架构设计问题之定义一个关闭当前页面的Action如何解决
17 0
|
5月前
|
传感器 Android开发 UED
Android统一设置页面竖屏
【6月更文挑战第4天】
142 8