android下拉刷新android-Ultra-Pull-To-Refresh使用

android下拉刷新android-Ultra-Pull-To-Refresh第三方库功能很强大,基本能满足下拉刷新的要求,如果你需要加在更多,可以看一下cube-sdk第三方库,他们的关系式android-Ultra-Pull-To-Refresh是从cube-sdk中独立出来的。

直接讲怎么用,不废话。

1.下载代码:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 

里面有两个文件夹:ptr-demo和ptr-lib

其中ptr-demo是例子,你可以参考里面的代码,开发者没有给出例子代码讲解,建议开发者可以给几个。

ptr-lib是个库函数,里面有自定义的组件可以直接拿过来用,比如在布局中的 就是在这里:

android下拉刷新android-Ultra-Pull-To-Refresh使用_第1张图片

在你的项目中直接引用,不知道怎么又能用的可以百度一下eclipse怎么引用外部项目库。

2、就是ptr-demo导入eclipse中时有错误,缺少资源库,官网给说了什么maven但我没用过,可以用cube-sdk的core库,就是下载cube-sdk导入eclipse中。导入core库,有两个错误,一个少了逗号直接解决 ,一个就是官网也说了具体看这里:http://www.liaohuqiu.net/cn/posts/compile-ultra-ptr-in-eclipse/

  • getAllocationByteCount()

    需要版本SDK >= 19


android下拉刷新android-Ultra-Pull-To-Refresh使用_第2张图片

就是在eclipse中设置大于19.

这个cube-sdk只是用来跑例子代码的测试的,主要是应用ptr-lib这个库。

3、先跑个代码:建个hello工程:

布局代码:




    

        

    
java代码中:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ptr = (PtrClassicFrameLayout) findViewById(R.id.ptr);
        ptr.setPtrHandler(new PtrHandler() {
            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return true;
            }
            @Override
            public void onRefreshBegin(final PtrFrameLayout frame) {
                frame.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        frame.refreshComplete();
                    }
                }, 2000);
            }
        });
    }


android下拉刷新android-Ultra-Pull-To-Refresh使用_第3张图片

注意到 PtrClassicFrameLayout是经典头部,不用自己添加头部,最常用的。只要添加内容就行了。就是textview.

如果要完成头部多样化,就要用到 PtrFrameLayout( PtrClassicFrameLayout继承前者)添加头部 ptr.setHeaderView(header);

代码如下:



    

        
    


java代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final StoreHouseHeader header = new StoreHouseHeader(this);
        header.setPadding(0,  LocalDisplay.dp2px(15), 0, 0);
        header.initWithString("hello");
        ptr = (PtrFrameLayout) findViewById(R.id.ptr);
        ptr.setHeaderView(header);
        ptr.addPtrUIHandler(header);
        ptr.setPtrHandler(new PtrHandler() {
            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return true;
            }
            @Override
            public void onRefreshBegin(final PtrFrameLayout frame) {
                frame.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        frame.refreshComplete();
                    }
                }, 2000);
            }
        });
    }

效果图:

android下拉刷新android-Ultra-Pull-To-Refresh使用_第4张图片

注意ptr-lib中默认的字体颜色是白色,你可以修改成其他颜色,就是在in.srain.cube.views.ptr.header中修该mtextcolor。

其中你可能需要看一下源代码解析,这边文章很好,http://www.open-open.com/lib/view/open1436405920005.html。

看了这以后就不那么糊涂了。上面代码中会缺少LocalDisplay.dp2px(15),这是core库中的,你可以从core中拷贝一下 LocalDisplay.java 到自己的项目中,这样就不用引入core库了。

你可能感兴趣的:(android)