air mobile andriod ios 分页加载控件

近来研究用flex 写android 、ios应用,遇到了一个分页加载的问题,我们用的是flex sdk 12,air 15 没有找到类似android ListView分页组件,所以就和同事自己写了个,效果还是可以的,向上拖动刷新,向下拖动加载。如果有感兴趣的朋友可以拿走,如果你有更好的通知我一声,代码就直接帖出来吧。

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
			   xmlns:s="library://ns.adobe.com/flex/spark"
			   applicationComplete="init()">

	<fx:Declarations>
		<s:ArrayCollection id="_ac"/>
		<s:Fade id="_fadeIn" alphaFrom="0" alphaTo="1" duration="500"/>
	</fx:Declarations>

	<fx:Script>
		<![CDATA[
			import mx.events.PropertyChangeEvent;

			private static const PADDING:uint = 15;

			private function init():void {
				updateList();
				_list.dataGroup.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, handleScroll);
			}

			private function handleScroll(event:PropertyChangeEvent):void {
				if (_busy.visible || _busy_x.visible ||
					event.source != event.target ||
					event.property != 'verticalScrollPosition') {
					return;
				}
				//下拉 加载
				if (event.newValue < -3 * PADDING &&
					event.oldValue >= -3 * PADDING) {
					_hintDown.visible = true;
					_hintUp.visible = false;
					_fadeIn.play([_hintDown]);
				} else if (event.newValue < -6 * PADDING &&
					event.oldValue >= -6 * PADDING) {
					_hintDown.visible = false;
					_hintUp.visible = true;
					_fadeIn.play([_hintUp]);
				} else if (event.newValue >= -6 * PADDING &&
					event.oldValue < -6 * PADDING) {
					_hintDown.visible = true;
					_hintUp.visible = false;
					_fadeIn.play([_hintDown]);
				} else if (event.newValue >= -3 * PADDING &&
					event.oldValue < -3 * PADDING) {
					_hintDown.visible = false;
					_hintUp.visible = false;
				}

				//上拉刷新 加载
				if (event.newValue < 3 * PADDING &&
					event.oldValue >= 3 * PADDING) {
					_hintDown_up.visible = false;
					_hintUp_up.visible = false;
				}
				else if (event.newValue < 6 * PADDING &&
					event.oldValue >= 6 * PADDING) {
					_hintDown_up.visible = false;
					_hintUp_up.visible = false;
				}
				else if (event.newValue >= 6 * PADDING &&
					event.oldValue < 6 * PADDING) {
					_hintDown_up.visible = false;
					_hintUp_up.visible = true;
					_fadeIn.play([_hintUp_up]);
				}
				else if (event.newValue >= 3 * PADDING &&
					event.oldValue < 3 * PADDING) {
					_hintDown_up.visible = true;
					_hintUp_up.visible = false;
					_fadeIn.play([_hintDown_up]);
				}
			}

			private function startLoading(event:MouseEvent):void {

				//下拉 加载方法
				if (_hintUp.visible) {
					_busy.includeInLayout = _busy.visible = true;
					if(_hintDown.visible)
						_busy_x.includeInLayout = _busy_x.visible = true;
					setTimeout(updateList, 1000);
				}
				_hintDown.visible = false;
				_hintUp.visible = false;

				//上拉 加载方法
				if (_hintUp_up.visible) {
					_busy_x.includeInLayout = _busy_x.visible = true;
					if(_hintDown_up.visible)
						_busy_x.includeInLayout = _busy_x.visible = true;
					setTimeout(updateList, 1000);
				}
				_hintDown_up.visible = false;
				_hintUp_up.visible = false;
			}

			private function updateList():void {
				_ac.source = new Array();
				for (var i:int = 0; i < 10; i++) {
					_ac.source.push(Math.random());
				}
				_ac.refresh();
				_busy.includeInLayout = _busy.visible = false;
				_busy_x.includeInLayout = _busy_x.visible = false;
			}

		]]>
	</fx:Script>

	<s:VGroup width="100%" >
		<s:HGroup id="_busy" visible="false" width="100%" horizontalAlign="center"
				  includeInLayout="false" verticalAlign="middle">
			<s:BusyIndicator height="30"/>
			<s:Label text="加载数据..." fontSize="20"/>
		</s:HGroup>

		<s:List id="_list" width="100%" contentBackgroundColor="#FFFFFF" dataProvider="{_ac}"
				mouseUp="startLoading(event)"/>
		<s:HGroup id="_busy_x" visible="false" width="100%" horizontalAlign="center"
				  includeInLayout="false" verticalAlign="middle">
			<s:BusyIndicator height="30"/>
			<s:Label text="加载数据..." fontSize="20"/>
		</s:HGroup>
	</s:VGroup>

	<s:Label id="_hintDown" visible="false" width="100%" paddingTop="{PADDING}" text="↓ 下拉刷新 ↓" fontSize="20"
			 textAlign="center"/>

	<s:Label id="_hintUp" visible="false" width="100%" paddingTop="{PADDING}" text="↑ 松手刷新 ↑" fontSize="20"
			 textAlign="center"/>

	<s:Label id="_hintDown_up" visible="false" bottom="0" width="100%" text="↑ 上拉刷新 ↑" fontSize="20"
			 textAlign="center"/>

	<s:Label id="_hintUp_up" visible="false" bottom="0" width="100%" text="↓ 松手刷新 ↓" fontSize="20"
			 textAlign="center"/>

