您好,登錄后才能下訂單哦!
近期項目比較趕,所以沒什么時間寫博客,覺得自己新的知識了解的太少.偶爾一次逛帖子,看到Google新出了下拉刷新的空間,覺得挺有意思的,自己就試著做了一個Demo,效果是真是不錯.下面就來分享一下.
首先,必須說明的是,這個控件只需要下載較新的api,至少是19,由于是額外的jar包,所以向下兼容各個Android版本.之前的效果是頂部一條線條,更新了SDK后現在變成了轉圈的,用法不變.
主文件:
public class MainActivity extends ActionBarActivity { private SwipeRefreshLayout refreshLayout; private GridView gv; private MyAdapter adapter; private ArrayList<String> mDatas; // private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initview(); } /** * 初始化數據 */ private void initData() { mDatas = new ArrayList<String>(); for (int i = 0; i < 10; i++) { mDatas.add("第" + i + "條數據"); } } private void initview() { refreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); gv = (GridView) findViewById(R.id.gv); // lv = (ListView) findViewById(R.id.lv); gv.setNumColumns(3); mDatas = new ArrayList<>(); initData(); adapter = new MyAdapter(); gv.setAdapter(adapter); // lv.setAdapter(adapter); // 設置加載動畫的顏色 /** * (int colorRes1 滑動的時候伸縮的顏色, int 第二個顏色, int 第三個顏色, int 第四個顏色) * 這邊處理順序是界面上刷新跳顯示顏色的順序 */ refreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_red_light, android.R.color.holo_green_light, android.R.color.holo_orange_light); refreshLayout.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { // 這里處理刷新的事件,看自己的項目來說,一般用異步加載數據, new MyAsyncTask().execute(""); } }); } /** * 異步加載數據 * * @author think * */ private class MyAsyncTask extends AsyncTask<String, String, Boolean> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Boolean doInBackground(String... params) { // 異步加載數據 // 例:lv添加一條數據 mDatas.add("新的一條數據"); // 為了模擬真實情況我們將sleep 2秒時間 SystemClock.sleep(2000); return true; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (result) { adapter.notifyDataSetChanged(); // 停止swipeRefreshLayout刷新 refreshLayout.setRefreshing(false); } } } /** * 填充數據 * * @author think * */ private class MyAdapter extends BaseAdapter { private TextView mTv; @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(MainActivity.this).inflate( R.layout.item, parent, false); String data = mDatas.get(position); mTv = (TextView) convertView.findViewById(R.id.tv); mTv.setText(data); return convertView; } } }
布局非常簡單:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent" > <GridView android:id="@+id/gv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:horizontalSpacing="1dp" android:padding="20dp" /> <!-- <ListView android:id="@+id/lv" android:layout_width="fill_parent" android:layout_height="fill_parent" /> --> </android.support.v4.widget.SwipeRefreshLayout>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。