iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >android使用 ScrollerView 实现 可上下滚动的分类栏实例
  • 743
分享到

android使用 ScrollerView 实现 可上下滚动的分类栏实例

分类Android 2022-06-06 04:06:09 743人浏览 八月长安
摘要

如果不考虑更深层的性能问题,我个人认为ScrollerView还是很好用的。而且单用ScrollerView就可以实现分类型的RecyclerView或ListView所能实现

如果不考虑更深层的性能问题,我个人认为ScrollerView还是很好用的。而且单用ScrollerView就可以实现分类型的RecyclerView或ListView所能实现的效果。

下面我单单从效果展示方面考虑,使用ScrollerView实现如下图所示的可滚动的多条目分类,只是为了跟大家一起分享一下新思路。(平时:若从复用性等方面考虑,这显然是存在瑕疵的~)

特点描述:

1.可上下滚动

2.有类似于网格布局的样式

3.子条目具有点击事件

刚看到这个效果时,首先想到的是使用分类型的RecyclerView 或者 ListView  ,里面再嵌套GridView来实现。

但转而又一想ScrollerView也可以滚动,只要往里面循环添加子item不就可以了吗。

实现的逻辑大致如下:


具体的实现如下:

第一步:布局里写一个ScrollerView,里面添加一个竖直的线性布局

第二步:实例化垂直线性布局


allhonor_hscroll = (LinearLayout) findViewById(R.id.allhonor_hscroll); 

第三步:联网请求获取数据


setAllHonorData(); 

 
  public void setAllHonorData() { 
    OkHttpUtils 
        .get() 
        .url(url) 
        .build() 
        .execute(new StrinGCallback() { 
          @Override 
          public void onError(okhttp3.Call call, Exception e, int id) { 
            Log.e("TAG", "111"); 
            Log.e("TAG", "onError" + e.getMessage()); 
          } 
          @Override 
          public void onResponse(String response, int id) { 
            Log.e("TAG", "222"); 
            Log.e("TAG", "onRespons" + response); 
            //联网成功后使用fastJSON来解析数据 
            processData(response); 
          } 
          @Override 
          public void onBefore(Request request, int id) { 
          } 
          @Override 
          public void onAfter(int id) { 
          } 
        }); 
  } 

 
  private void processData(String json) { 
    //使用GsonFORMat生成对应的bean类 
    com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(json); 
    String data = jsonObject.getString("data"); 
    List<AllHonorBean.HornorBean> hornorsList = JSON.parseArray(data, AllHonorBean.HornorBean.class); 
    //测试是否解析数据成功 
//    String strTest = hornorsList.get(0).getRegion(); 
//    Log.e("TAG", strTest); 
    //第四步:装配数据,使用两层for循环 
  } 

第四步:设置两种item的布局

第一种item布局:item_allhornors0.xml


<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:background="#ffffff" 
  android:orientation="vertical"> 
  <TextView 
    android:id="@+id/tv_allhornors_big" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#11000000" 
    android:gravity="center_vertical" 
    android:paddingBottom="12dp" 
    android:paddingLeft="13Dp" 
    android:paddingTop="12dp" 
    android:text="热门" 
    android:textColor="#000000" 
    android:textSize="14sp" /> 
  <View 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:background="#11000000" /> 
</LinearLayout> 

第二种item布局:item_allhornors1.xml


<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:background="#ffffff" 
  android:orientation="vertical"> 
  <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView 
      android:id="@+id/tv_allhornors_sn0" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:clickable="true" 
      android:gravity="center" 
      android:paddingBottom="12sp" 
      android:paddingTop="12sp" 
      android:text="你好你好" 
      android:textColor="#000000" 
      android:textSize="13sp" /> 
    <View 
      android:layout_width="1dp" 
      android:layout_height="match_parent" 
      android:background="#11000000" /> 
    <!--注意这里的text文本一定要为空,不要设置任何内容--> 
    <TextView 
      android:id="@+id/tv_allhornors_sn1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:clickable="true" 
      android:gravity="center" 
      android:paddingBottom="12sp" 
      android:paddingTop="12sp" 
      android:text="" 
      android:textColor="#000000" 
      android:textSize="13sp" /> 
  </LinearLayout> 
  <View 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:background="#11000000" /> 
</LinearLayout> 

第五步:装配数据


