Android 中上拉加载更多控件效果的实现

博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站

一、先上效果图

需要的就往下看,详细代码加步骤
在这里插入图片描述
1、创建xml,注释都已经在代码中写出。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical"
    >
    <!--分割线-->
    <View
        style="@style/horizontalDivider"
        />
        
    <!-- indeterminateDrawable效果为自定义图片让其不断的旋转-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center"
        >
        <ProgressBar
            android:id="@+id/footer_progress"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginRight="8dp"
            android:indeterminateDrawable="@drawable/update_loading_progressbar"
            android:visibility="visible"
            />
        <TextView
            android:id="@+id/footer_tv_load"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="加载更多"
            android:textColor="#999999"
            android:textSize="14dp"
             />
    </LinearLayout>
</LinearLayout>

2、资源文件horizontalDivider如下:

<resources>
 <!-- 水平分割线 -->
    <style name="horizontalDivider">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">1dp</item>
        <item name="android:background">@color/grey</item>
    </style>
 </resources>

2.1、资源文件update_loading_progressbar如下:

<?xml version="1.0" encoding="utf-8"?>
<!--rotate 旋转动画-->
<!--fromDegrees初始角度-->
<!--toDegrees 结束时角度,值为正值时,顺时针旋转.
值为负值时,逆时针旋转-->
<!--pivotX 旋转中心坐标,取值可以是数值(50)
    百分数(50%) 百分数p(50%p)
    当取值为数值时:缩放起点为View左上角坐标加上具体数值像素。
    当取值为百分数时:表示在当前View的左上角坐标加上View宽度的具体百分比
    当取值为百分数P时,表示在View左上角坐标加上父控件宽度的百分比
-->
<!--pivotY 同上-->
<!--duration 动画持续时间,毫秒为单位-->

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@mipmap/default_ptr_rotate_gray"
    android:duration="700"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="720"
    >
</rotate>

代码和资源文件都已经写出,实现上拉加载更多时,可以用到该控件,在此记录一下,方便以后用到,直接用即可!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android实现ListView的上拉加载更多数据可以通过以下步骤: 1. 首先,在布局文件中添加ListView和一个ProgressBar(或其他的加载提示控件),如下所示: ``` <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="match_parent" /> <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> ``` 2. 在代码中,为ListView设置OnScrollListener监听器,并在监听器中判断是否到达底部,如果到达底部,则触发加载更多数据的操作,如下所示: ``` listView.setOnScrollListener(new AbsListView.OnScrollListener() { private int visibleThreshold = 5; private int currentPage = 0; private int previousTotal = 0; private boolean loading = true; @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (loading) { if (totalItemCount > previousTotal) { loading = false; previousTotal = totalItemCount; currentPage++; } } if (!loading && (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) { // 触发加载更多数据的操作 loadMoreData(); loading = true; } } }); ``` 3. 在loadMoreData()方法中,使用异步任务或线程来加载更多数据,并更新数据源,如下所示: ``` private void loadMoreData() { new AsyncTask<Void, Void, List<Data>>() { @Override protected void onPreExecute() { progressBar.setVisibility(View.VISIBLE); } @Override protected List<Data> doInBackground(Void... params) { // 加载更多数据 return loadData(currentPage + 1); } @Override protected void onPostExecute(List<Data> result) { progressBar.setVisibility(View.GONE); if (result != null) { // 更新数据源 dataList.addAll(result); adapter.notifyDataSetChanged(); } } }.execute(); } ``` 以上就是在Android实现ListView的上拉加载更多数据的步骤,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值