温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android日志:Google官方下拉刷新控件

发布时间:2020-07-31 23:12:02 来源:网络 阅读:1774 作者:BlackTao 栏目:移动开发

    近期项目比较赶,所以没什么时间写博客,觉得自己新的知识了解的太少.偶尔一次逛帖子,看到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>


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI