网上有很多关于pos机没有菜单,Recycleview模仿星巴克咖啡菜单物品列表的知识,也有很多人为大家解答关于pos机没有菜单的问题,今天pos机之家(www.poszjia.com)为大家整理了关于这方面的知识,让我们一起来看下吧!
本文目录一览:
1、pos机没有菜单
pos机没有菜单
前言RecycleView的使用
RecyclerView是Google在API 21下support.V7包里的控件,用来替代ListView。
官网对RecycleView的描述为:A flexible view for providing a limited window into a large data set。
一、使用RecycleView的前提条件
想使用RecycleView,一定要在build.gradle中引入compile \'com.android.support:recyclerview-v7:24.0.0\'依赖。
二、使用RecycleView的优缺点
优点:
RecycleView强制封装ViewHolder相当轻松的设置布局管理器以控制Item的布局方式,横向、竖向以及瀑布流方式可设置Item操作的动画,删除或者添加等通过ItemDecoration,控制Item间的间隔,可自己绘制缺点:
需要自己实现OnItemClickListener点击事件(这么实用的需求,Google竟然让我们自己实现...)不过我认为Recycleview的ItemDecoration非常强大,你可以使用它实现listview的分割线,悬浮窗,甚至一些非常炫的动画~
效果图
ItemDecorationonDraw():和普通view的onDraw差不多,就是绘制在画布上绘制东西。onDrawOver():就是基于onDraw上再次绘制点东西,over的意思。getItemOffsets():Recycleview可以通过他拿到每一个item的间距,所以只需要控制这个间距,并在间距里利用onDrawOver再绘制你想绘制的东西。实现这个的思路,我们只需要在指定的的行数通过getItemOffsets预留出我们要空出的高度,然后通过onDrawOver绘制出你所希望的view即可。1.手动构造数据格式,如下,返回list
Goods goods1 = new Goods("人气TOP", "正果拿铁1", "Y27", "默认:大/单糖/热");Goods goods99 = new Goods("人气TOP", "正果拿铁2", "Y27", "默认:大/单糖/热");Goods goods91 = new Goods("人气TOP", "正果拿铁3", "Y27", "默认:大/单糖/热");Goods goods2 = new Goods("大师咖啡", "拿铁", "Y27", "默认:大/单糖/热");Goods goods3 = new Goods("大师咖啡", "香草拿铁", "Y24", "默认:大/单糖/热");Goods goods4 = new Goods("大师咖啡", "焦糖拿铁", "Y26", "默认:大/半糖/热");List<Goods> list = new ArrayList<>();2.书写自己的ItemDecorationgetItemOffsets预留空间,只需要在每个数组的第一个数据预留一个高度,比如第一个人气TOP,第一个大师咖啡。
第一个必须预留,当前位置的name和前一个不相等则为预留空间 @Overridepublic boolean isParent(int position) { if (position == 0) return true; if (!list.get(position).getType().equals(list.get(position - 1).getType())) return true; return false;}//是否为当前最后一个itemprotected boolean lastOneInGroup(int position) { String parentName = mDecorListener.parentName(position); String nextGroupName; try { nextGroupName = mDecorListener.parentName(position + 1); } catch (Exception e) { nextGroupName = null; } if (nextGroupName == null) { return false; } return !TextUtils.equals(parentName, nextGroupName);//与下一行的name不一样说明当前是最后一行 }由上isParent判断是第一个的返回你要预留的高度大小,否则为不需要空间0 @Override public void getItemOffsets(rect outRect, View view, RecyclerView parent, RecyclerView.State state) { super.getItemOffsets(outRect, view, parent, state); int position = parent.getChildAdapterPosition(view); if (parent.getLayoutManager() instanceof LinearLayoutManager && mDecorListener.isParent(position)) { outRect.top = decorationHeight; return; } outRect.top = 0; }在预留的空间上画上你的view
@Override public void onDrawOver(Canvas c, RecyclerView parent, RecyclerView.State state) { super.onDrawOver(c, parent, state); final int itemCount = state.getItemCount(); 全部item的数量 final int childCount = parent.getChildCount(); 可看见的排除悬停的分割线的个数 final int left = parent.getPaddingLeft(); final int right = parent.getwidth="360px",height="auto" />
Group if (mDecorListener.isParent(position) || i == 0) {//中第一个位置和可见的第一个才有这个悬停 //绘制悬浮, int bottom = Math.max(decorationHeight, (childView.getTop() + parent.getPaddingTop())); //决定当前顶部第一个悬浮Group的bottom,拿到item高度和规定高度对比,只是选择一个合适的高度定义分割线 if (position + 1 < itemCount) { //下一组的第一个View接近头部 int viewBottom = childView.getBottom(); if (lastOneInGroup(position) && viewBottom < bottom) { bottom = viewBottom; //如果这个关掉,会覆盖,顶上去效果失去,其实viewBottom逐渐变为0,这样动态的放置即将消失的悬浮拦,看上去就是下一个悬浮拦顶上来的 } } drawDecoration(c, position, left, right, bottom, parent); stickyHeaderPosArray.put(position, bottom); } } } private void drawDecoration(Canvas c, int position, int left, int right, int bottom, RecyclerView parent) { c.drawRect(left, bottom - decorationHeight, right, bottom, mGroutPaint); Paint.FontMetrics fm = mTextPaint.getFontMetrics(); //文字竖直居中显示 float baseLine = bottom - (decorationHeight - (fm.bottom - fm.top)) / 2 - fm.bottom; //获取文字宽度 mSideMargin = Math.abs(mSideMargin); c.drawText(mDecorListener.parentName(position), left + mSideMargin, baseLine, mTextPaint);//x轴,baseLine Rect rect = new Rect();//为了得到当前text的属性 mTextPaint.getTextBounds(mDecorListener.parentName(position), 0, mDecorListener.parentName(position).length(), rect); //绘制那条横线 c.drawLine(left + mSideMargin * 2 + rect.width="360px",height="auto" />读者福利最后,从毕业以后我在大厂工作多年,此前我指导过不少同行。很少跟大家一起探讨,正好最近我花了一个多月的时间整理出来一份包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术,今天暂且开放给有需要的人,读到这的朋友还可以私信我免费领取一份收集的Android核心知识体系文档及更多Android进阶知识笔记和视频资料。
资料免费领取方式:转发+转发+转发关注后,私信关键词【面试】即可获取免费领取方式!
重要的事说三遍,转发+转发+转发!
更多知识分享
以上就是关于pos机没有菜单,Recycleview模仿星巴克咖啡菜单物品列表的知识,后面我们会继续为大家整理关于pos机没有菜单的知识,希望能够帮助到大家!