if (hornorsList != null && hornorsList.size() > 0) { 
      //-->外层 
      for (int i = 0; i < hornorsList.size(); i++) { 
        //创建并添加第一种item布局 
        View globalView = View.inflate(this, R.layout.item_allhornors0, null); 
        TextView tv_allhornors_big = (TextView) globalView.findViewById(R.id.tv_allhornors_big); 
        AllHonorBean.HornorBean hornorsListBean = hornorsList.get(i); 
        String region = hornorsListBean.getRegion(); 
        //外层for中直接装配数据 
        tv_allhornors_big.setText(region); 
        //将布局添加进去 
        allhonor_hscroll.addView(globalView); 
        List<AllHonorBean.HornorBean.FestivalsBean> festivalsList = hornorsListBean.getFestivals(); 
        //-->内层,每次装两个数据 
        for (int j = 0; j < festivalsList.size(); j = j + 2) { 
          //创建并添加第二种item布局 
          View smallView = View.inflate(this, R.layout.item_allhornors1, null); 
          final TextView tv_sn0 = (TextView) smallView.findViewById(R.id.tv_allhornors_sn0); 
          TextView tv_sn1 = (TextView) smallView.findViewById(R.id.tv_allhornors_sn1); 
          //顺带在这里就直接添加点击事件的监听 
          if (j < festivalsList.size() - 1) { 
            setListener(tv_sn0, tv_sn1); 
          } 
          //装配左边的数据 
          honorName0 = festivalsList.get(j).getFestivalName(); 
          tv_sn0.setText(honorName0); 
          //判读越界否 
          if (j < festivalsList.size() - 1) { 
            //装配右边的数据 
            honorName1 = festivalsList.get(j + 1).getFestivalName(); 
            tv_sn1.setText(honorName1); 
          } 
          //添加进去 
          allhonor_hscroll.addView(smallView); 
        } 
      } 
    } 

点击事件的监听:


private void setListener(final TextView tv_sn0, final TextView tv_sn1) { 
    //给左边的TextView 设置监听 
    tv_sn0.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
        Toast.makeText(MainActivity.this, "" + tv_sn0.getText(), Toast.LENGTH_SHORT).show(); 
      } 
    }); 
    //给右边的TextView 设置监听 
    tv_sn1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
        Toast.makeText(MainActivity.this, "" + tv_sn1.getText(), Toast.LENGTH_SHORT).show(); 
      } 
    }); 
  } 

完成~

再看一眼最后效果:

您可能感兴趣的文章:Android仿京东分类模块左侧分类条目效果Android使用Scroll+Fragment仿京东分类效果Android 仿京东、拼多多商品分类页的示例代码Android实现网易Tab分类排序控件实现Android使用分类型RecyclerView仿各大商城首页Android编程实现仿美团或淘宝的多级分类菜单效果示例【附demo源码下载】Android 仿网易新闻客户端分类排序功能Android学习教程之分类侧滑菜单(5)Android实现qq列表式的分类悬浮提示Android实现京东App分类页面效果


--结束END--

本文标题: android使用 ScrollerView 实现 可上下滚动的分类栏实例

