@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle state) {
    View v = inflater.inflate(R.layout.contributors_view, container, false);

    mLoadingView = v.findViewById(R.id.contributors_cloud_loading);
    mFailedView = v.findViewById(R.id.contributors_cloud_failed);
    mImageView = (ImageView) v.findViewById(R.id.contributors_cloud_image);
    mViewController = new ContributorsCloudViewController(mImageView);
    mViewController.setMaximumScale(20f);
    mViewController.setMediumScale(7f);

    mSearchResults = (ListView) v.findViewById(R.id.contributors_cloud_search_results);
    mSearchAdapter = new ContributorsAdapter(getActivity());
    mSearchResults.setAdapter(mSearchAdapter);
    mSearchResults.setOnItemClickListener(
        new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ContributorsDataHolder contributor =
                (ContributorsDataHolder) parent.getItemAtPosition(position);
            onContributorSelected(contributor);
          }
        });

    // Load the data from the database and fill the image
    ContributorCloudLoaderTask task = new ContributorCloudLoaderTask(true, false);
    task.execute();

    return v;
  }
  private void onLoadCloudDataSuccess(float focusX, float focusY) {
    animateFadeOutFadeIn(
        mLoadingView.getVisibility() == View.VISIBLE ? mLoadingView : mSearchResults, mImageView);
    showMenuItems(true);

    // Navigate to contributor?
    if (focusX != -1 && focusY != -1) {
      mViewController.setZoomTransitionDuration(2500);
      mViewController.setScale(10, focusX, focusY, true);
      mHandler.postDelayed(
          new Runnable() {
            @Override
            public void run() {
              mViewController.setZoomTransitionDuration(-1);
            }
          },
          2500);
    }
  }