Android-PullToRefresh(一) – 洛易 – 博客园

先讲下这篇写啥东西,也就是这家伙(chrisbanes)写的一个上拉下拉刷新的Demo,连接https://github.com/fengcunhan/Android-PullToRefresh

东西弄下来之后,会看到library和sample 2个文件夹,至于library怎么用,先看看官网的资料http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

注意:如果勾选了library,那么这个项目是不能运行的,会提示:android library projects cannot be launched。所以注意了。

其实library怎么用,很简单,就是你新建个Android项目,在其他项目中复制.classpath和.project文件到library下面,使之成为一个Android项目(只是这个项目是被引用的项目),如果你不怕麻烦也可以新建一个Android项目,把有用的文件对应拷贝到新建的Android项目中。

sample文件夹也一样。在该例子中有4个,PullToRefreshExpandableListActivity,PullToRefreshGridActivity,PullToRefreshListActivity,PullToRefreshWebViewActivity

在应用开发中最常用的当属 PullToRefreshListActivity

接下来贴点代码如何把这个例子搬到自己的项目中:代码来源library中的,

com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor

com.handmark.pulltorefresh.library.internal.LoadingLayout

com.handmark.pulltorefresh.library.PullToRefreshAdapterViewBase<T extends AbsListView>

com.handmark.pulltorefresh.library.PullToRefreshBase<T extends View>

com.handmark.pulltorefresh.library.PullToRefreshListView

这里面的5个类就可以组建你想要的上拉下拉组件,当然还需要一些res文件了

当然也需要改动:

com.handmark.pulltorefresh.library.PullToRefreshBase类中

复制代码
<span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> init(Context context, AttributeSet attrs) {</span>

setOrientation(LinearLayout.VERTICAL);

touchSlop = ViewConfiguration.getTouchSlop();

// Styleables from XML first

//final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PullToRefresh);

//mode = a.getInteger(R.styleable.PullToRefresh_mode, MODE_PULL_DOWN_TO_REFRESH);

//Styleables from XML modify last

mode = 0x3;

 

 

// Refreshable View

// By passing the attrs, we can add ListView/GridView params via XML

refreshableView = this.createRefreshableView(context, attrs);

this.addRefreshableView(context, refreshableView);

// Loading View Strings

String pullLabel = context.getString(R.string.pull_to_refresh_pull_label);

String refreshingLabel = context.getString(R.string.pull_to_refresh_refreshing_label);

String releaseLabel = context.getString(R.string.pull_to_refresh_release_label);

// Add Loading Views

if (mode == MODE_PULL_DOWN_TO_REFRESH || mode == MODE_BOTH) {

headerLayout = new LoadingLayout(context, MODE_PULL_DOWN_TO_REFRESH, releaseLabel, pullLabel,

refreshingLabel);

addView(headerLayout, 0, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,

ViewGroup.LayoutParams.WRAP_CONTENT));

measureView(headerLayout);

headerHeight = headerLayout.getMeasuredHeight();

}

if (mode == MODE_PULL_UP_TO_REFRESH || mode == MODE_BOTH) {

footerLayout = new LoadingLayout(context, MODE_PULL_UP_TO_REFRESH, releaseLabel, pullLabel, refreshingLabel);

addView(footerLayout, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,

ViewGroup.LayoutParams.WRAP_CONTENT));

measureView(footerLayout);

headerHeight = footerLayout.getMeasuredHeight();

}

// Styleables from XML modify first

/*if (a.hasValue(R.styleable.PullToRefresh_headerTextColor)) {

final int color = a.getColor(R.styleable.PullToRefresh_headerTextColor, Color.BLACK);

if (null != headerLayout) {

headerLayout.setTextColor(color);

}

if (null != footerLayout) {

footerLayout.setTextColor(color);

}

}

if (a.hasValue(R.styleable.PullToRefresh_headerBackground)) {

this.setBackgroundResource(a.getResourceId(R.styleable.PullToRefresh_headerBackground, Color.WHITE));

}

if (a.hasValue(R.styleable.PullToRefresh_adapterViewBackground)) {

refreshableView.setBackgroundResource(a.getResourceId(R.styleable.PullToRefresh_adapterViewBackground,

Color.WHITE));

}

a.recycle();*/

//Styleables from XML modify last

if (null != headerLayout) {

headerLayout.setTextColor(Color.BLACK);

}

if (null != footerLayout) {

footerLayout.setTextColor(Color.BLACK);

}

 

// Hide Loading Views

switch (mode) {

case MODE_BOTH:

setPadding(0, -headerHeight, 0, –headerHeight);

break;

case MODE_PULL_UP_TO_REFRESH:

setPadding(0, 0, 0, –headerHeight);

break;

case MODE_PULL_DOWN_TO_REFRESH:

default:

setPadding(0, -headerHeight, 0, 0);

break;

}

// If we’re not using MODE_BOTH, then just set currentMode to current

// mode

if (mode != MODE_BOTH) {

currentMode = mode;

}

}

复制代码

修改前和修改后的代码都有注释

至于这个组件该怎么用还是自己琢磨把///

欢迎拍砖

————————————————————————–

前段时间由于工作太忙,故没有上传demo,特此补上…

Threew_PullToRefresh-master.rar

————————————————————————

最近在网上查了点资料,关于Android Library的参考资料

官网的资料

Android Library

Android 公共库的建立方法

github入门到精通

来源URL:http://www.cnblogs.com/royi123/p/3275637.html