Android控件(一)下拉刷新:SwipeRefreshLayout
需要注意的是SwipeRefreshLayout下面只可以有一个直接子节点。
布局文件如下。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:ignore="MergeRootFrame" > <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_container" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" > </ListView> </android.support.v4.widget.SwipeRefreshLayout> </FrameLayout>
主程序如下:
package com.francis.swiperefreshlayouttest; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.MenuItem; import android.support.v4.widget.SwipeRefreshLayout; import android.widget.ArrayAdapter; import android.widget.ListView; // 布局文件下,<android.support.v4.widget.SwipeRefreshLayout> 只能有一个直接的子类 // // 主要方法 // setOnRefreshListener(OnRefreshListener): 为布局添加一个Listener // setRefreshing(boolean): 显示或隐藏刷新进度条 // isRefreshing(): 检查是否处于刷新状态 // setColorSchemeResource(): 设置进度条的颜色主题,最多能设置四种 public class MyActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener{ private SwipeRefreshLayout mSwipeLayout; private ListView mListView; private ArrayAdapter<String> mArrayAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); String[] strings = new String[] {"a","b","c","d"}; mArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strings); mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container); mSwipeLayout.setOnRefreshListener(this); //加载颜色是循环播放的,只要没有完成刷新就会一直循环,color1>color2>color3>color4 mSwipeLayout.setColorSchemeResources( android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); mListView = (ListView)findViewById(R.id.list); mListView.setAdapter(mArrayAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.my, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_grid_view) { startActivity(new Intent(MyActivity.this,GridViewTest.class)); } return super.onOptionsItemSelected(item); } @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { // 停止刷新 mSwipeLayout.setRefreshing(false); } }, 3000); } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。