private void addTimeSlider(GSMovie m) { float widthToUse = m.width > GESTURE_AREA_MAX_WIDTH ? GESTURE_AREA_MAX_WIDTH : m.width; Vector3D gestureAreaPosition = gestureArea.getPosition(TransformSpace.LOCAL); timeSlider = new MTSlider( getRenderer(), gestureAreaPosition.x + gestureAreaXPadding, gestureAreaPosition.y + gestureAreaYPadding, widthToUse - gestureAreaXPadding * 2f, // slider width TIME_SLIDER_HEIGHT, 0, 10); // min max values timeSlider.getOuterShape().setFillColor(new MTColor(0, 0, 0, 80)); timeSlider.getOuterShape().setStrokeColor(new MTColor(0, 0, 0, 80)); timeSlider.getKnob().setFillColor(new MTColor(100, 100, 100, 80)); timeSlider.getOuterShape().setStrokeColor(new MTColor(100, 100, 100, 80)); timeSlider .getKnob() .addGestureListener( DragProcessor.class, new IGestureEventListener() { public boolean processGestureEvent(MTGestureEvent ge) { DragEvent de = (DragEvent) ge; switch (de.getId()) { case MTGestureEvent.GESTURE_STARTED: stopSliderAdvance = true; break; case MTGestureEvent.GESTURE_UPDATED: break; case MTGestureEvent.GESTURE_ENDED: if (movieView != null && movieView.getMovie() != null) { float currValue = timeSlider.getValue(); movieView.jump(currValue); } stopSliderAdvance = false; break; default: break; } return false; } }); timeSlider.setValueRange(0, m.duration()); timeSlider .getOuterShape() .addGestureListener( TapProcessor.class, new IGestureEventListener() { @SuppressWarnings("deprecation") public boolean processGestureEvent(MTGestureEvent ge) { TapEvent te = (TapEvent) ge; switch (te.getTapID()) { case TapEvent.BUTTON_DOWN: stopSliderAdvance = true; break; case TapEvent.BUTTON_UP: stopSliderAdvance = false; break; case TapEvent.BUTTON_CLICKED: if (movieView != null && movieView.getMovie() != null) { float currValue = timeSlider.getValue(); movieView.jump(currValue); } stopSliderAdvance = false; break; default: break; } return false; } }); timeSlider.setValue(0); gestureArea.addChild(timeSlider); }