前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android美团首页分类按钮(含音频教程)

Android美团首页分类按钮(含音频教程)

作者头像
陈宇明
发布2020-12-15 11:15:33
7840
发布2020-12-15 11:15:33
举报
文章被收录于专栏:设计模式

前言

给大家带来的是一个仿美团首页分类按钮的库,这个库比美团的更灵活,可以设置任意的View到ViewPager页中。

作者博客

http://www.jianshu.com/u/3d2770e6e489

源码地址

https://github.com/FJ917/FJMtSortButton

文章目录

  1. 使用姿势
    1. 导入配置
      1. Gradle
      2. Maven
    2. 使用方法
  2. 实现原理
    1. 需求分析
    2. 封装组成
    3. 总结

音频版教程

在「码个蛋」公众号中回复“20170331”获取

效果

1

使用姿势

导入配置文件

1. Gradle:

2. Maven

使用方法

1.xml文件

2. java文件 2.1 对自定义控件做一些设置

将layout的布局add进去list中,然后调用setView方法把list传过去, 还提供了设置指示器图标的方法,以及指示器间距的方法,最后必须调用初始化方法init进行初始化

这是其中的一个layout布局,其实这里可以添加任意布局文件进去,是不是比美团更灵活呢?

R.layout.viewpager_page

2.2 设置soreButton监听事件(具体的可以参考GIt上面的Demo)

重点:上面的list中可以传入任意layout布局,然后通过接口回掉拿到View。比美团更加灵活。

2

实现原理

需求分析

界面:分为两部分,上面的按钮以及下面的指示点。上面使用ViewPager作为View的容器,下面的指示器用LinearLayout将动态创建的ImageView添加进去。

ViewPager中的按钮使用GridView来做,当然这一部分我们需要做的灵活些,不一定只放按钮,也可以方其他View,超越美团,//手动滑稽。

重点:通过自定义组合控件的方式来进行封装,方便以后的使用。

封装组成

1. xml

和普通的布局没啥区别,外层LinearLayout垂直布局,其中有ViewPager作为滑动切换的容器,内部的LinearLayout作为指示器容器。

2. 自定义控件SoreButton.java

设置了默认值变量,以及控件和接口定义

拿到了自定义控件的布局中ViewPager和LinearLayout,并且设置了一个空布局。

对外提供的参数设置方法,当调用了init()方法后,会调用initViewPager方法进行ViewPager的初始化。

接下来我们看看initViewPager中都做了那些操作

因为之前调用了setView方法,传入了一组布局,我们通过循环来拿到这组View并添加到list中,然后设置到viewPager的Adapter,然后调用initLinearLayout方法初始化指示器。

接下来我们来看initLinearLayout中又做了那些操作

定义了一个数组,用来放置指示器的点,通过循环pageSize来动态创建ImageView,然后判断i来将第一页的ImageView设置为选中的点,其余设置为未选中的点。接着设置了宽高,然后添加到LinearLayout中。

当然这样还不行,在viewPager滑动的时候我们得更新指示器上的点

我们对ViewPager设置了监听事件setOnPageChangeListener,在滑动的时候会调用onPageSelected,在这里可以拿到当前页,之后我们通过循环刚刚的数组,将当前页对应的点设置为选中图标,不等于当前页的设置为未选中的点。

然后就没有然后了,封装完成~ 这样就可以通过上面所说的方式,来使用这个自定义控件实现仿美团的效果,而且不止是仿美团的效果,可以传入其他View,来实现其他效果。比如:稍加改动布局的话可以作为应用的启动引导页。

总结

通过自定义组合控件,可以对一些常用的布局以及逻辑代码进行封装,以减少使用时代码量,使得代码更加简洁。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码个蛋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档