UltraPullToRefresh Demo

package com.lib.andlib_libtemp.example.dir.exam2;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.lib.andlib_libtemp.R;
import com.lib.andlib_libtemp.utils.BaseActivity;
import com.lib.andlib_libtemp.utils.LogUtil;

import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;
import in.srain.cube.views.ptr.PtrHandler;
import in.srain.cube.views.ptr.header.StoreHouseHeader;
import in.srain.cube.views.ptr.util.PtrLocalDisplay;

/**
* PtrFrameLayout演示程序1
* 6个参数可配置:
* 阻尼系数:默认1.7f,越大,感觉下拉时越吃力。
* 触发刷新时移动的位置比例:默认,1.2f,移动达到头部高度1.2倍时可触发刷新操作。
* 回弹延时:默认 200ms,回弹到刷新高度所用时间
* 头部回弹时间:默认1000ms
* 刷新是保持头部:默认值 true.
* 下拉刷新 / 释放刷新,默认为释放刷新
* 问题bug解决:
* ViewPager滑动冲突: disableWhenHorizontalMove()
* 长按LongPressed, setInterceptEventWhileWorking()
* 参考文档:
* https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh/blob/master/README-cn.md
* http://a.codekk.com/detail/Android/Grumoon/android-Ultra-Pull-To-Refresh%20%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90
*
*/
public class ModxExam2Activity extends BaseActivity {
private PtrFrameLayout ptrFrameLayout;
private TextView textView1;
private ImageView imageView1;

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

initViews();
initEvents();
initDatas();
}

@Override
public void initViews() {
LogUtil.infoD(this, "initViews");
textView1 = (TextView) findViewById(R.id.textView1);
imageView1 = (ImageView) findViewById(R.id.imageView1);

ptrFrameLayout = (PtrFrameLayout) findViewById(R.id.store_house_ptr_frame);
// 刷新时,保持内容不动,仅头部下移
ptrFrameLayout.setPinContent(true);

// PtrFrameLayout代码配置属性方式
// // the following are default settings
// mPtrFrame.setResistance(1.7f);
// mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);
// mPtrFrame.setDurationToClose(200);
// mPtrFrame.setDurationToCloseHeader(1000);
// // default is false
// mPtrFrame.setPullToRefresh(false);
// // default is true
// mPtrFrame.setKeepHeaderWhenRefresh(true);

/**
* 下拉刷新头部-文字进度效果
*/
final StoreHouseHeader header1 = new StoreHouseHeader(this);
// //设置布局参数,-1指匹配父窗体,-2指包裹内容
header1.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
// //设置内边距...PtrLocalDisplay框架自带
header1.setPadding(0, PtrLocalDisplay.dp2px(15), 0, 0);

// 头部使用的字符串,这里的字符串只能是 [A-Z 0-9 - .]
header1.initWithString("1289-AZaz0");
//header.initWithStringArray(R.array.storehouse);
header1.setTextColor(Color.GREEN);
header1.setBackgroundColor(Color.GRAY);
//给下拉刷新设置下拉头部 StoreHouseHeader布局
ptrFrameLayout.setHeaderView(header1);
// //添加一个UI时间处理回调函数。为MaterialHeader的内部实现回调。
ptrFrameLayout.addPtrUIHandler(header1);
}

String urlStr = "http://img3.3lian.com/2013/c4/58/d/5.jpg";
@Override
public void initEvents() {
LogUtil.infoD(this, "initEvents");

LogUtil.infoD(this, "initEvents");
/**
* 下拉刷新的事件监听回调方法
*/
/* ptrFrameLayout.setPtrHandler(new PtrDefaultHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
LogUtil.infoD(this, "PtrFrameLayout "+"onRefreshBegin-开始刷新");
new AsyncTask<String[],Void,Bitmap>(){
@Override
protected Bitmap doInBackground(String[]... params) {
Bitmap bitmap = null;
try {
URL url = new URL(urlStr);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return bitmap;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
imageView1.setImageBitmap(bitmap);
ptrFrameLayout.refreshComplete();
}
}.execute();
}
});*/

ptrFrameLayout.setPtrHandler(new PtrHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
frame.postDelayed(new Runnable() {
@Override
public void run() {
ptrFrameLayout.refreshComplete();
}
}, 1800);
}

@Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
// 默认实现,根据实际情况做改动
return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
}
});
}

@Override
public void initDatas() {
LogUtil.infoD(this, "initDatas");
}
}

/*----------------------------------------
*-描述--Socket&&ServerSocket例题总结.
*-描述--S1.;
*-描述--S2.;
*-描述--None.
*-描述--B1.None.
*---------------------------------------------------------------------------*/
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.lib.andlib_libtemp.example.dir.exam2.ModxExam2Activity">
<in.srain.cube.views.ptr.PtrFrameLayout
android:id="@+id/store_house_ptr_frame"
xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
cube_ptr:ptr_resistance="1.7"
cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
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" >

<LinearLayout
android:orientation="vertical"
android:id="@+id/store_house_ptr_image_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#CCCCCC"
android:clickable="true"
android:padding="10dp">
<TextView
android:id="@+id/textView1"
android:text="PtrFrameLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:scaleType="centerCrop"
android:id="@+id/imageView1"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_text_view1"
android:text="UltraPullToRefresh"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/tv_text_view2"
android:text="UltraPullToRefresh"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/tv_text_view3"
android:text="UltraPullToRefresh"
android:layout_width="match_parent"
android:layout_height="300dp" />
</LinearLayout>

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




