public boolean dismissSettingPopup() {
   if (mIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mIndicatorControlBar.dismissSettingPopup();
   } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mSecondLevelIndicatorControlBar.dismissSettingPopup();
   }
   return false;
 }
 @Override
 public boolean dispatchTouchEvent(MotionEvent event) {
   if (mIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mIndicatorControlBar.dispatchTouchEvent(event);
   } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mSecondLevelIndicatorControlBar.dispatchTouchEvent(event);
   }
   return true;
 }
 @Override
 public View getActiveSettingPopup() {
   if (mIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mIndicatorControlBar.getActiveSettingPopup();
   } else if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) {
     return mSecondLevelIndicatorControlBar.getActiveSettingPopup();
   }
   return null;
 }
  public void onIndicatorEvent(int event) {
    switch (event) {
      case OnIndicatorEventListener.EVENT_ENTER_SECOND_LEVEL_INDICATOR_BAR:
        mIndicatorControlBar.startAnimation(mFadeOut);
        mSecondLevelIndicatorControlBar.startAnimation(mSecondLevelFadeIn);
        mSecondLevelIndicatorControlBar.setVisibility(View.VISIBLE);
        break;

      case OnIndicatorEventListener.EVENT_LEAVE_SECOND_LEVEL_INDICATOR_BAR:
        leaveSecondLevelIndicator();
        break;
    }
  }
 public void onAnimationEnd(Animation animation) {
   if (animation == mSecondLevelFadeOut) {
     mSecondLevelIndicatorControlBar.setVisibility(View.GONE);
   } else if (animation == mFadeOut) {
     mIndicatorControlBar.setVisibility(View.GONE);
   }
 }
 @Override
 protected void onFinishInflate() {
   mIndicatorControlBar = (IndicatorControlBar) findViewById(R.id.indicator_bar);
   mIndicatorControlBar.setOnIndicatorEventListener(this);
   mSecondLevelIndicatorControlBar =
       (SecondLevelIndicatorControlBar) findViewById(R.id.second_level_indicator_bar);
   mSecondLevelIndicatorControlBar.setOnIndicatorEventListener(this);
 }
  @Override
  public void initialize(
      Context context,
      PreferenceGroup group,
      boolean isZoomSupported,
      String[] secondLevelKeys,
      String[] secondLevelOtherSettingKeys) {

    mIndicatorControlBar.initialize(context, group, isZoomSupported);

    mSecondLevelIndicatorControlBar.initialize(
        context, group, secondLevelKeys, secondLevelOtherSettingKeys);
  }
 public void setDegree(int degree) {
   mIndicatorControlBar.setDegree(degree);
   mSecondLevelIndicatorControlBar.setDegree(degree);
 }
 @Override
 public void dismissSecondLevelIndicator() {
   if (mSecondLevelIndicatorControlBar.getVisibility() == View.VISIBLE) {
     leaveSecondLevelIndicator();
   }
 }
 @Override
 public void setEnabled(boolean enabled) {
   mIndicatorControlBar.setEnabled(enabled);
   mSecondLevelIndicatorControlBar.setEnabled(enabled);
 }
 @Override
 public void overrideSettings(final String... keyvalues) {
   mSecondLevelIndicatorControlBar.overrideSettings(keyvalues);
 }
 public void setListener(OnPreferenceChangedListener listener) {
   mIndicatorControlBar.setListener(listener);
   mSecondLevelIndicatorControlBar.setListener(listener);
 }
 public void reloadPreferences() {
   mIndicatorControlBar.reloadPreferences();
   mSecondLevelIndicatorControlBar.reloadPreferences();
 }
 private void leaveSecondLevelIndicator() {
   mIndicatorControlBar.startAnimation(mFadeIn);
   mIndicatorControlBar.setVisibility(View.VISIBLE);
   mSecondLevelIndicatorControlBar.startAnimation(mSecondLevelFadeOut);
 }