企业互联网服务.docx
《企业互联网服务.docx》由会员分享,可在线阅读,更多相关《企业互联网服务.docx(75页珍藏版)》请在冰豆网上搜索。
![企业互联网服务.docx](https://file1.bdocx.com/fileroot1/2022-11/16/efcd7c47-bd5d-4fc9-a4b8-50f167b85eb0/efcd7c47-bd5d-4fc9-a4b8-50f167b85eb01.gif)
企业互联网服务
importandroid.content.Context;
importandroid.util.AttributeSet;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.ViewTreeObserver.OnGlobalLayoutListener;
importandroid.view.animation.DecelerateInterpolator;
importandroid.widget.AbsListView;
importandroid.widget.AbsListView.OnScrollListener;
importandroid.widget.ListAdapter;
importandroid.widget.ListView;
importandroid.widget.RelativeLayout;
importandroid.widget.Scroller;
importandroid.widget.TextView;
importcom.insthub.ecmobile.R;
importandroid.os.Message;
importandroid.os.Handler;
publicclassXListViewextendsListViewimplementsOnScrollListener{
privatefloatmLastY=-1;//saveeventy
privateScrollermScroller;//usedforscrollback
privateOnScrollListenermScrollListener;//user'sscrolllistener
//theinterfacetotriggerrefreshandloadmore.
privateIXListViewListenermListViewListener;
//--headerview
privateXListViewHeadermHeaderView;
//headerviewcontent,useittocalculatetheHeader'sheight.Andhideit
//whendisablepullrefresh.
privateRelativeLayoutmHeaderViewContent;
privateTextViewmHeaderTimeView;
privateintmHeaderViewHeight;//headerview'sheight
privatebooleanmEnablePullRefresh=true;
privatebooleanmPullRefreshing=false;//isrefreashing.
//--footerview
privateXListViewFootermFooterView;
privatebooleanmEnablePullLoad;
privatebooleanmPullLoading;
privatebooleanmIsFooterReady=false;
//totallistitems,usedtodetectisatthebottomoflistview.
privateintmTotalItemCount;
//formScroller,scrollbackfromheaderorfooter.
privateintmScrollBack;
privatefinalstaticintSCROLLBACK_HEADER=0;
privatefinalstaticintSCROLLBACK_FOOTER=1;
privatefinalstaticintSCROLL_DURATION=400;//scrollbackduration
privatefinalstaticintPULL_LOAD_MORE_DELTA=50;//whenpullup>=50px
//atbottom,trigger
//loadmore.
privatefinalstaticfloatOFFSET_RADIO=1.8f;//supportiOSlikepull
//feature.
privateintid;
/**
*@paramcontext
*/
publicXListView(Contextcontext){
super(context);
initWithContext(context);
}
publicXListView(Contextcontext,AttributeSetattrs){
super(context,attrs);
initWithContext(context);
}
publicXListView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
initWithContext(context);
}
privatevoidinitWithContext(Contextcontext){
mScroller=newScroller(context,newDecelerateInterpolator());
//XListViewneedthescrollevent,anditwilldispatchtheeventto
//user'slistener(asaproxy).
super.setOnScrollListener(this);
//initheaderview
mHeaderView=newXListViewHeader(context);
mHeaderViewContent=(RelativeLayout)mHeaderView
.findViewById(R.id.xlistview_header_content);
mHeaderTimeView=(TextView)mHeaderView
.findViewById(R.id.xlistview_header_time);
addHeaderView(mHeaderView);
//initfooterview
mFooterView=newXListViewFooter(context);
//initheaderheight
mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
mHeaderViewHeight=mHeaderViewContent.getHeight();
getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
}
});
}
@Override
publicvoidsetAdapter(ListAdapteradapter){
//makesureXListViewFooteristhelastfooterview,andonlyaddonce.
if(mIsFooterReady==false){
mIsFooterReady=true;
addFooterView(mFooterView);
}
super.setAdapter(adapter);
}
/**
*enableordisablepulldownrefreshfeature.
*
*@paramenable
*/
publicvoidsetPullRefreshEnable(booleanenable){
mEnablePullRefresh=enable;
if(!
mEnablePullRefresh){//disable,hidethecontent
mHeaderViewContent.setVisibility(View.INVISIBLE);
}else{
mHeaderViewContent.setVisibility(View.VISIBLE);
}
}
/**
*enableordisablepulluploadmorefeature.
*
*@paramenable
*/
publicvoidsetPullLoadEnable(booleanenable){
mEnablePullLoad=enable;
if(!
mEnablePullLoad){
mFooterView.hide();
mFooterView.setOnClickListener(null);
}else{
mPullLoading=false;
mFooterView.show();
mFooterView.setState(XListViewFooter.STATE_NORMAL);
//both"pullup"and"click"willinvokeloadmore.
mFooterView.setOnClickListener(newOnClickListener(){
@Override
publicvoidonClick(Viewv){
startLoadMore();
}
});
}
}
/**
*stoprefresh,resetheaderview.
*/
publicvoidstopRefresh(){
if(mPullRefreshing==true){
mPullRefreshing=false;
resetHeaderHeight();
}
}
/**
*stoploadmore,resetfooterview.
*/
publicvoidstopLoadMore(){
if(mPullLoading==true){
mPullLoading=false;
mFooterView.setState(XListViewFooter.STATE_NORMAL);
}
mFooterView.setEnabled(true);
}
/**
*setlastrefreshtime
*
*@param