android抽屉式listview,Android实现列表抽屉展示效果
终于迎来的周末哇,深圳两天的凉雨天终于迎来晴日。早上爬起来异常的累,哎。。每天地铁两小时真是强身健体啊~
今天给大家带来一篇关于Android UI的文章:列表Item抽屉展示效果。单说没意思,不然大家又该说我是标题党了。我来笔墨描述下场景:
例如当我们点击某个Item项时,该Item项会有一个或多个的选择项展开来让我们选择。其实这种需求场景很常见,尤其是在App的设置界面。
ok,先给大家带来几幅图:
德玛西亚~上面三幅图是我从英雄联盟助手App中截取,从截图可以看到,当我们点击游戏资料Item的时候,下面会展开显示关于游戏资料的选择。不过也有另外的展示效果就是点击Item项会弹出窗口展示更多的选择:
两种方式都以非常巧妙的设计来展示更多的内容。关于第二种方式相信大家都知道Android中为我们提供了很多窗口展示方式,例如:Dialog、AlertDialog、PopupWindow、DialogFragment等等。
那么第一种方式该如何实现呢?哈哈,可能很多朋友会说ExpandedListView!对,没错,用ExpandedListView确实可以实现多级菜单的展示效果,但是如果一个界面有多个这样的效果,那么我们就需要写多个ExpandListView + Adapter,太麻烦。并且某天产品说,这种展示太死板,我想让它伴随动画展示,例如渐渐下拉展开。哦买噶~如果使用ExpandedListView时没办法添加展开动画的,没办法,为了和产品搞好地下恋情,我们也只能咬咬牙去想办法,该如何实现呢?ok,今天就和大家分享一种实现方式,好了,废话少说,准备开车~
主要内容我会分为以下几个部分来展开:
(1)实现原理分析
(2)选择实现方式
(3)封装
首先先来看下实现的效果图:
哈哈,是不是很炫酷。当我们点击主Item项时会伴随动画以展开显示。相信大家看到这种效果第一反应就是Android属性动画哇!嗯,我们来分析分析使用Android属性动画实现的方式:
(1)主Item一个布局,子Item项一个布局。
(2)给主Item注册单击事件
(3)创建一个动画工具类,并创建一个位移的动画效果。
(4)在Activity中获取子Item的高度
(5)初始化时隐藏。
(6)点击主Item项时,开启动画,逐渐展开到子Item项总高度。
上面就是使用Android动画来实现的方式,相信大家看了都明白,哈哈,原来这么简单那~
确实,从上面的步骤来看这种效果确实很容易实现。但是如果多个界面都有类似效果,并且一个界面也不只一个Item可以展示,可能有很多。那我们一个一个实现的话,代码不仅多而且变的非常冗余。ok,那么我们就需要解决这个问题,没错,对它进行封装。
先来看看我的封装思路:
(1)既然是一个主Item项和一个或多个子Item项,那我可以分为两个布局来展示:MenuItem和SubMenuItem。
(2)然后我需要将两个布局联系到一起,那么就需要一个容器来存放,没错,自定义布局实现。
(3)为了复用,需要公开一些基本设置,那么就需要自定义属性。
(4)创建动画,实现展示效果。
来看看核心代码:
(1)创建主Item布局和子Item布局,并关联。
/**
* 初始化Menu和Item容器
* @param context
*/
private void addDefaultLayout(Context context) {
View defaultView = LayoutInflater.from(context).inflate(layoutId, this,true);
defaultView.setOnClickListener(this);
content = new LinearLayout(context);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
content.setShowDividers(SHOW_DIVIDER_BEGINNING|SHOW_DIVIDER_MIDDLE);
content.setDividerDrawable(ContextCompat.getDrawable(context,R.drawable.item_divider));
content.setOrientation(VERTICAL);
addView(content,layoutParams);
}
(2) 添加子Item选择项
/**
* 添加Item
* @param views
*/
public void addItemView(Listviews) {
this.itemList= views;
for (int i=0; i < views.size(); i++) {
final int position = i;
content.addView(views.get(i));
views.get(i).setOnClickListener(newOnClickListener() {
@Override
public void onClick(Viewv) {
if(null!= mOnItemClickListener) {
mOnItemClickListener.onItemClick(v,position);
}
}
});
}}
使用方式很简单:
(1)布局文件中:
android:id="@+id/foldlayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layoutId="@layout/layout_menu_data"//菜单布局,自定义
/>
(2)Activity:
// 1.添加两个子Item项
for (int i = 0;i<2;i++) {
views1.add(getLayoutInflater().inflate(R.layout.layout_item,null));
}
foldlayout.addItemView(views1);
// 2.设置Item的单击事件
foldlayout.setOnItemClickListener(new FoldLayout.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this, "点击了第"+position+"个", Toast.LENGTH_SHORT).show();
}
});
短短几行代码,就轻松实现了。哈哈,是不是很nice。
ok,今天的内容就到这里了,核心的思路还是Android的动画使用以及如何巧妙的实现这种方式。具体的代码我放到了github,大家可以下载查看,如果觉得可以,还望赏颗星星鼓励一下哈。今天的内容就是这些了,thks~
android抽屉式listview,Android实现列表抽屉展示效果相关推荐
- Android实现列表抽屉展示效果
终于迎来的周末哇,深圳两天的凉雨天终于迎来晴日.早上爬起来异常的累,哎..每天地铁两小时真是强身健体啊~ 今天给大家带来一篇关于Android UI的文章:列表Item抽屉展示效果.单说没意思,不然大 ...
- android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果
本文实例为大家分享了Android UI仿QQ好友列表分组悬浮效果的具体代码,供大家参考,具体内容如下 楼主是在平板上測试的.图片略微有点大,大家看看效果就好 接下来贴源代码: PinnedHeade ...
- 九、android的ListView实现数据列表展示
基于上一篇第八节的数据库操作为基础,对数据库中的内容在android界面上进行列表展示 1.工程结构: 列表显示示意图: 列表显示效果图: 2.界面的列表展示配置文件 item.xml: <?x ...
- Android 通过ListView实现联系人列表字母索引
转载:Android自定义View--实现联系人列表字母索引_Code-Porter的博客-CSDN博客_android 字母索引 学习大神的思路和逻辑,很清晰. 这篇博文也不错:安卓仿手机联系人右侧 ...
- android listview 风格,【Android】listview卡片式列表的实现
首先需要把listview的XML改一下风格,着重注意粗体部分. 特别是 android:clipToPadding="false" 并且要记得,ListView的父控件背景颜色设 ...
- android 继承listview,Android listView 继承ListActivity的用法
Android listView 继承ListActivity的用法 在手机中经常有列表方式.如果Activity中只有唯⼀⼀个List(这也是通常的情况),可以继 承ListActivity来实现. ...
- android折叠listview,android – 如何在listview中展开和折叠项目
我对 android很新.我想实现一个列表视图.它包含一些列表项,当它们被单击时,它们应该展开以显示更多信息.但我无法找到办法做到这一点 这是我的activity_main.xml xmlns:too ...
- android 分组 listview,Android实现的ListView分组布局改进示例
本文实例讲述了android实现的listview分组布局改进方法.分享给大家供大家参考,具体如下: 由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图: 然后是实现该listv ...
- Android动态listview,Android列表组件ListView使用详解之动态加载或修改列表数据
在使用ListView组件来显示列表数据时,有的时候我们需要改变列表中的数据,有以下方法: 1.重新给ListView组件设置适配器 这种方法重新创建了ListView,效率不好. 2.使用适配器中的 ...
- android 截图 listview,Android屏幕及view的截图实例详解
Android屏幕及view的截图实例详解 屏幕可见区域的截图 整个屏幕截图的话可以用View view = getWindow().getDecorView(); public static Bit ...
最新文章
- GSM Hacking Part① :使用SDR扫描嗅探GSM网络
- Spring AOP里面的几个名词
- java 手动线程调度_Java Thread 多线程 操作线程
- 【网址收藏】如何设置node.js存储路径:node缓存、数据目录
- linux打印mysql堆栈_第25问:MySQL 崩溃了,打印了一些堆栈信息,怎么读?
- 利用python进行数据分析——第11章时间序列
- thinkpad x60安装WINDOWS2003SERVER
- CPU的平均指令周期 怎么算,如何计算处理器的机器周期
- 前端激荡三十年,从无到有,从单一到炫彩,技术从未停止!
- 三电极体系电化学传感器
- 我应该拿什么来拯救你,我的游戏?
- Ubuntu加装4T机械硬盘
- 一文看懂POE供电原理
- NLI:Natural Language Inference
- egret游戏入门之学习资源篇
- 淘宝客网站为什么会被腾讯拦截
- 蚂蚁金服完成140亿美元巨额融资,超过阿里是天荒夜谈吗?
- rba有哪几個主要組成部分_rba主要由哪部分组成
- 回溯算法——n皇后问题
- 邯郸翱翔闹元宵开学活动
热门文章
- 申请高德地图API【流程记录】
- 小程序毕业设计 基于java后台微信在线考试小程序毕业设计参考
- java数据结构和算法——前缀表达式(即波兰表达式)、中缀表达式及后缀表达式(即逆波兰表达式)介绍
- 【PostgresSQL】对汉字按拼音排序
- Excel表格限制编辑,什么原因?
- python的turtle的画太阳花(简洁和经典)
- 刘一男词汇课(从abdomen到enormous):书上有路勤为径,学海无涯“懂“作舟
- 2021_IJCAI_Graph Learning based Recommender Systems: A Review—(IJCAI, 2021)
- 德保罗大学计算机专业,德保罗大学计算机金融申请要求及专业介绍
- 华为服务器自检信息怎么开,服务器开机自检内存