Ejemplo n.º 1
0
        public void addItems(List <SatelliteMenuItem> items)
        {
            foreach (var item in items)
            {
                menuItems.Add(item);
            }
            this.RemoveView(imgMain);
            TextView tmpView = new TextView(Context);

            tmpView.LayoutParameters = new FrameLayout.LayoutParams(0, 0);

            float[] degrees = getDegrees(menuItems.Count());
            int     index   = 0;

            foreach (SatelliteMenuItem menuItem in menuItems)
            {
                int finalX = SatelliteAnimationCreator.getTranslateX(
                    degrees[index], satelliteDistance);
                int finalY = SatelliteAnimationCreator.getTranslateY(
                    degrees[index], satelliteDistance);

                ImageView itemView = (ImageView)LayoutInflater.From(Context)
                                     .Inflate(Resource.Layout.sat_item_cr, this, false);
                ImageView cloneView = (ImageView)LayoutInflater.From(Context)
                                      .Inflate(Resource.Layout.sat_item_cr, this, false);
                itemView.Tag         = menuItem.getId();
                cloneView.Visibility = ViewStates.Gone;
                itemView.Visibility  = ViewStates.Gone;

                cloneView.SetOnClickListener(internalItemClickListener);
                cloneView.Tag = Java.Lang.Integer.ValueOf(menuItem.getId());
                FrameLayout.LayoutParams layoutParams = getLayoutParams(cloneView);
                layoutParams.BottomMargin  = Math.Abs(finalY);
                layoutParams.LeftMargin    = Math.Abs(finalX);
                cloneView.LayoutParameters = layoutParams;

                if (menuItem.getImgResourceId() > 0)
                {
                    itemView.SetImageResource(menuItem.getImgResourceId());
                    cloneView.SetImageResource(menuItem.getImgResourceId());
                }
                else if (menuItem.getImgDrawable() != null)
                {
                    itemView.SetImageDrawable(menuItem.getImgDrawable());
                    cloneView.SetImageDrawable(menuItem.getImgDrawable());
                }

                Animation itemOut   = SatelliteAnimationCreator.createItemOutAnimation(Context, index, expandDuration, finalX, finalY);
                Animation itemIn    = SatelliteAnimationCreator.createItemInAnimation(Context, index, expandDuration, finalX, finalY);
                Animation itemClick = SatelliteAnimationCreator.createItemClickAnimation(Context);

                menuItem.setView(itemView);
                menuItem.setCloneView(cloneView);
                menuItem.setInAnimation(itemIn);
                menuItem.setOutAnimation(itemOut);
                menuItem.setClickAnimation(itemClick);
                menuItem.setFinalX(finalX);
                menuItem.setFinalY(finalY);

                itemIn.SetAnimationListener(new SatelliteAnimationListener(itemView, true, viewToItemDic));
                itemOut.SetAnimationListener(new SatelliteAnimationListener(itemView, false, viewToItemDic));
                itemClick.SetAnimationListener(new SatelliteItemClickAnimationListener(this, menuItem.getId()));


                this.AddView(itemView);
                this.AddView(cloneView);
                viewToItemDic.Add(itemView, menuItem);
                viewToItemDic.Add(cloneView, menuItem);
                index++;
            }

            this.AddView(imgMain);
        }