搜档网
当前位置:搜档网 › 利用scroll的局部刷新功能

利用scroll的局部刷新功能

利用scroll的局部刷新功能
利用scroll的局部刷新功能

局部刷新iscroll控件的具体使用(下拉刷新,上拉加载更

多)

(1)引用iscroll的js文件以及css文件,注意一定要引用css文件,否则将会出现不能拖动的问题。

(2)页面配置:

将所要刷新的内容放到

标签下,这是调用iscroll 的必要条件,否则会出现不能刷新或者不能滑动页面的情况。此外还有商量刷新及下拉刷新的标签,在iscroll中有这两个标签的样式,若不想用默认的样式,也可通过覆盖的方式添加其他样式,此处用默认样式。

当页面内容超过当前页面显示区域时,iscroll将会自动出现滚动条,额外的要设置wrapper的css样式为position:absolute,否则将出现不能拖动问题。

下拉刷新...

刷新内容

(3)js相关配置

①创建列表

function createHtml(list){}

var myScroll, pullUpEl,pullDownOffset, pullUpOffset,generatedCount = 0;

var page = 1;

var hasNew=true;

②初始化iScroll控件

Loaded()定义iscroll的刷新动作,上拉加载更多,下拉刷新列表,若没有更多数据将提示“加载完成,没有更多记录”,myScroll = new iScroll(),设置iscroll的基本属性,当手动滑

动iscroll屏幕时,如果当前纵坐标大于5时,证明向下滑动,所以将提示“下拉刷新”,并且滑动完将纵坐标置为0,即回到顶部。当纵坐标大于最大的纵坐标+5时,说明正在向下滑动,将提示“下拉加载更多“;当滑动结束将判断是上拉还是下拉确定是否执行加载下一页数据还是刷新列表回到第一页。

function loaded() {

pullDownEl = document.getElementById('pullDown');

pullDownOffset = pullDownEl.offsetHeight;

pullUpEl = document.getElementById('pullUp');

pullUpOffset = pullUpEl.offsetHeight;

myScroll = new iScroll(

'wrapper',

{

scrollbarClass : 'myScrollbar', //重要样式

useTransition : false,

topOffset : pullDownOffset,

onRefresh : function() {

上拉加载更多...';

},

onScrollMove : function() {

if (this.y > 5

'松手开始更新...';

this.minScrollY = 0;

} else if (this.y < (this.maxScrollY - 5)

'松手开始更新...';

this.maxScrollY = this.maxScrollY;

} else if (this.y > (this.maxScrollY + 5)

'上拉加载更多...';

this.maxScrollY = pullUpOffset;

}

},

onScrollEnd : function() {

});

setTimeout(function() {

document.getElementById('wrapper').style.left = '0';

}, 800);

}

③初始化绑定iScroll控件。

document.addEventListener('touchmove', function(e) {}, false);

document.addEventListener('DOMContentLoaded', loaded, false);

④滚动翻页(自定义实现此方法)myScroll.refresh(),当执行翻页时将加载下一页数据,即ajax请求后台数据,将当前页数加1,传到后台,后台返回数据,前端将数据展示在页面上,当数据加载完成后,调用界面更新方法,页面滚动到相应的滑动位置。

function pullUpAction() {

setTimeout(

function() {

var el, li, i;

page++;

ajax请求

}

myScroll.refresh();

if(!hasNew){

$(".pullUpLabel").html("加载完成,没有更多记录");

}

}, 1000); }

function pullDownAction() {

setTimeout(

function() {

var el, li, i;

page=1;

ajax请求 }

myScroll.refresh();

}, 1000);

}

Android焦点事件分发与传递机制

Android焦点事件分发与传递机制 下面我们就从源码来带大家进行安卓TV焦点事件的传递 这里先给出Android系统View的绘制流程: 依次执行View类里面的如下三个方法: measure(int ,int) :测量View的大小 layout(int ,int ,int ,int) :设置子View的位置 draw(Canvas) :绘制View内容到Canvas画布上 ViewRootImpl的主要作用如下(此处不多讲,如有意图,看源码): A:链接WindowManager和DecorView的纽带,更广一点可以说是Window和View之间的纽带。 B:完成View的绘制过程,包括measure、layout、draw过程。 C:向DecorView分发收到的用户发起的event事件,如按键,触屏等事件。 ViewRootImpl不再多余叙述,进入正题: Android焦点分发的主要方法以及拦截方法的讲解。 在RootViewImpl中的函数通道是各种策略(InputStage)的组合,各策略负责的任务不同,如SyntheticInputStage、ViewPostImeInputStage、NativePostImeInputStage等等,这些策略以链表结构结构起来,当一个策略者没有消费事件时,就传递个下一个策略者。其中触摸和按键事件由ViewPostImeInputStage处理。