</s:Application>
时间: 2024-08-04 01:36:24

air mobile andriod ios 分页加载控件的相关文章

air mobile andriod ios 页面加载控件

通过最近的研究flex 书写android .ios申请书,我们遇到了一个问题加载页面,我们用flex sdk 12,air 15 无级似android ListView寻呼模块.所以,我和我的同事们写了一,效果依然能够,拖动刷新,向下拖动负载.走,假设你有更好的通知我一声,代码就直接帖出来吧. <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://n

自个儿写Android的下拉刷新/上拉加载控件 (续)

本文算是对之前的一篇博文<自个儿写Android的下拉刷新/上拉加载控件>的续章,如果有兴趣了解更多的朋友可以先看一看之前的这篇博客. 事实上之所以会有之前的那篇博文的出现,是起因于前段时间自己在写一个练手的App时很快就遇到这种需求.其实我们可以发现类似这样下拉刷新.上拉加载的功能正在变得越来越普遍,可以说如今基本上绝大多数的应用里面都会使用到.当然,随着Android的发展,已经有不少现成的可以实现这种需求的"轮子"供我们使用了. 但转过头想一下想,既然本来就是自己练手

解决tableView中cell动态加载控件的重用问题

tableView的cell,有时候需要在运行时取得对应的数据后才能够动态的创建该cell中的控件并加载到该cell中,此时,你一定会遇到重用问题,即使你能做到该cell只根据数值加载了一回控件,你也没法保证不出现重用问题:) 效果(请注意查看,移动下面的格子时,上面出现了重用的问题) 源码: YXCell.h // // YXCell.h // YXTableView // // Copyright (c) 2014年 Y.X. All rights reserved. // #import

下拉刷新上拉加载控件+Material Design使用

下拉刷新上拉加载控件+Material Design使用 人所缺乏的不是才干而是志向,不是成功的能力而是勤劳的意志. -- 部尔卫 Material Design控件使用 前几天分享了两篇Material Design控件使用的文章,这里就不多做叙述,下面是传送门,想要学习的小伙伴可以去看下: https://juejin.im/entry/58d8d4d344d90400687c134d/detail#comment https://juejin.im/entry/58d9cdf044d904

通用版的上拉刷新下拉加载控件

通用版的上拉刷新下拉加载控件 适用于各种控件实现上拉刷新,下拉加载的功能. 下载地址:http://www.devstore.cn/code/info/964.html 运行截图:    

[iOS微博项目 - 1.8] - 各种尺寸图片加载 &amp; 控件不显示研究

A. 图片的加载: [UIImage imageNamed:@"home"];  加载png图片    一.非retina屏幕  1.3.5 inch(320 x 480)  * home.png    二.retina屏幕  1.3.5 inch(640 x 960)  * [email protected]    2.4.0 inch(640 x 1136)  * [email protected](如果home是程序的启动图片,才支持自动加载)    三.举例(以下情况都是系统自

自个儿写Android的下拉刷新/上拉加载控件

前段时间自己写了一个能够"通用"的,支持下拉刷新和上拉加载的自定义控件.可能现如今这已经不新鲜了,但有兴趣的朋友还是可以一起来看看的. 与通常的View配合使用(比如ImageView) 与ListView配合使用 与RecyclerView配合使用 与SrcollView配合使用 局部刷新(但想必这种需要实际应该还是不多的-.) 好啦,效果大概就是这样.如果您看后觉得有一点兴趣.那么,以下是相关的信息: GitHub地址: https://github.com/RawnHwang/S

翻翻git之---基于universalimageloader实现的图片加载控件BlurImageView

转载请注明出处:王亟亟的大牛之路 昨天做了个梦,梦醒后觉得还是要更努力的学习,所以不多说废话,直接上货. BlurImageView 效果图: 流程: 实现原理,加载2张图片一张为很小的缩略图,一张为原图,缩略图加载完后做放大模糊处理,然后展开进度条加载原图,原图加载成功后替换缩略图. How to use? Grade: dependencies { compile 'com.wingjay:blurimageviewlib:1.1.0' } Eclipse: lib目录下面的3各类Copy进

上拉刷新下拉加载控件-PullToRefresh

在很多软件中,我们会用到上拉刷新,同时大多也会有下拉加载的功能,PullToRefresh这个控件就可以帮我们实现这个效果. 要使用这个空间首先我们要导包 布局文件 布局文件中就是添加了一个最简单的PullToRefreshListView <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r