本文链接: https://www.lsjlt.com/news/22554.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android使用kotlin实现多行文本上下滚动播放
    最近在项目中用到了上下滚动展示条目内容,就使用kotlin简单编写实现了一下该功能。 使用kotlin实现viewflipper展示textview的上下滚动播放 其中包含了kot...
    99+
    2024-04-02
  • Android_RecyclerView实现上下滚动广告条实例(带图片)
    前言公司新项目首页有个类似京东/淘宝滚动广告条,查了一下大概都是两种实现方式,一是textview,如果只有文字的话是可行的,但我们这个上面还有个小图片,所以pass;二是两个viewGroup,使用动画交替滚动,可以实现,就是显得很麻烦,...
    99+
    2023-05-31
    android recyclerview 滚动
  • Android使用HorizontalScrollView实现水平滚动
    要在Android中使用HorizontalScrollView实现水平滚动,可以按照以下步骤进行操作:1. 在XML布局文件中添加...
    99+
    2023-08-22
    Android
  • 怎么使用CSS实现滚动的图片栏
    这篇“怎么使用CSS实现滚动的图片栏”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“怎么使用CSS实现滚动的图片栏”,小编整理了以下知识点,请大家跟着小编的步伐...
    99+
    2024-04-02
  • Android中如何使用kotlin实现多行文本上下滚动播放
    本篇内容主要讲解“Android中如何使用kotlin实现多行文本上下滚动播放”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中如何使用kotlin实现多行文本上下滚动播放”吧!使用...
    99+
    2023-06-26
  • Android如何使用Scroller实现一个可向上滑动的底部导航栏
    这篇文章主要介绍了Android如何使用Scroller实现一个可向上滑动的底部导航栏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。看下效果:首先这个控件是滑动的肯定就会用到...
    99+
    2023-05-31
    android
  • android实现可上下回弹的scrollview
    在ios手机上经常看到页面上下滑动回弹效果,安卓中没有原生控件支持,这里自己就去自定义一个scrollview实现回弹效果 1. 新建MyScrollView并继承ScrollVie...
    99+
    2024-04-02
  • Android使用ViewFlipper实现图片上下自动轮播的示例代码
    本文主要介绍了Android使用ViewFlipper实现图片上下自动轮播的示例代码,分享给大家,具体如下: 先看效果: 1.xml代码: ...
    99+
    2024-04-02
  • Android怎么使用HorizontalScrollView实现水平滚动
    要在Android中使用HorizontalScrollView实现水平滚动,可以按照以下步骤进行操作:1. 在XML布局文件中添加...
    99+
    2023-08-18
    Android
  • 怎么在Android应用中利用TextSwitcher实现一个上下滚动功能
    本篇文章为大家展示了怎么在Android应用中利用TextSwitcher实现一个上下滚动功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android 上下滚动TextSwitcher实例详解1...
    99+
    2023-05-31
    android textswitcher roi
  • android怎么实现可上下回弹的scrollview
    本篇内容主要讲解“android怎么实现可上下回弹的scrollview”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“android怎么实现可上下回弹的scrollview”吧! 新建MyScr...
    99+
    2023-06-30
  • 基于Android实现可滚动的环形菜单效果
    效果 首先看一下实现的效果: 可以看出,环形菜单的实现有点类似于滚轮效果,滚轮效果比较常见,比如在设置时间的时候就经常会用到滚轮的效果。那么其实通过环形菜单的表现可以将其看作是一个...
    99+
    2024-04-02
  • vue使用better-scroll实现横向滚动的方法实例
    一、滚动的实现原理 better-scroll的滚动原理和浏览器原生滚动原理是一样的,当子盒子的高度大于父盒子的高度,就会出现纵向滚动;同理,如果子盒子的宽度大于父盒子的宽度,那么...
    99+
    2024-04-02
  • Vue实现下拉滚动加载数据的示例
    目录第一步:安装第二步:引用第三步:使用Web项目经常会用到下拉滚动加载数据的功能,今天就来种草 Vue-infinite-loading 这个插件,讲解一下使用方法! 第一步:安装...
    99+
    2024-04-02
  • Android仿淘宝头条基于TextView实现上下滚动通知效果
    最近有个项目需要实现通知栏的上下滚动效果,仿淘宝头条的那种。我从网上看了一些代码,把完整的效果做了出来。如图所示:具体代码片段如下:1.在res文件夹下新建anmin文件夹,在这个文件夹里创建两个文件(1).anim_marquee_in....
    99+
    2023-05-31
    android textview 滚动
  • Android如何使用ViewFlipper实现图片上下自动轮播
    这篇文章主要介绍了Android如何使用ViewFlipper实现图片上下自动轮播,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:先看效果:1.xml代码: ...
    99+
    2023-06-15
  • 如何使用Vue代码实现一个上下滚动加载组件
    本篇内容主要讲解“如何使用Vue代码实现一个上下滚动加载组件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Vue代码实现一个上下滚动加载组件”吧!组件代码// scrollLo...
    99+
    2023-07-04
  • 基于vue实现新闻自下往上滚动效果(示例代码)
    如图所示自下往上滚动鼠标放上暂停滚动 鼠标移出继续滚动 一、html: <div class="newsList" @mouseover="mouseOver" @mouse...
    99+
    2024-04-02
  • Android中怎么使用ListView实现滚轮动画效果
    今天就跟大家聊聊有关Android中怎么使用ListView实现滚轮动画效果,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。   private ...
    99+
    2023-05-31
    android listview
  • 如何使用html+css+js实现导航栏滚动渐变效果
    本篇内容主要讲解“如何使用html+css+js实现导航栏滚动渐变效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用html+css+js实现导航栏滚动渐变效果”吧!实现:1.定义导航栏...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作