下拉刷新框架Android-Ultra-Pull-To-Refresh的使用_蓝枫amy的博客-程序员ITS203

技术标签: 下拉刷新  github  刷新  Android下拉刷新  框架  结构  

GitHub地址:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh

首先看下项目结构:

这里写图片描述

在ptr-demo中的build.gradle中

compile 'in.srain.cube:clog:1.0.2'
compile 'in.srain.cube:cube-sdk:1.0.44.38'

在整个项目中app的build.gradle中

compile(project(':ptr-lib'))

在布局文件中使用PtrClassicFrameLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">

     <in.srain.cube.views.ptr.PtrClassicFrameLayout
         xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
         android:id="@+id/fragment_rotate_header_with_text_view_frame"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#fff"
         cube_ptr:ptr_duration_to_close="200"
         cube_ptr:ptr_duration_to_close_header="1000"
         cube_ptr:ptr_keep_header_when_refresh="true"
         cube_ptr:ptr_pull_to_fresh="false"
         cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
         cube_ptr:ptr_resistance="1.7">
          <!-- 放入任何view-->
     </in.srain.cube.views.ptr.PtrClassicFrameLayout>

</RelativeLayout>

在自定义PtrClassicFrameLayout中可以放入任何view

SecondActivity.java

package com.zhoujian.application;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import in.srain.cube.views.ptr.PtrClassicFrameLayout;
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;

/**
 * Created by zhoujian on 2017/1/9.
 */

public class SecondActivity extends Activity 
{
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        final PtrClassicFrameLayout ptrFrame = (PtrClassicFrameLayout) findViewById(R.id.fragment_rotate_header_with_text_view_frame);

        ptrFrame.setLastUpdateTimeRelateObject(this);
        ptrFrame.setPtrHandler(new PtrDefaultHandler() {
            @Override
            public void onRefreshBegin(PtrFrameLayout frame) {
                frame.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        ptrFrame.refreshComplete();
                    }
                }, 1500);
            }

            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return true;
            }
        });
    }
}

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">

     <in.srain.cube.views.ptr.PtrClassicFrameLayout
         xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
         android:id="@+id/fragment_rotate_header_with_text_view_frame"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="#fff"
         cube_ptr:ptr_duration_to_close="200"
         cube_ptr:ptr_duration_to_close_header="1000"
         cube_ptr:ptr_keep_header_when_refresh="true"
         cube_ptr:ptr_pull_to_fresh="false"
         cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
         cube_ptr:ptr_resistance="1.7">
         <TextView
             android:id="@+id/fragment_rotate_header_with_text_view_content"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="#2175ed"
             android:clickable="true"
             android:gravity="center"
             android:text="我是TextView"
             android:textColor="#000000"
             android:textSize="30sp"/>

     </in.srain.cube.views.ptr.PtrClassicFrameLayout>

</RelativeLayout>

运行截图:

这里写图片描述

MainActivity.java

package com.zhoujian.application;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.PtrHandler;
import in.srain.cube.views.ptr.header.MaterialHeader;
import in.srain.cube.views.ptr.util.PtrLocalDisplay;

public class MainActivity extends Activity {
    

    //下拉刷新框架android-Ultra-Pull-To-Refresh

