SwipeRefreshLayout在v4包下,对应的v4 Demo中也有相应的例子。如果没有请下载最新support-v4
SwipeRefreshLayout 只能有一个直接子View,可能是一个ListView或一个Layout或其他需要刷新的组件。
setOnRefreshListener 用于监听刷新的动作。SwipeRefreshLayout 下拉,就会有刷新的效果出来,触发该监听。
如果需要一个刷新的动画,setRefreshing(true), 停: setRefreshing(false)
如果要禁用刷新动画和手势响应,ssetEnable(false), 恢复setEnable(true)
Demo如下:
-
public class SwipeRefreshLayoutActivity extends Activity implements OnRefreshListener {
-
public static final String[] TITLES =
-
{
-
"Henry IV (1)",
-
"Henry V",
-
"Henry VIII",
-
"Richard II",
-
"Richard III",
-
"Merchant of Venice",
-
"Othello",
-
"King Lear",
-
"Henry IV (1)",
-
"Henry V",
-
"Henry VIII",
-
"Richard II",
-
"Richard III",
-
"Merchant of Venice",
-
"Othello",
-
"King Lear",
-
"Henry IV (1)",
-
"Henry V",
-
"Henry VIII",
-
"Richard II",
-
"Richard III",
-
"Merchant of Venice",
-
"Othello",
-
"King Lear",
-
"Henry IV (1)",
-
"Henry V",
-
"Henry VIII",
-
"Richard II",
-
"Richard III",
-
"Merchant of Venice",
-
"Othello",
-
"King Lear"
-
};
-
-
-
private static final boolean SUPER_QUICK_REFRESH = false;
-
private View mContent;
-
private SwipeRefreshLayout mSwipeRefreshWidget;
-
private ListView mList;
-
private Handler mHandler = new Handler();
-
private final Runnable mRefreshDone = new Runnable() {
-
-
@Override
-
public void run() {
-
mSwipeRefreshWidget.setRefreshing(false);
-
}
-
-
};
-
@Override
-
public void onCreate(Bundle bundle) {
-
super.onCreate(bundle);
-
setContentView(R.layout.swipe_refresh_widget_sample);
-
mSwipeRefreshWidget = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_widget);
-
mSwipeRefreshWidget.setColorScheme(R.color.color1, R.color.color2, R.color.color3,
-
R.color.color4);
-
mList = (ListView) findViewById(R.id.content);
-
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,
-
android.R.layout.simple_list_item_1, android.R.id.text1, TITLES);
-
mList.setAdapter(arrayAdapter);
-
mSwipeRefreshWidget.setOnRefreshListener(this);
-
mSwipeRefreshWidget.setProgressViewEndTarget(false, 8);
-
}
-
-
@Override
-
public void onRefresh() {
-
refresh();
-
}
-
-
-
@Override
-
public boolean onCreateOptionsMenu(Menu menu) {
-
MenuInflater inflater = getMenuInflater();
-
inflater.inflate(R.menu.swipe_refresh_menu, menu);
-
return true;
-
}
-
-
-
-
-
@Override
-
public boolean onOptionsItemSelected(MenuItem item) {
-
final int id = item.getItemId();
-
switch(id) {
-
case R.id.force_refresh:
-
mSwipeRefreshWidget.setRefreshing(true);
-
refresh();
-
return true;
-
}
-
return false;
-
}
-
-
private void refresh() {
-
mHandler.removeCallbacks(mRefreshDone);
-
mHandler.postDelayed(mRefreshDone, 1000);
-
}
-
}
swipe_refresh_widget_sample.xml
-
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
-
android:id="@+id/swipe_refresh_widget"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent" >
-
-
-
-
<ListView
-
android:id="@+id/content"
-
android:layout_width="match_parent"
-
android:layout_height="match_parent" />
-
-
</android.support.v4.widget.SwipeRefreshLayout>
Android v4包中的 SwipeRefreshLayout 官方的下拉刷新组件
原文:http://blog.csdn.net/shineflowers/article/details/41802661