开源项目PullToRefresh详解(三)——PullToRefreshScrollView
和前几篇文章一样,这里还是先设置布局文件,然后找到这个控件。只不过这里要简单很多。
1.布局文件
文章图片
文章图片
和ScrollView不同的是,这里不用放一个linearLayout来做内容的容器,直接放入要显示的东西就行。
2.找到控件并进行设置,这里直接贴上Activity的代码
文章图片
/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.handmark.pulltorefresh.samples; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.ScrollView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshScrollView; public final class PullToRefreshScrollViewActivity extends Activity {PullToRefreshScrollView mPullRefreshScrollView; ScrollView mScrollView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ptr_scrollview); //找到控件 mPullRefreshScrollView = (PullToRefreshScrollView) findViewById(R.id.pull_refresh_scrollview); //设置监听器,监听器中执行异步任务 mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); }private class GetDataTask extends AsyncTask{@Override protected String[] doInBackground(Void... params) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return null; }@Override protected void onPostExecute(String[] result) { // Do some stuff here// Call onRefreshComplete when the list has been refreshed. //注意:执行完后通知控件刷新完成 mPullRefreshScrollView.onRefreshComplete(); super.onPostExecute(result); } }}
文章图片
下面是横向的ScrollView
1.布局文件,就是几个textview
文章图片
文章图片
【开源项目PullToRefresh详解(三)——PullToRefreshScrollView】
2.activity中的代码,和上面基本一样
文章图片
/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.handmark.pulltorefresh.samples; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.HorizontalScrollView; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener; import com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView; public final class PullToRefreshHorizontalScrollViewActivity extends Activity {PullToRefreshHorizontalScrollView mPullRefreshScrollView; HorizontalScrollView mScrollView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ptr_horizontalscrollview); mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview); mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); }private class GetDataTask extends AsyncTask{@Override protected String[] doInBackground(Void... params) { // Simulates a background job. try { Thread.sleep(4000); } catch (InterruptedException e) { } return null; }@Override protected void onPostExecute(String[] result) { // Do some stuff here// Call onRefreshComplete when the list has been refreshed. mPullRefreshScrollView.onRefreshComplete(); super.onPostExecute(result); } }}
文章图片
这里我们来注意下这部分
mPullRefreshScrollView = (PullToRefreshHorizontalScrollView) findViewById(R.id.pull_refresh_horizontalscrollview); mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } });
____________________________________________________________________________________________________
mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener() {@Override public void onRefresh(PullToRefreshBase refreshView) { new GetDataTask().execute(); } });
它设计的时候通过传入的范型来改变监听器的内容,这样就可以用一个监听器类OnRefreshListener来完成多种操作了,设计十分精妙!
推荐阅读
- 17|17 关山松 第二课作业#公众号项目# D20
- 探索免费开源服务器tomcat的魅力
- RxJava|RxJava 在Android项目中的使用(一)
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- 靠QQ月入上万灰色暴利偏门的项目
- spring|spring boot项目启动websocket
- vuex|vuex 基础结构
- 区块链开发平台(以太坊)
- 如何在手机上查看测试vue-cli构建的项目
- 要玩转这个星际争霸II开源AI,你只需要i5+GTX1050