@Override protected int onProcess(QueuedInputEvent q) { if (q.mEvent instanceof KeyEvent) { return processKeyEvent(q);//如果是按键事件走此处,处理按键和焦点问题了 } else { final int source = q.mEvent.getSource(); if ((source & InputDevice.SOURCE_CLASS_POINTER) != 0) { return processPointerEvent(q);//如果是触摸事件走此处 } else if ((source & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) { return processTrackballEvent(q); } else { return processGenericMotionEvent(q); } } } processKeyEvent(QueuedInputEvent q)源码如下: @Override protected void onDeliverToNext(QueuedInputEvent q) { if (mUnbufferedInputDispatch && q.mEvent instanceof MotionEvent && ((MotionEvent)q.mEvent).isTouchEvent() && isTerminalInputEvent(q.mEvent)) { mUnbufferedInputDispatch = false; scheduleConsumeBatchedInput(); } super.onDeliverToNext(q); } private int processKeyEvent(QueuedInputEvent q) { final KeyEvent event = (KeyEvent)q.mEvent; // Deliver the key to the view hierarchy. if (mView.dispatchKeyEvent(event)) { return FINISH_HANDLED; } if (shouldDropInputEvent(q)) { return FINISH_NOT_HANDLED; }

window.location.reload();页面实现跳转和刷新

window.location.reload();页面实现跳转和刷新 1 history.go(0) 2 location.reload() 3 location=location 4 location.assign(location) 5 document.execCommand('Refresh') 6 window.navigate(location) 7 location.replace(location) 8 document.URL=location.href 这几个都可以刷新 window.location.reload();刷新

window.location.href=window.location.href;刷新 window.close();关闭窗口,不弹出系统提示,直接关闭 window.close()相当于self属性是当前窗口 window.parent.close()是parent属性是当前窗口或框架的框架组 页面实现跳转的九种方法实例: <html> < head> < meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> < title>navigate</title> < script language="javascript">

setTimeout('window.navigate("top.html");',2000); setTimeout('window.document.location.href="top.html";',20 00); setTimeout('window.document.location="top.html";',2000); setTimeout('window.location.href="top.html";',2000); setTimeout('window.location="top.html";',2000); setTimeout('document.location.href="top.html";',2000); setTimeout('document.location="top.html";',2000); setTimeout('location.href="top.html";',2000); setTimeout('location.replace("top.html")',2000);

浅议Qt的事件处理机制

浅议Qt的事件处理机制 深入了解事件处理系统对于每个学习Qt人来说非常重要,可以说,Qt是以事件驱动的UI工具集。大家熟知Signals/Slots在多线程的实现也依赖于Qt的事件处理机制。 在Qt中,事件被封装成一个个对象,所有的事件均继承自抽象类QEvent. 接下来依次谈谈Qt中有谁来产生、分发、接受和处理事件: 1. 谁来产生事件:最容易想到的是我们的输入设备,比如键盘、鼠标产生的 keyPressEvent,keyReleaseEvent,mousePressEvent,mouseReleaseEvent事件(他们被封装成QMouseEvent和QKeyEvent),这些事件来自于底层的操作系统,它们以异步的形式通知Qt事件处理系统,后文会仔细道来。当然Qt自己也会产生很多事件,比如QObject::startTimer()会触发QTimerEvent. 用户的程序可还以自己定制事件。 2. 谁来接受和处理事件:答案是QObject。在Qt的内省机制剖析一文已经介绍QObject 类是整个Qt对象模型的心脏,事件处理机制是QObject三大职责(内存管理、内省(intropection)与事件处理制)之一。任何一个想要接受并处理事件的对象均须继承自QObject,可以选择重载QObject::event()函数或事件的处理权转给父类。

3. 谁来负责分发事件:对于non-GUI的Qt程序,是由QCoreApplication负责将QEvent分发给QObject的子类-Receiver. 对于Qt GUI程序,由QApplication来负责。 接下来,将通过对代码的解析来看看QT是利用event loop从事件队列中获取用户输入事件,又是如何将事件转义成QEvents,并分发给相应的QObject处理。 [cpp]view plainc opy 1.#include 2.#include "widget.h" 3.//Section 1 4.int main(int argc, char *argv[]) 5.{ 6. QApplication app(argc, argv); 7. Widget window; // Widget 继承自QWidget 8. window.show(); 9.return app.exec(); // 进入Qpplication事件循环,见section 2 10.} 11.// Section 2: 12.int QApplication::exec() 13.{ 14.//skip codes 15.//简单的交给QCoreApplication来处理事件循环=〉section 3 16.return QCoreApplication::exec(); 17.} 18.// Section 3 19.int QCoreApplication::exec() 20.{ 21.//得到当前Thread数据 22. QThreadData *threadData = self->d_func()->threadData; 23.if (threadData != QThreadData::current()) {

jsp实现本页面刷新

jsp+ajax实现无刷新,鼠标离开文本框即验证用户名 jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册)input.jsp(表单提交页面):%@ page contentType=text/html; charset=GBK % html style type=text/css !-- @import url(../aqgc/style_c.css); -- jsp+ajax实现无刷新,鼠标离开文本框即验证用户名(本功能多用于注册) input.jsp(表单提交页面): <%@ page contentType="text/html; charset=GBK" %> Ajax实例

Android 编程下 Touch 事件的分发和消费机制及代码

Android 编程下Touch 事件的分发和消费机制(一) 2013年06月04日09:59供稿中心:课工场 摘要:Android 中与Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、 Android 中与Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);能够响应这些方法的控件包括:ViewGroup、View、Activity。方法与控件的对应关系如下表所示: 从这张表中我们可以看到ViewGroup 和View 对与Touch 事件相关的三个方法均能响应,而Activity 对onInterceptTouchEvent(MotionEvent ev) 也就是事件拦截不进行响应。另外需要注意的是View 对dispatchTouchEvent(MotionEvent ev) 和onInterceptTouchEvent(MotionEvent ev) 的响应的前提是可以向该View 中添加子View,如果当前的View 已经是一个最小的单元View(比如TextView),那么就无法向这个最小View 中添加子View,也就无法向子View 进行事件的分发和拦截,所以它没有dispatchTouchEvent(MotionEvent ev) 和 onInterceptTouchEvent(MotionEvent ev),只有onTouchEvent(MotionEvent ev)。 一、Touch 事件分析

好程序员 2015最新Android应用开发基础教程

好程序员2015Android最新开发应用基础教程 适用人群:适用于零基础入学者 课程简介:本套课程结合最新Android新特性,结合最新技术特点所录制,此次课程我们主要讲解,Android基本UI及事件机制,Android四大组件的应用,Android中多线程的使用和Handler原理,Android中Fragment和ViewPager的使等,Android开发中常用知识点和功能讲解。 你会学到哪些? 掌握Android基本UI及事件机制 掌握Android四大组件的应用 掌握Android中多线程的使用和Handler原理 掌握Android中Fragment和ViewPager的使用 掌握菜单、通知、对话框的使用 掌握ListView、BaseAdapter的使用 掌握项目中通用的UI控件(滚动控件、网页控件、视频控件等) 掌握自定义控件和事件分发机制掌握实际项目开发流程和必备常识 1.Activity组件与Intent意图 1.1_activity_01 1.2_activity_02 1.3_activity_03 1.4_activity_04_task 1.5_activity_05

1.6_intent 2.网络操作与数据解析 1.7_AsyncTask01 3.UI(二) 1.8_Spinner_SimpleAdatper1 1.9_AutoCompleteTextView_ListView01 2.0_ListView02 2.1_BaseAdapter01 2.2_ListView04_News 2.3_ListView04_OnScrollListener 2.4_ListView05_ConvertView 2.5_ListView06_Person 2.6_ListView07_Item分类 2.7_ListView08_重构BaseAdapter 2.8_GridView 4.菜单、对话框、通知和Toast 2.9_Menu 3.0_Dialog01 3.1_Dialog02-03

C#刷新页面的六种方法

第一: private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Request.Url.ToString( ) ); } 第二: private void Button2_Click( object sender, System.EventArgs e ) { Response.Write( " " ); } 第三: private void Button3_Click( object sender, System.EventArgs e ) { Response.AddHeader( "Refresh","0" ); } 第四: private void Button6_Click( object sender, System.EventArgs e ) { //Response.Write( " " ); } 第五:(需替换<>)