怎样一开始打开activity就启动google的下拉刷新(仿优酷的下拉刷新)
来源:互联网 发布:威风堂堂软件下载 编辑:程序博客网 时间:2024/06/05 22:32
怎样一开始打开activity就启动google的下拉刷新(仿优酷的下拉刷新)
因为平时一直都是使用优酷app观看视频等,然而,一直对它的一个现象不思其解,就是只要有下拉刷新的地方,一旦这个页面一启动,就会首先看到google官方推荐的下拉刷新的小圆圈在转,正在处于刷新状态。然后我以前也学过关于google下拉刷新swipRefreshLayout的使用,连接点击打开链接查看google的下拉刷新
然而,我就使用SwipRefreshLayout的setRefreshing(true)来手动的要求swipRefreshLayout进行刷新,然而根本没有出来现象,然后我就查了下资料,这里有两种办法可以实现SwipRefreshLayout 的主动刷新功能。
第一中:继承SwipRefreshLayout,自己定义一个实现主动刷新的方法,才用反射的方式来实现。代码如下:
package com.world.hello.swiperefrsh;import android.content.Context;import android.support.v4.widget.SwipeRefreshLayout;import android.util.AttributeSet;import android.view.View;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * google下拉刷新设置为可以主动刷新 * Created by chengguo on 2016/6/30. */public class MineSwipeRefreshLayout extends SwipeRefreshLayout { public MineSwipeRefreshLayout(Context context) { super(context); } public MineSwipeRefreshLayout(Context context, AttributeSet attrs) { super(context, attrs); } /** * 主动刷新 */ public void setRefresh() { try { Field mCircleView = SwipeRefreshLayout.class.getDeclaredField("mCircleView"); mCircleView.setAccessible(true); View progress = (View) mCircleView.get(this); progress.setVisibility(VISIBLE); Method setRefreshing = SwipeRefreshLayout.class.getDeclaredMethod("setRefreshing", boolean.class, boolean.class); setRefreshing.setAccessible(true); setRefreshing.invoke(this, true, true); } catch (Exception e) { e.printStackTrace(); } }}
这里自定义了一个setRefresh()方法来实现手动刷新。
main_activity.xml:如下
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootView" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.world.hello.swiperefrsh.MineSwipeRefreshLayout android:id="@+id/swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/home_list" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" /> </com.world.hello.swiperefrsh.MineSwipeRefreshLayout> </LinearLayout>
MainActivity
package com.world.hello.swiperefrsh;import android.os.Bundle;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener{ private MineSwipeRefreshLayout mSwipeRefreshLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSwipeRefreshLayout = (MineSwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); mSwipeRefreshLayout.setOnRefreshListener(this); //主动刷新,界面刚开始出现时就能看到google的下拉刷新图标,这个时候就调用了google的刷新方法 //onRefresh()方法。 mSwipeRefreshLayout.setRefresh(); } /** * google官方的下拉刷新回调方法 */ @Override public void onRefresh() { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // 让listview停止刷新 mSwipeRefreshLayout.setRefreshing(false); Toast.makeText(MainActivity.this, "刷新成功", Toast.LENGTH_SHORT).show(); } }, 2000); }}
效果图如下:
第二种:使用google原始SwipRefreshLayout实现, 值得注意的是:接调用setRfreshing(true)是出不来效果的,这个问题我以前也遇到过,必须调用
mSwipeRefreshLayout.post(new Runnable() { @Override public void run() { mSwipeRefreshLayout.setRefreshing(true); } }); onRefresh();
MainActivity.xml代码如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootView" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_refresh_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/home_list" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" /> </android.support.v4.widget.SwipeRefreshLayout></LinearLayout>
MainAcitivity的代码如下:
package com.world.hello.swiperefrsh;import android.os.Bundle;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener { private SwipeRefreshLayout mSwipeRefreshLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout); mSwipeRefreshLayout.setOnRefreshListener(this); mSwipeRefreshLayout.post(new Runnable() { @Override public void run() { mSwipeRefreshLayout.setRefreshing(true); } }); onRefresh(); } /** * google官方的下拉刷新回调方法 */ @Override public void onRefresh() { Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { // 让listview停止刷新 mSwipeRefreshLayout.setRefreshing(false); Toast.makeText(MainActivity.this, "刷新成功", Toast.LENGTH_SHORT).show(); } }, 2000); }}
现象和第一种方法的现象是一样的,这样是用代码主动去调用SwipRefreshLayout的回调方法 onRefresh( ) 方法 ,来实现刷新功能。
1 0
- 怎样一开始打开activity就启动google的下拉刷新(仿优酷的下拉刷新)
- google推出的SwipeRefreshLayout下拉刷新用法
- google推出的SwipeRefreshLayout下拉刷新用法
- google推出的SwipeRefreshLayout下拉刷新用法
- google 推出的下拉刷新用法 SwiftRefreshLayout
- google推出的SwipeRefreshLayout下拉刷新用法
- google推出的SwipeRefreshLayout下拉刷新用法
- google推出的SwipeRefreshLayout下拉刷新用法
- google官方的下拉刷新控件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google下拉刷新组件SwipeRefreshLayout的使用
- Google自己的下拉刷新组件SwipeRefreshLayout
- Google自己的下拉刷新组件SwipeRefreshLayout
- android google官方的下拉刷新SwipeRefreshLayout
- androlyze.py使用方法【三】
- getContextPath、getServletPath、getRequestURI、getRealPath的区别
- Debugging Heap corruption with Application Verifier and Debugdiag
- 滑动导航栏
- z-index详解
- 怎样一开始打开activity就启动google的下拉刷新(仿优酷的下拉刷新)
- static 函数和普通函数
- xp下GetLastError实现
- OSG中的智能指针
- android Activity崩溃日志收集
- 【转载】Java NIO算法理论与实践
- Hadoop生态系统概述
- CSS属性中Display与Visibility
- android删除一个view中的子view