@Override
  public boolean onTouch(View v, MotionEvent event) {
    if (v.equals(win_control))
      if (isView) {

        if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {

          // 来电事件

          if (sp.getString("end" + C.EVENT_CALL, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_CALL, MSSService.this)[1])) {

            stopAnimation();
          }

          // 锁屏事件

          if (sp.getString("end" + C.EVENT_LOCKSCREEN, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_LOCKSCREEN, MSSService.this)[1])) {

            stopAnimation();
          }

          // 信息事件

          if (sp.getString("end" + C.EVENT_SMS, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_SMS, MSSService.this)[1])) {

            stopAnimation();
          }
          // 充电事件

          if (sp.getString("end" + C.EVENT_CHARGING, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_CHARGING, MSSService.this)[1])) {

            stopAnimation();
          }
        }
      }
    return true;
  }
  /**
   * 得到对应动画接口实现类的类名
   *
   * @param name
   * @return 类名
   * @deprecated
   */
  private String GetAnimationClassName(String name) {

    if (name.equals(PropertiesUtils.getAnimationInfo(MSSService.this)[C.ANIMATION_BUBBLE])) {

      return "BubbleAnimationProcess";
    } else if (name.equals(
        PropertiesUtils.getAnimationInfo(MSSService.this)[C.ANIMATION_STARSHINE])) {

      return "StarshineAnimationProcess";
    } else if (name.equals(
        PropertiesUtils.getAnimationInfo(MSSService.this)[C.ANIMATION_PICTUREWALL])) {

      // 幻灯片动画不需要让动画继续进行
      // 每次重新开始即可
      return null;
    } else if (name.equals(PropertiesUtils.getAnimationInfo(MSSService.this)[C.ANIMATION_RAIN])) {

      return "RainAnimationProcess";
    }

    return null;
  }
  /**
   * 实例一个动画 其中,存放动画的sharePreference的name为事件的name+动画的name
   *
   * @param name 动画名字
   * @param event 事件
   * @return AnimationProcess
   * @deprecated
   */
  private AnimationProcess instanceAnimation(String name, int event) {

    AnimationProcess animationP = null;
    if (name.equals(PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_BUBBLE])) {

      animationP =
          new BubbleAnimationProcess(
              MSSService.this,
              sp.getString("start" + event, "")
                  + PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_BUBBLE]);

    } else if (name.equals(PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_STARSHINE])) {

      animationP =
          new StarshineAnimationProcess(
              MSSService.this,
              sp.getString("start" + event, "")
                  + PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_STARSHINE]);

    } else if (name.equals(PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_PICTUREWALL])) {
      animationP =
          new PictureWallAnimationProcess(
              MSSService.this,
              sp.getString("start" + event, "")
                  + PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_PICTUREWALL]);
    } else if (name.equals(PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_RAIN])) {

      animationP =
          new RainAnimationProcess(
              MSSService.this,
              sp.getString("start" + event, "")
                  + PropertiesUtils.getAnimationInfo(this)[C.ANIMATION_RAIN]);
    }

    return animationP;
  }
  /** 加载事件信息,包括(是否有此事件,以及该事件的动画) */
  public void loadEvent() {

    // 清理SparseArray
    sa_IsEvent.clear();
    sa_Animation.clear();

    if (sp_userinfo.getString("UserVersionInfo", "").equals("OfficialVersion")
        || sp_userinfo.getString("UserVersionInfo", "").equals("TrialVersion")
        || sp_userinfo.getString("UserVersionInfo", "").equals(C.VERSION_FREE)) {

      // 来电事件 MSSValue.EVENT_CALL
      if (sp.getString("start" + C.EVENT_CALL, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_CALL, MSSService.this)[0])
          && sp.getString("state" + C.EVENT_CALL, "").equals(getString(R.string.action_started))) {

        sa_IsEvent.put(C.EVENT_CALL, true);
        sa_Animation.put(
            C.EVENT_CALL,
            AnimationConvert.convertAnimation(
                sp.getString("animation" + C.EVENT_CALL, ""), getApplicationContext()));
      } else {

        sa_IsEvent.put(C.EVENT_CALL, false);
        sa_Animation.put(C.EVENT_CALL, C.ANIMATION_BUBBLE);
      }

      // 锁屏事件 MSSValue.EVENT_LOCKSCREEN
      if (sp.getString("start" + C.EVENT_LOCKSCREEN, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_LOCKSCREEN, MSSService.this)[0])
          && sp.getString("state" + C.EVENT_LOCKSCREEN, "")
              .equals(getString(R.string.action_started))) {

        sa_IsEvent.put(C.EVENT_LOCKSCREEN, true);
        sa_Animation.put(
            C.EVENT_LOCKSCREEN,
            AnimationConvert.convertAnimation(
                sp.getString("animation" + C.EVENT_LOCKSCREEN, ""), getApplicationContext()));
      } else {

        sa_IsEvent.put(C.EVENT_LOCKSCREEN, false);
        sa_Animation.put(C.EVENT_LOCKSCREEN, C.ANIMATION_BUBBLE);
      }

      // 信息事件 MSSValue.EVENT_SMS
      if (sp.getString("start" + C.EVENT_SMS, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_SMS, MSSService.this)[0])
          && sp.getString("state" + C.EVENT_SMS, "").equals(getString(R.string.action_started))) {

        sa_IsEvent.put(C.EVENT_SMS, true);
        sa_Animation.put(
            C.EVENT_SMS,
            AnimationConvert.convertAnimation(
                sp.getString("animation" + C.EVENT_SMS, ""), getApplicationContext()));
      } else {

        sa_IsEvent.put(C.EVENT_SMS, false);
        sa_Animation.put(C.EVENT_SMS, C.ANIMATION_BUBBLE);
      }

      // 充电事件 MSSValue.EVENT_CHARING
      if (sp.getString("start" + C.EVENT_CHARGING, "")
              .equals(PropertiesUtils.GetEventInfo(C.EVENT_CHARGING, MSSService.this)[0])
          && sp.getString("state" + C.EVENT_CHARGING, "")
              .equals(getString(R.string.action_started))) {
        sa_IsEvent.put(C.EVENT_CHARGING, true);
        sa_Animation.put(
            C.EVENT_CHARGING,
            AnimationConvert.convertAnimation(
                sp.getString("animation" + C.EVENT_CHARGING, ""), getApplicationContext()));

      } else {
        sa_IsEvent.put(C.EVENT_CHARGING, false);
        sa_Animation.put(C.EVENT_CHARGING, C.ANIMATION_BUBBLE);
      }

      MyLog.i(
          TAG,
          "EVENT_CALL  " + sa_IsEvent.get(C.EVENT_CALL) + "  " + sa_Animation.get(C.EVENT_CALL));
      MyLog.i(
          TAG,
          "EVENT_LOCKSCREEN  "
              + sa_IsEvent.get(C.EVENT_LOCKSCREEN)
              + "  "
              + sa_Animation.get(C.EVENT_LOCKSCREEN));
      MyLog.i(
          TAG,
          "EVENT_SMS   " + sa_IsEvent.get(C.EVENT_SMS) + "   " + sa_Animation.get(C.EVENT_SMS));
      MyLog.i(
          TAG,
          "EVENT_CHARING   "
              + sa_IsEvent.get(C.EVENT_CHARGING)
              + "   "
              + sa_Animation.get(C.EVENT_CHARGING));
    }
  }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
      LayoutInflater inflater = LayoutInflater.from(getActivity());
      convertView = inflater.inflate(R.layout.gv_mss, parent, false);
      ImageView img = (ImageView) convertView.findViewById(R.id.img_gv);
      Button button = (Button) convertView.findViewById(R.id.bt_gv);
      switch (position) {
        case 0:
          button.setText(PropertiesUtils.getAnimationInfo(getActivity())[C.ANIMATION_BUBBLE]);
          img.setImageResource(R.drawable.preview_bubble);
          break;
        case 1:
          button.setText(PropertiesUtils.getAnimationInfo(getActivity())[C.ANIMATION_STARSHINE]);
          img.setImageResource(R.drawable.preview_starshine);
          break;
        case 2:
          button.setText(PropertiesUtils.getAnimationInfo(getActivity())[C.ANIMATION_PICTUREWALL]);
          img.setImageResource(R.drawable.preview_picturewall);
          break;
        case 3:
          button.setText(PropertiesUtils.getAnimationInfo(getActivity())[C.ANIMATION_RAIN]);
          img.setImageResource(R.drawable.preview_rain);
          break;
        case 4:
          button.setText(PropertiesUtils.getAnimationInfo(getActivity())[C.ANIMATION_SNOW]);
          img.setImageResource(R.drawable.preview_snow);
          break;
        default:
          break;
      }
      img.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              Intent it = new Intent();
              Bundle b = new Bundle();
              switch (position) {
                case 0:
                  b.putInt("animation", C.ANIMATION_BUBBLE);
                  break;
                case 1:
                  b.putInt("animation", C.ANIMATION_STARSHINE);
                  break;
                case 2:
                  b.putInt("animation", C.ANIMATION_PICTUREWALL);
                  break;
                case 3:
                  b.putInt("animation", C.ANIMATION_RAIN);
                  break;
                case 4:
                  b.putInt("animation", C.ANIMATION_SNOW);
                  break;
                default:
                  break;
              }
              Log.i(TAG, "" + position);
              it.putExtras(b);
              it.setClass(getActivity(), PreviewAnimation.class);
              getActivity().startActivity(it);
            }
          });

      return convertView;
    }