欢迎来到天天文库
浏览记录
ID:38684140
大小:30.00 KB
页数:5页
时间:2019-06-17
《而滑动结束的回调是说》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、而滑动结束的回调是说,当滑动结束后,滑动到中央的itemview会触发一次回调,用户可以利用该回调来进行别的逻辑处理,与别的控件进行交互,比如:某个itemview滑动到中央,触发回调,让别的TextView或者ImageView来具体显示该item项的具体信息。用法只要在Activity中写上如下几行代码即可:SemicircleMenumSemicircleMenu=(SemicircleMenu)findViewById(R.id.circlemenu);mSemicircleMenu.setMenuItemIconsAndTexts
2、(mItemImgs,mItemTexts);mSemicircleMenu.setOnMenuItemClickListener(newSemicircleMenu.OnMenuItemClickListener(){@OverridepublicvoiditemClick(Viewview,intpos){Toast.makeText(MainActivity.this,mItemTexts[pos],Toast.LENGTH_SHORT).show();}});mSemicircleMenu.setOnCentralItemCallb
3、ack(newSemicircleMenu.OnCentralItemCallback(){@OverridepublicvoidcentralItemOperate(intpos){imageView.setImageResource(mItemImgs[pos]);}});布局文件:(注意:clickable应该为true。)实现原理其实关于测量、布局、甚至事件分发的实现原理在原文章都有很详细的说明了,有兴趣的读者可以先阅读原文,这里会作简要的说明,本文重点在于讲述位置修正即滑动结束回调的实现,本文所有代码均作了删减,读者可直接到Git
4、Hub处阅读源码。Part1设置itemView的内容及加载itemView/***每个Item之间相距的角度*/privatefloatmAngleDelay;/***设置菜单的文本信息*/publicvoidsetMenuItemIconsAndTexts(int[]resIds,String[]texts){mItemIcons=resIds;mItemTexts=texts;if(resIds==null&&texts==null){thrownewIllegalArgumentException("菜单文本和图片必须设置其一");
5、}//初始化mMenuItemCountmMenuItemCount=resIds==null?texts.length:resIds.length;if(resIds!=null&&texts!=null){mMenuItemCount=Math.min(resIds.length,texts.length);}//计算每个Item之间相差的度数,该值直接影响后面的布局、滑动mAngleDelay=360/mMenuItemCount;addMenuItems();}privatevoidaddMenuItems(){LayoutInfl
6、atermInflater=LayoutInflater.from(getContext());/***初始化itemview*/for(inti=0;i7、_image);TextViewtv=(TextView)view.findViewById(R.id.id_circle_menu_item_text);//...addView(view);}}从以上代码来看,暴露了setMenuItemIconsAndTexts方法,用户可以通过该方法为该控件设置不同的Item的图像及其文本信息。接着根据设置item的数量,来计算每个item之间应相隔多少度,即mAngleDelay值,例如,如果是6个Item,那么mAngleDelay值就是60度,以此类推。接着,在addMenuItem方法内,是8、不断加载ItemView,并且添加至当前ViewGroup内。(注意:形如R.id.id_circle_menu_item_image的id是定义在values文件夹下的id文件
7、_image);TextViewtv=(TextView)view.findViewById(R.id.id_circle_menu_item_text);//...addView(view);}}从以上代码来看,暴露了setMenuItemIconsAndTexts方法,用户可以通过该方法为该控件设置不同的Item的图像及其文本信息。接着根据设置item的数量,来计算每个item之间应相隔多少度,即mAngleDelay值,例如,如果是6个Item,那么mAngleDelay值就是60度,以此类推。接着,在addMenuItem方法内,是
8、不断加载ItemView,并且添加至当前ViewGroup内。(注意:形如R.id.id_circle_menu_item_image的id是定义在values文件夹下的id文件
此文档下载收益归作者所有