之前的项目有一个幸运大转盘的功能,在网上找了很久,都没有合适的方法。
/* * * * * CircleMenuLayout.java * * @author wuxiaosu * */公开课CircleMenuLayout延伸ViewGroup {/* * *布局的半径 */私人int mRadius;/* * *该容器内儿童项目的默认尺寸 */私有静态最终浮RADIO_DEFAULT_CHILD_DIMENSION f=1;/* * *菜单的中心孩子的默认尺寸 */私人浮动RADIO_DEFAULT_CENTERITEM_DIMENSION=1/3 f;/* * *该容器的内边距,无视填充属性,如需边距请用该变量 */私有静态最终浮RADIO_PADDING_LAYOUT=1/12 f;/* * *该容器的内边距,无视填充属性,如需边距请用该变量 */私人mPadding浮动;/* * *布局时的开始角度 */私人双mStartAngle=0;/* * *菜单项的文本 */私人String [] mItemTexts;/* * *菜单项的图标 */私人int [] mItemImgs;/* * *菜单的个数 */私人int mMenuItemCount; 私人int mMenuItemLayoutId=R.layout.circle_menu_item; 公共CircleMenuLayout(上下文语境,AttributeSet attrs) { 超级(上下文,attrs);//无视填充 setPadding (0, 0, 0, 0); }/* * *设置布局的宽高,并策略菜单项宽高 */@Override 保护空白> & lt; com.zhcl.yqwan.lucky.rotation.circle.CircleMenuLayout android: id=癅 + id/id_menulayout” android: layout_width=" wrap_content " android: layout_height=" wrap_content " android: layout_gravity="中心" android:背景=癅drawable/ratote_bg_two”比; & lt;使用 android: id=癅 + id/id_circle_menu_item_center” android: layout_width=" wrap_content " android: layout_height=" wrap_content " android:可见性=跋А痹? & lt;/RelativeLayout> & lt;/com.zhcl.yqwan.lucky.rotation.circle.CircleMenuLayout> >之前
该处主要是自定义控件使用位置的布局。
3,活动中调用
/* * *设置属性或者星座的图片,并绘制图形 * * @param def * @param img * @param selectedImg * @param str * @param类型 *:区分星座和生肖,1——星座,2——生肖。 */私人空间setRotateSelectedImg(最后一个int [] def,最终int [] img, 最后的int [] selectedImg, String [] str,最后int类型){ mCircleMenuLayout。setMenuItemIconsAndTexts (def, str); mCircleMenuLayout .setOnMenuItemClickListener(新OnMenuItemClickListener () { @Override 公共空间itemClick(视图视图,int pos) {//如果是第一次进来,将之前默认选中项的改变为原来的颜色//如果选中的指数和默认的指数不同,则将默认的设置为原来的颜色//Toast.makeText (LotteryRotationActivity.this//" pos=" + pos Toast.LENGTH_SHORT),告诉();//选中的指数 selectedIndex=pos; 如果(pos !=0,,类型==1){ img [0]=mConstellationImgs [0]; }else if (pos !=0,,类型==2){ img [0]=mAnimalImgs [0]; } mCircleMenuLayout.removeAllViews ();//mCircleMenuLayout=(CircleMenuLayout)//findViewById (R.id.id_menulayout);//替换选中的图片 replaceImg=img (pos); img (pos)=selectedImg (pos);//设置图片 mCircleMenuLayout.setMenuItemIconsAndTexts (img, mItemTexts);//还原图片、方便下一次点击替换 img (pos)=replaceImg; } @Override 公共空间itemCenterClick(查看视图){ } }); }//星座:最开始默认选择一个 setRotateSelectedImg (mConstellationImgsDefult mConstellationImgs, mConstellationImgsSelected mAnimalStr 1);
这里定义了一个setRotateSelectedImg的方法,方便使用,其中最后一个int [] def,最终int [] img,最终int [] selectedImg,是三个图片数组,分别是初始化时默认的选中状态的图片数组(有一个被选中),全部未选中的图片数组,选中后的图片数组(不同于默认的图片数组),String [] str是字符串数组,由于文字已经在切图中给出,此处可忽略。