package com.lib.andlib_libtemp.example.dir.exam1;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import com.lib.andlib_libtemp.R;
import com.lib.andlib_libtemp.utils.BaseActivity;
import com.lib.andlib_libtemp.utils.LogUtil;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import in.srain.cube.views.ptr.PtrClassicFrameLayout;
import in.srain.cube.views.ptr.PtrDefaultHandler;
import in.srain.cube.views.ptr.PtrFrameLayout;

/**
* PtrClassicFrameLayout演示程序1
* @
* @
*/
public class ModxExam1Activity extends BaseActivity {
private PtrClassicFrameLayout frameLayout1;
private TextView textView1;
private ImageView imageView1;

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

initViews();
initEvents();
initDatas();
}

/**
* PtrClassicFrameLayout 头部的几种效果
* PtrClassicDefaultHeader 默认效果,类似PullToRefresh
* MaterialHeader 转圈效果类似SwipeRefreshLayout
* StoreHouseHeader 文字滚动碎片效果
* 或者自定义
*/
@Override
public void initViews() {
LogUtil.infoD(this, "initViews");
frameLayout1 = (PtrClassicFrameLayout) findViewById(R.id.frameLayout1);
textView1 = (TextView) findViewById(R.id.textView1);
imageView1 = (ImageView) findViewById(R.id.imageView1);

/**
* 不设置头部,使用默认效果
*/
//mPtrClassicHeader = new PtrClassicDefaultHeader(getContext());

/**
* 下拉刷新-转圈效果
*/
// 创建一个MaterialHeader 的视图(该框架自带)
/* final MaterialHeader header = new MaterialHeader(this);

//可以设置一组 颜色数组,改变进度显示的颜色变化
header.setColorSchemeColors(new int[]{Color.RED, Color.BLUE, Color.GRAY, Color.GREEN});
//设置布局参数,-1指匹配父窗体,-2指包裹内容
header.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
//设置内边距...PtrLocalDisplay框架自带
header.setPadding(0, PtrLocalDisplay.dp2px(15), 0, PtrLocalDisplay.dp2px(10));
//告诉创建一个MaterialHeader 布局绑定在那个下拉刷新控件上
header.setPtrFrameLayout(frameLayout1);

//给下拉刷新设置下拉头部 MaterialHeader布局
frameLayout1.setHeaderView(header);
//添加一个UI时间处理回调函数。为MaterialHeader的内部实现回调。
frameLayout1.addPtrUIHandler(header);*/


/**
* 下拉刷新-文字进度效果
*/
/* final StoreHouseHeader header1 = new StoreHouseHeader(this);
// //设置布局参数,-1指匹配父窗体,-2指包裹内容
header1.setLayoutParams(new PtrFrameLayout.LayoutParams(-1, -2));
// //设置内边距...PtrLocalDisplay框架自带
header1.setPadding(0, PtrLocalDisplay.dp2px(15), 0, 0);

// 头部使用的字符串。这里的字符串只能是 [A-Z 0-9 - .]
header1.initWithString("1000cf");
header1.setTextColor(Color.GREEN);
header1.setBackgroundColor(Color.GRAY);
//给下拉刷新设置下拉头部 StoreHouseHeader布局
frameLayout1.setHeaderView(header1);
// //添加一个UI时间处理回调函数。为MaterialHeader的内部实现回调。
frameLayout1.addPtrUIHandler(header1);*/
}

String urlStr = "http://img3.3lian.com/2013/c4/58/d/5.jpg";
@Override
public void initEvents() {
LogUtil.infoD(this, "initEvents");
/**
* 下拉刷新的事件监听回调方法
*/
frameLayout1.setPtrHandler(new PtrDefaultHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
LogUtil.infoD(this, "PtrFrameLayout "+"onRefreshBegin-开始刷新");
new AsyncTask<String[],Void,Bitmap>(){
@Override
protected Bitmap doInBackground(String[]... params) {
Bitmap bitmap = null;
try {
URL url = new URL(urlStr);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
bitmap = BitmapFactory.decodeStream(inputStream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return bitmap;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
imageView1.setImageBitmap(bitmap);
frameLayout1.refreshComplete();
}
}.execute();
}
});
}

@Override
public void initDatas() {
LogUtil.infoD(this, "initDatas");
}
}

/*----------------------------------------
*-描述--Socket&&ServerSocket例题总结.
*-描述--S1.;
*-描述--S2.;
*-描述--None.
*-描述--B1.None.
*---------------------------------------------------------------------------*/

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".example.dir.exam1.ModxExam1Activity">
<in.srain.cube.views.ptr.PtrClassicFrameLayout
android:id="@+id/frameLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
app:ptr_duration_to_close="200"
app:ptr_duration_to_close_header="1000"
app:ptr_keep_header_when_refresh="true"
app:ptr_pull_to_fresh="false"
app:ptr_ratio_of_header_height_to_refresh="1.2"
app:ptr_resistance="1.7"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:text="fjkldsjflkjdfl"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:scaleType="centerCrop"
android:id="@+id/imageView1"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</in.srain.cube.views.ptr.PtrClassicFrameLayout>

</RelativeLayout>



posted @ 2016-08-01 02:15  zhen-Android  阅读(404)  评论(0编辑  收藏  举报