清泛IT社区

标题: 【转】AppInventor2 在同一屏幕内制作页面滑动切换效果 [打印本页]

作者: App Inventor 2     时间: 2024-05-12 11:35
标题: 【转】AppInventor2 在同一屏幕内制作页面滑动切换效果
不知有没有人注意到微信的页面切换方式,微信底部有四个Tab标签,分别是消息、联系人、发现和我。很多人都习惯于直接点击图标进行切换,其实还可以左右滑动进行切换的。如图:
(, 下载次数: 5848)
规则一般如下:如果滑动距离超过屏幕的一半,则切换屏幕,否则回到原屏幕。
我们今天就参照微信的界面制作的一个应用
组件如下:
(, 下载次数: 5804)
设计如下:
(, 下载次数: 5870)
第一列的列表显示框中联系人1到联系人20用于模拟微信内的联系人,可以垂直滚动。
剩下三列为了能够更好地看到切换效果而设置成不同的背景颜色。
最下面是一个水平布局,用于模拟微信中的底部菜单。
既然要模拟屏幕切换的效果,那就要将四列的宽度全部设置为屏幕的宽度,这个设置无法在设计视图中进行设置,所以我们在编程视图中的屏幕初始化时进行设置。
(, 下载次数: 5852)
注意不能设置为“充满”。
我们需要一个不可见的扩展插件,就是滚动布局手势识别扩展插件。
(, 下载次数: 5806)
其属性设置如下:
(, 下载次数: 6008)
同时在屏幕初始化的时候也声明其对应的组件名称
(, 下载次数: 5905)
然后,所有组件布置好以后,我们来研究以下距离的关系
(, 下载次数: 5872)
左侧红色方框表示可见区域,黑色方框表示整个水平滚动条布局的总长度。图中上方表示的是每一个垂直(滚动条)布局的边界的位置,即控制水平滚动条布局ScrollTo的值。下面表示的是每个布局中部的距离,即滑动距离在凡两条蓝色虚线之间的位置者,就滑动至靠右的布局当中。搞清楚了数值关系以后就可以开工了。
根据上面的数据关系可以得出
(, 下载次数: 5935)
再把过程加上去
(, 下载次数: 5773)
然后进行编译并测试。发现无法滑动,总是出现跳动的情况,其实在滑动过程中每时每刻都会触发scrollChanged事件,所以如果用户还没有滑动到位,就触发该事件,并进行判断,进而进行处理,那么用户永远也无法切换页面。
首先,我们要将局部变量scrollX变成全局变量Global scrollX。使用当水平滚动条布局被松开事件,当水平滚动条布局被松开的时候,再行判断,这样就能保证用户已经滑动到位了再进行判断了。
(, 下载次数: 5857)
(, 下载次数: 5899)
再次进行测试。发现根本没有切换页面的效果。其实我们只需要一个计时器就可以了,在滚动条布局被松开的时候开始计时,100毫秒以后再行判断,大功告成了。
另外,标签菜单的按钮被点击时也可以进行切换哦。
完整代码如下:
(, 下载次数: 5955)
(, 下载次数: 5945)
软件运行效果如下:
(, 下载次数: 5836)
(, 下载次数: 5902)
(, 下载次数: 5758)


拓展下载:https://bbs.tsingfun.com/thread-1632-1-1.html
原文来源:https://mp.weixin.qq.com/s/1k6PFZT7HANyUEG3q1PnLQ





欢迎光临 清泛IT社区 (https://bbs.tsingfun.com/) Powered by Discuz! X3.3