Android实现下滑和上滑事件

  做过开发的对于下滑刷新与上滑加载都一定不陌生,因为我们在很多时候都会使用到,那对对于这个效果如何实现呢?相信难道过很多小伙伴,今天我就带领大家一道通过第三方组件快速完成上述效果的实现,保准每位小伙伴都能快速上手。首先为大家分享一下效果图:

 下滑刷新:

  

 上滑加载:

  

 第三方资源下载地址:https://github.com/Maxwin-z/XListView-Android,下载好资源后,我们开始进行设计实现:

  我们把下载好的包解压好,然后把包里面的一下六个文件拷贝到工程中六个文件分别为:

  

  我们的Activity:

public class MainActivity extends Activity implements IXListViewListener{

    private XListView mListView;
    private ArrayAdapter<String> mAdapter;
    private ArrayList<String> items = new ArrayList<String>();
    private Handler mHandler;
    private int start = 0;//数据起始位置
    private static int refreshCnt = 0;//第几次刷新

    private Date date = new Date();
    private SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");// 设置更新时间的格式

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        geneItems();
        mListView = (XListView) findViewById(R.id.xListView);

        mListView.setPullLoadEnable(true);//设置下拉刷新
//        mListView.setPullLoadEnable(false);//设置不能进行加载更多操作
//        mListView.setPullRefreshEnable(false);//设置不能进行刷新操作

        mAdapter = new ArrayAdapter<String>(this, R.layout.xlist_item, items);
        mListView.setAdapter(mAdapter);
        mListView.setRefreshTime(format.format(date));// 设置更新时间
        mListView.setXListViewListener(this);
        mHandler = new Handler();
    }

    private void geneItems() {
        for (int i = 0; i != 20; ++i) {
            items.add("refresh cnt " + (++start));
        }
    }

    private void onLoad() {
        mListView.stopRefresh();
        mListView.stopLoadMore();
        date = new Date();
        mListView.setRefreshTime(format.format(date));// 设置更新时间
    }

    //下滑刷新
    @Override
    public void onRefresh() {
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                start = ++refreshCnt;
                items.clear();
                MainActivity.this.geneItems();
                mAdapter.notifyDataSetChanged();
                MainActivity.this.onLoad();
            }
        }, 2000);
    }

    //上滑加载
    @Override
    public void onLoadMore() {
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                MainActivity.this.geneItems();
                mAdapter.notifyDataSetChanged();
                MainActivity.this.onLoad();
            }
        }, 2000);
    }

}

  主布局文件action_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#f0f0f0">

    <me.maxwin.view.XListView
        android:id="@+id/xListView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#00000000">
    </me.maxwin.view.XListView>

</LinearLayout>

  好了我们的工程已经完成,大家可以运行操作一下。

时间: 2024-10-12 22:18:33

Android实现下滑和上滑事件的相关文章

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

Android代码学习--点击事件的几种写法

由来:常规的写法参见<写一个apk>,每次点击按钮,按钮先查找文本框等元素,然后再操作,其实查找操作是很费时的操作,因此将该定义放到Activity的onCreate中:Oncreate只会执行一次,这样Activity一旦执行,就先创建好控件们了. 第二种方法:通过匿名内部类的方法:就是button.setOnClickListener(new OnClickListener(){ //实现OnClickListener接口 @Override public void onClick(Vie

JS获取鼠标左(右)滑事件

鼠标左(右)滑也是网站开发中常见的效果之一,这里对鼠标左(右)滑做出一些解释. 首先要获取需要左右滑事件的节点: eg: var div=document.getElementById("div"); 然后获取点击事件onmousedown并传参: eg: div.onmousedown=function(e){ } 在函数里写一个闭包来判断左右滑,这里需要获取鼠标的坐标,之后进行判断输出结果 eg: div.onmousedown=function(e){ var a1=e.scre

android的按钮点击事件

android的按钮点击事件 by 伍雪颖 开始学习android public void onclicklistener(View tager) { Intent intent = new Intent(); intent.setClass(Activity02.this, OtherActivity.class); Activity02.this.startActivity(intent); } <Button android:id = "@+id/myButton" and

android开源项目之OTTO事件总线(二)官方demo解说

官方demo见  https://github.com/square/otto 注意自己该编译版本为2.3以上,默认的1.6不支持match_parent属性,导致布局文件出错. 另外需要手动添加android-support-v4和otto到自己的libs文件夹. 主要代码逻辑: 1,在主页面点clear按钮,发布两个事件并传递对象. 2,然后LocationHistoryFragment接收事件对象,并处理. 1,BusProvider提供一个全局唯一的Bus实例对象 调用的时候使用MyPr

android开源项目之OTTO事件总线(一)

Otto是由Square发布的一个着重于Android支持的基于Guava的强大的事件总线,在对应用程序不同部分进行解耦之后,仍然允许它们进行有效的沟通. 开源项目地址:https://github.com/square/otto 使用说明:http://square.github.io/otto/ 以下文字来源于官方说明加上自己的体会. 1,使用 创建一个事件总线实例: Bus bus = new Bus(); 因为Bus是唯一有效的(如果它是共享总线),我们建议通过注射或其他适当的方式来获得

Android中四种OnClick事件的写法

package com.example.dailphone; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.ActionBar; import android.support.v4.app.Fragment; import android.text.TextUtils; import android.content.Intent; import android.net.Uri; imp

android知识回顾--view的事件体系

1.view的滑动,六种滑动方式:    一:通过layout来实现滑动效果      package com.example.testdragview; import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; public class DragView

android中listview点击事件失效的灵异事件

首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAdapter的adapter来适应listview)将listview的item覆盖了.现在点击的只是自定义的adapter中的convertView. 其次,自定义的adapter中包含一个ImageView和二个TextView.代码如下: <?xml version="1.0" e