    private boolean mImageHasLoaded = false;
    private long mStartLoadingTime = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button start = (Button)findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                startActivity(new Intent(MainActivity.this,SecondActivity.class));
            }
        });


        final   PtrFrameLayout   mPtrFrameLayout = (PtrFrameLayout)findViewById(R.id.material_style_ptr_frame);

        // header
        final MaterialHeader header = new MaterialHeader(MainActivity.this);
        int[] colors = getResources().getIntArray(R.array.google_colors);
        header.setColorSchemeColors(colors);
        header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
        header.setPadding(0, PtrLocalDisplay.dp2px(15), 0, PtrLocalDisplay.dp2px(10));
        header.setPtrFrameLayout(mPtrFrameLayout);

        mPtrFrameLayout.setLoadingMinTime(1000);
        mPtrFrameLayout.setDurationToCloseHeader(1500);
        mPtrFrameLayout.setHeaderView(header);
        mPtrFrameLayout.addPtrUIHandler(header);
       /*  mPtrFrameLayout.postDelayed(new Runnable() {
            @Override
            public void run() {
                mPtrFrameLayout.autoRefresh(false);
            }
        }, 100);*/

        mPtrFrameLayout.setPtrHandler(new PtrHandler() {
            @Override
            public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
                return true;
            }

            @Override
            public void onRefreshBegin(final PtrFrameLayout frame) {
                if (mImageHasLoaded) {
                    long delay = (long) (1000 + Math.random() * 2000);
                    delay = Math.max(0, delay);
                    delay = 0;
                    frame.postDelayed(new Runnable() {
                        @Override
                        public void run() {

                            frame.refreshComplete();
                        }
                    }, delay);
                } else {
                    mStartLoadingTime = System.currentTimeMillis();
                    mPtrFrameLayout.refreshComplete();
                }
            }
        });
    }
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">

    <in.srain.cube.views.ptr.PtrFrameLayout
        xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/material_style_ptr_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        cube_ptr:ptr_duration_to_close="300"
        cube_ptr:ptr_duration_to_close_header="2000"
        cube_ptr:ptr_keep_header_when_refresh="true"
        cube_ptr:ptr_pull_to_fresh="false"
        cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
        cube_ptr:ptr_resistance="1.7">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#2175ed"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:clickable="true"
                android:text="我是TextView"
                android:textColor="#000000"
                android:textSize="30sp"/>

            <Button
                android:id="@+id/start"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="跳转界面"/>
        </LinearLayout>

    </in.srain.cube.views.ptr.PtrFrameLayout>


</RelativeLayout>

运行截图:

这里写图片描述

源码下载

源码下载:https://github.com/zeke123/MyApplication2

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014005316/article/details/54291076

智能推荐

音视频传输基本知识_-无-怨-无-悔-的博客-程序员ITS203

音视频传输时的基本步骤:1.发起会话(Sip协议)2.编码(硬件编码、软件编码)3.传输(RTP)4.解码(硬件解码、软件解码)5结束会话(Sip协议)视频格式视频格式可以分为适合本地播放的本地影像视频和适合在网络中播放的网络流媒体影像视频两大类。尽管后者在播放的稳定性和播放画面质量上可能没有前者优秀,但网络流媒体影像视频的广泛传播性使之正被广泛应用于视频点播、网络演示

redis官方下载安装(Windows64位)_晓恩ghm的博客-程序员ITS203_redis下载

1.输入官方网址:https://redis.io/2.点击redis标志那一栏的Download下载:https://redis.io/download 可以看到这里有4.0版本,往下可也看到老 版本,比如有:3.2 我们下载4.0.1版本,但是我们注意了,一句话 “The Redis project does not officially support Windows. However

ffmpeg 切片花屏_FFmpeg相机花屏花图问题解决方法_防晒霜白癜风患者的博客-程序员ITS203

FFmpeg相机花图问题解决方法一、问题现象使用FFmpeg进行进行相机rtsp连接获取相机码流并解码在本地显示,这个过程中有遇见相机花图等问题,排查后发现有花图。正常情况下图像为出现花图的情况时图像如下:二、解决方法1、设置相机参数--将影响网络传输和解码依赖性的参数都调低拿海康相机为例:网页登陆相机192.168.1.252 输入默认用户名:admin密码:12345之后,登陆相机,选择“配置...

python内置函数 hex()_ajiong314的博客-程序员ITS203_python hex输入的是10进制数吗

描述hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。语法hex 语法:hex(x)参数说明:x -- 10进制整数返回值返回16进制数,以字符串形式表示。实例以下实例展示了 hex 的使用方法:&amp;gt;&amp;gt;&amp;gt;hex(255)'0xff'&amp;gt;&amp;gt;&amp;gt; hex(-42)'-0x2a'&amp;gt;&amp;gt;&amp;gt; hex(1L)'0x1L'&amp;gt;&amp;gt;&amp;gt; ...

