Android 仿京东侧滑筛选实例代码

Android 仿京东侧滑筛选实例代码,第1张

概述简单介绍这个demo写的是仿京东的侧滑筛选页面,点击进入筛选后进入二级筛选,两次侧滑的筛选,还包括ListView+CheckBox滑动冲突,ListView+GridView显示一行问题解决,接口回调传递数据等

简单介绍

这个demo写的是仿京东的侧滑筛选页面,点击进入筛选后进入二级筛选,两次侧滑的筛选,还包括ListVIEw+CheckBox滑动冲突,ListVIEw+ GrIDVIEw显示一行问题解决,接口回调传递数据等

效果图



简单得代码介绍

1.首页侧滑用的是安卓官方V4包中的DrawerLayout

<?xml version="1.0" enCoding="utf-8"?><androID.support.v4.Widget.DrawerLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"  androID:ID="@+ID/drawer_layout"  androID:layout_wIDth="match_parent"  androID:layout_height="match_parent"  androID:fitsSystemwindows="true">  <FrameLayout    androID:ID="@+ID/main_content"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:fitsSystemwindows="true">    <TextVIEw      androID:ID="@+ID/screenTv"      androID:layout_wIDth="wrap_content"      androID:layout_height="wrap_content"      androID:layout_gravity="center|top"      androID:layout_margintop="200dp"      androID:text="仿京东筛选"      androID:textSize="20sp" />  </FrameLayout>  <linearLayout    androID:ID="@+ID/nav_vIEw"    androID:layout_wIDth="wrap_content"    androID:layout_height="match_parent"    androID:layout_gravity="end"    androID:fitsSystemwindows="true"    androID:orIEntation="vertical" /></androID.support.v4.Widget.DrawerLayout>

2.一级页面是自定义的layout,作为DrawerLayout的侧滑页面添加进去

menuheaderVIEw = new RightSIDeslipLay(ScreeningActivity.this);navigationVIEw.addVIEw(menuheaderVIEw);

发现的一个小的技巧想要侧滑不随滑动而滑动,只能点击才出现侧滑的话,可以先锁定
drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED,Gravity.RIGHT);这样就不一直跟着手势侧滑了

3.一级界面 ListVIEw嵌套GrIDVIEw,GrIDVIEw得做自设配高度的自定义,不然只能显示一行,具体参源码autoMeasureHeightGrIDVIEw这个类

4.接下来是解析数据绑定数据了,还算比较简单。定义模型类,京东的筛选默认每项显示数据3个即一行。我现在默认的是都是关闭的,只有第一项是打开的,默认显现9个即3行,点击查看更多就能进入下一级页面。参看图二

5.二级页面是一个PopupWindow,设置了PopupWindow的位置和动画达到,也能像一级界面也样,右边侧滑出来,点击侧滑收回去的效果。

/** * 创建PopupWindow */private PopupWindow mMenuPop;public RightSIDeslipChildLay mDownMenu;protected voID initPopuptwindow(List<AttrList.Attr.Vals> mSelectData) {  mDownMenu = new RightSIDeslipChildLay(getContext(),ValsData,mSelectData);  if (mMenuPop == null) {    mMenuPop = new PopupWindow(mDownMenu,linearLayout.LayoutParams.FILL_PARENT,linearLayout.LayoutParams.FILL_PARENT);  }  mMenuPop.setBackgroundDrawable(new BitmapDrawable());  mMenuPop.setAnimationStyle(R.style.popupWindowAnimRight);  mMenuPop.setFocusable(true);  mMenuPop.showAtLocation(RightSIDeslipLay.this,Gravity.top,100,UiUtils.getStatusbarHeight(mCtx));  mMenuPop.setondismissListener(new PopupWindow.OndismissListener() {    @OverrIDe    public voID ondismiss() {      dismissMenuPop();    }  });}

此页面是一个ListVIEw里包含CheckBox,对于CheckBox滑动选中错位的问题在这个demo中也有解决,此法一本万利。可以下载demo来参考。大体思路是CheckBox选中的状态对象的存在需要显示的对象里,设置对象的一个属性,记录CheckBox选中的状态。

6.对于页面件数据的传递使用的接口回调。包括Adapter数据 *** 作的传出和一级页面传入二级页面,二级页面在回传给一级页面显示。一级页面在传出给主页面(这个没有写)也可以用其他数据传递的方式,这只是方法之一。

7.项目下载地址:AndroidScreening_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android 仿京东侧滑筛选实例代码全部内容,希望文章能够帮你解决Android 仿京东侧滑筛选实例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1146544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存