示例#1
0
 /**
  * A helper to make creating a SpringConfig easier with values mapping to the Origami values.
  * @param qcTension tension as defined in the Quartz Composition
  * @param qcFriction friction as defined in the Quartz Composition
  * @return a SpringConfig that maps to these values
  */
 public static SpringConfig fromOrigamiTensionAndFriction(double qcTension, double qcFriction)
 {
     return(new SpringConfig(
                OrigamiValueConverter.tensionFromOrigamiValue(qcTension),
                OrigamiValueConverter.frictionFromOrigamiValue(qcFriction)
                ));
 }
示例#2
0
        /**
         * update the position of the seekbars based on the spring value;
         * @param springConfig current editing spring
         */
        private void updateSeekBarsForSpringConfig(SpringConfig springConfig)
        {
            float tension       = (float)OrigamiValueConverter.origamiValueFromTension(springConfig.tension);
            float tensionRange  = MAX_TENSION - MIN_TENSION;
            int   scaledTension = Java.Lang.Math.Round(((tension - MIN_TENSION) * MAX_SEEKBAR_VAL) / tensionRange);

            float friction       = (float)OrigamiValueConverter.origamiValueFromFriction(springConfig.friction);
            float frictionRange  = MAX_FRICTION - MIN_FRICTION;
            int   scaledFriction = Java.Lang.Math.Round(((friction - MIN_FRICTION) * MAX_SEEKBAR_VAL) / frictionRange);

            mTensionSeekBar.Progress  = scaledTension;
            mFrictionSeekBar.Progress = scaledFriction;
        }
示例#3
0
        // @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        public SpringConfiguratorView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)
        {
            SpringSystem springSystem = SpringSystem.create();

            springConfigRegistry = SpringConfigRegistry.getInstance();
            spinnerAdapter       = new SpinnerAdapter(context);

            Resources resources = this.Resources;

            mRevealPx = Util.dpToPx(40, resources);
            mStashPx  = Util.dpToPx(280, resources);

            mRevealerSpring = springSystem.createSpring();
            mRevealerSpring
            .setCurrentValue(1)
            .setEndValue(1)
            .addListener(new SimpleSpringListener()
            {
                SpringUpdate = (spring) =>
                {
                    float val          = (float)spring.getCurrentValue();
                    float minTranslate = mRevealPx;
                    float maxTranslate = mStashPx;
                    float range        = maxTranslate - minTranslate;
                    float yTranslate   = (val * range) + minTranslate;
                    this.TranslationY  = yTranslate;
                }
            });

            AddView(generateHierarchy(context));

            SeekbarListener seekbarListener = new SeekbarListener()
            {
                ProgressChanged = (seekBar, val, b) =>
                {
                    float tensionRange  = MAX_TENSION - MIN_TENSION;
                    float frictionRange = MAX_FRICTION - MIN_FRICTION;
                    if (seekBar == mTensionSeekBar)
                    {
                        float scaledTension = ((val) * tensionRange) / MAX_SEEKBAR_VAL + MIN_TENSION;
                        mSelectedSpringConfig.tension =
                            OrigamiValueConverter.tensionFromOrigamiValue(scaledTension);
                        string roundedTensionLabel = DECIMAL_FORMAT.Format(scaledTension);
                        mTensionLabel.Text = "T:" + roundedTensionLabel;
                    }

                    if (seekBar == mFrictionSeekBar)
                    {
                        float scaledFriction = ((val) * frictionRange) / MAX_SEEKBAR_VAL + MIN_FRICTION;
                        mSelectedSpringConfig.friction =
                            OrigamiValueConverter.frictionFromOrigamiValue(scaledFriction);
                        string roundedFrictionLabel = DECIMAL_FORMAT.Format(scaledFriction);
                        mFrictionLabel.Text = "F:" + roundedFrictionLabel;
                    }
                }
            };

            mTensionSeekBar.Max = MAX_SEEKBAR_VAL;
            mTensionSeekBar.SetOnSeekBarChangeListener(seekbarListener);

            mFrictionSeekBar.Max = MAX_SEEKBAR_VAL;
            mFrictionSeekBar.SetOnSeekBarChangeListener(seekbarListener);

            mSpringSelectorSpinner.Adapter = spinnerAdapter;
            mSpringSelectorSpinner.OnItemSelectedListener = new SpringSelectedListener()
            {
                ItemSelected = (ad, v, i, l) =>
                {
                    mSelectedSpringConfig = mSpringConfigs[i];
                    updateSeekBarsForSpringConfig(mSelectedSpringConfig);
                }
            };
            refreshSpringConfigurations();
            this.TranslationY = mStashPx;
        }