烟台大学计算机专业录取分数线,2017烟台大学录取分数线排行榜_Zq19705的博客-程序员ITS203

烟台大学,简称烟大,位于烟台莱山区,是山东省属重点综合性大学,录取分数线是多少呢?下面学习啦小编为你整理了2017烟台大学录取分数线,希望对你有帮助。2017烟台大学高考录取分数线烟台大学2017录取分数线暂未公布,请继续关注学习啦相关资讯的更新!2016烟台大学录取分数线文科录取分数线大学名称招生地区文理类别录取批次最低分数省控线烟台大学安徽文科本科一批618597烟台大学湖北文科本科二批519...

画布海报头像放进二维码里面_前端开发小吴的博客-程序员ITS203_画布放上二维码和描述

const app = getApp();Page({ /** * 页面的初始数据 */ data: { userInfo: {}, isOverShare: true }, /** * 生命周期函数--监听页面加载 */ onLoad: async function(options) { await this.getUse...

随便推点

赤兔oracle恢复软件 收费,赤兔Oracle恢复软件_他们迂回误会的博客-程序员ITS203

赤兔Oracle恢复软件可以有效地进行Oracle恢复数据,支持ASM,能够直接从ASM磁盘中导出数据,即使相关的磁盘组不能成功mount支持从ASM中直接抽取出数据文件和其他任意存储在ASM中的文件。即使相关的磁盘组不能成功mount支持的Oracle数据库版本包括7,8i,9i,10g,11g支持多种平台的数据库,包括AIX、LINUX、HPUX、SOLARIS、WINDOWS等。能够在一个平...

mysql 8.0 卸载并安装_全栈者也的博客-程序员ITS203_mysql8卸载重装

由于本人的电脑出了一些问题,便进行了 不清除 文件的方式进行重装了系统,首先进行 删除注册码:本人的系统是 win 10计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\MySQLD Service计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentCont...

win7 蓝牙4.0 ble驱动_低功耗蓝牙时代,纽扣电池寿命可达十年_weixin_39713763的博客-程序员ITS203

根据蓝牙技术联盟(Bluetooth SIG)的预测,到2023年,蓝牙设备的年度总出货量将增加到54亿个,年增长率达到26%,那时90%的蓝牙设备都将支持低功耗蓝牙(BLE,Bluetooth Low Energy)。到2024年,低功耗蓝牙单模设备累计出货量将达到75亿。面对低功耗蓝牙蓝海,更低功耗是厂商们追求的标准之一。Silicon Labs作为最早支持蓝牙5.0和5.2标准产品的厂商之一...

java的数列极差_贪心算法-数列极差问题-JAVA_放养的灵魂的博客-程序员ITS203

贪心算法-数列极差问题【题目描述】在黑板上写了N个正整数做成的一个数列,进行如下操作:每一次擦去其中的两个数a和b,然后在数列中加入一个数a×b+1,如此下去直至黑板上剩下一个数,在所有按这种操作方式最后得到的数中,最大的max,最小的为min,则该数列的极差定义为M=max-min。编程任务:对于给定的数列,编程计算出极差M。输入输出样例:输入:42143输出:13【算法分析】当看到此题时..._1671465600

对php的查询返回的pdo对象做排序_qq_41403747的博客-程序员ITS203_php pdo 查询返回数据顺序变来变去

数据查询 public function selectCursorWaitingIncentReceiptRecords() { // SQLを生成する $arr_sql = array(); $arr_sql[] = ' SELECT'; $arr_sql[] = ' receipt_id,'; $arr_sql[] = ' group_id,'; $arr_sql[] = '

Rebex Total Pack R6.9 Crack_john_dwh的博客-程序员ITS203

Rebex Total PackRebex Total Pack includes all Rebex's components in one pack. Components include: FTP, FTP/SSL (FTPS), SFTP, Mail, Secure Mail, Time and TLS. Protocols include: FTP classic, FTPS - FTP over TLS/SSL, SFTP - SSH File Transfer Protocol

推荐文章

热门文章

相关标签