开源项目PullToRefresh详解(三)——PullToRefreshScrollView
来源:互联网 发布:域名的ns记录 编辑:程序博客网 时间:2024/06/06 00:02
和前几篇文章一样,这里还是先设置布局文件,然后找到这个控件。只不过这里要简单很多。
1.布局文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- The PullToRefreshScrollView replaces a standard PullToRefreshScrollView widget. --> <com.handmark.pulltorefresh.library.PullToRefreshScrollView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/pull_refresh_scrollview" android:layout_width="fill_parent" android:layout_height="fill_parent" ptr:ptrAnimationStyle="flip" ptr:ptrMode="both" > <TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="8dp" android:text="@string/filler_text" android:textSize="16sp" /> </com.handmark.pulltorefresh.library.PullToRefreshScrollView></LinearLayout>
和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<ScrollView>() { @Override public void onRefresh(PullToRefreshBase<ScrollView> refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { @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
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- The PullToRefreshScrollView replaces a standard PullToRefreshScrollView widget. --> <com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/pull_refresh_horizontalscrollview" android:layout_width="fill_parent" android:layout_height="fill_parent" ptr:ptrAnimationStyle="flip" ptr:ptrMode="both" > <LinearLayout android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="horizontal" > <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ff99cc00" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ffff4444" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ff33b5e5" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ffcc0000" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ffffbb33" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ff00ddff" /> <TextView style="@style/HorizScrollViewItem" android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="#ff669900" /> </LinearLayout> </com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView></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.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<HorizontalScrollView>() { @Override public void onRefresh(PullToRefreshBase<HorizontalScrollView> refreshView) { new GetDataTask().execute(); } }); mScrollView = mPullRefreshScrollView.getRefreshableView(); } private class GetDataTask extends AsyncTask<Void, Void, String[]> { @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<HorizontalScrollView>() { @Override public void onRefresh(PullToRefreshBase<HorizontalScrollView> refreshView) { new GetDataTask().execute(); } });
____________________________________________________________________________________________________
mPullRefreshScrollView.setOnRefreshListener(new OnRefreshListener<ScrollView>() { @Override public void onRefresh(PullToRefreshBase<ScrollView> refreshView) { new GetDataTask().execute(); } });
它设计的时候通过传入的范型来改变监听器的内容,这样就可以用一个监听器类OnRefreshListener来完成多种操作了,设计十分精妙!
阅读全文
0 0
- 开源项目PullToRefresh详解(三)——PullToRefreshScrollView
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- 开源项目PullToRefresh详解(一)——PullToRefreshListView
- 开源项目PullToRefresh详解(二)——PullToRefreshGridView
- 开源项目PullToRefresh详解
- 开源项目PullToRefresh详解(四)——PullToRefreshListView和ViewPager的结合使用
- PullToRefresh开源项目详解以及universal-image-loader的使用(一)
- 开源项目:Android-PullToRefresh
- 使用的pulltorefresh这个开源项目
- Android-PullToRefresh开源项目的使用
- Android开源项目解析:PullToRefresh
- 关于开源项目pulltorefresh的一些
- Android PullToRefresh——ListView使用详解
- pulltorefresh(三)自动刷新
- PullToRefreshScrollView下拉刷新开源组件分析
- Dialog使用详解——开源项目Standup Timer学习总结(三)
- Android开源项目pulltorefresh分析与简单使用
- N6系列三连发,360要在年底给手机市场加点料?
- Oracle日常运维2
- 双重检查锁定(double-checked locking)与单例模式
- BZOJ2820 YY的GCD
- Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection d
- 开源项目PullToRefresh详解(三)——PullToRefreshScrollView
- Hive与传统数据库对比
- Android Studio 编译时提示error please select android sdk
- 83. Remove Duplicates from Sorted List
- 大数据学习笔记(九)-大数据中的压缩
- C# 高级编程 数组
- dubbo报错解决
- 程序员笑话
- 利用decode函数实现按不同的选择条件 对数据进行分组统计