Exemplo n.º 1
0
  private void exitFullscreenAnimated(boolean animated) {
    if (!isVideoFullScreen()) return;

    swipeRefreshLayout.setVisibility(View.VISIBLE);

    // reset the values correctly
    viewer.setRotation(0.f);
    viewer.setScaleX(1.f);
    viewer.setScaleY(1.f);
    viewer.setTranslationX(0.f);

    // simulate scrolling to fix the clipping and translationY
    simulateScroll();

    // go back to normal!
    FragmentActivity activity = getActivity();
    activity.supportInvalidateOptionsMenu();

    if (activity instanceof ToolbarActivity) {
      // show the toolbar again
      ((ToolbarActivity) activity).getScrollHideToolbarListener().reset();
    }

    Screen.unlockOrientation(activity);
  }
Exemplo n.º 2
0
 @Override
 public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
   if (!isVideoFullScreen() && newState == RecyclerView.SCROLL_STATE_IDLE) {
     int y = estimateRecyclerViewScrollY(recyclerView).or(Integer.MAX_VALUE);
     activity.getScrollHideToolbarListener().onScrollFinished(y);
   }
 }
  @Override
  protected void onDestroy() {
    super.onDestroy();

    mCancel = null;
    mOk = null;
    mSelectAll = null;
    mDeselectAll = null;
    mInvertSelection = null;
    mRecyclerView = null;
    mAdapter = null;
  }
Exemplo n.º 4
0
    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
      if (isVideoFullScreen()) return;

      // get our facts straight
      int recyclerHeight = recyclerView.getHeight();
      Optional<Integer> scrollEstimate = estimateRecyclerViewScrollY(recyclerView);
      boolean viewerVisible = scrollEstimate.isPresent();

      int scrollY = scrollEstimate.or(viewer.getHeight());
      int viewerHeight = viewer.getHeight();
      boolean doFancyScroll = viewerHeight < recyclerHeight;

      ScrollHideToolbarListener toolbar = activity.getScrollHideToolbarListener();
      if (!doFancyScroll || dy < 0 || scrollY > toolbar.getToolbarHeight()) {
        toolbar.onScrolled(dy);
      }

      float scroll = doFancyScroll ? 0.7f * scrollY : scrollY;

      if (doFancyScroll) {
        int clipTop = (int) (scroll + 0.5f);
        int clipBottom = viewer.getHeight() - (int) (scrollY - scroll + 0.5f);

        if (clipTop < clipBottom) {
          viewer.setClipBoundsCompat(new Rect(0, clipTop, viewer.getRight(), clipBottom));
        } else {
          viewerVisible = false;
        }
      } else {
        // reset bounds. we might have set some previously and want
        // to clear those bounds now.
        viewer.setClipBoundsCompat(null);
      }

      offsetMediaView(viewerVisible, scroll);

      // position the vote indicator
      float remaining = viewerHeight - scrollY;
      int tbVisibleHeight = toolbar.getVisibleHeight();
      float voteIndicatorY =
          Math.min((remaining - tbVisibleHeight) / 2, (recyclerHeight - tbVisibleHeight) / 2)
              + tbVisibleHeight;

      voteAnimationIndicator.setTranslationY(voteIndicatorY);
    }
Exemplo n.º 5
0
  @OnOptionsItemSelected(R.id.action_zoom)
  public void enterFullscreen() {
    FragmentActivity activity = getActivity();
    if (activity == null) return;

    if (isStaticImage(feedItem)) {
      boolean hq = settings.loadHqInZoomView();
      Intent intent = ZoomViewActivity.newIntent(activity, feedItem, hq);
      startActivity(intent);

    } else {
      FullscreenParams params = new FullscreenParams();

      ObjectAnimator.ofPropertyValuesHolder(
              viewer,
              ofFloat(View.ROTATION, params.rotation),
              ofFloat(View.TRANSLATION_Y, params.trY),
              ofFloat(View.SCALE_X, params.scale),
              ofFloat(View.SCALE_Y, params.scale))
          .setDuration(500)
          .start();

      repostHint.setVisibility(View.GONE);

      // hide content below
      swipeRefreshLayout.setVisibility(View.GONE);

      if (activity instanceof ToolbarActivity) {
        // hide the toolbar if required necessary
        ((ToolbarActivity) activity).getScrollHideToolbarListener().hide();
      }

      viewer.setClipBoundsCompat(null);

      activity.supportInvalidateOptionsMenu();
      registerExitFullscreenListener();

      // forbid orientation changes while in fullscreen
      Screen.lockOrientation(activity);
    }
  }
  @Override
  public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scene_excluded_languages);
    setNavigationIcon(R.drawable.v_arrow_left_dark_x24);

    if (null == savedInstanceState) {
      onInit();
    } else {
      onRestore(savedInstanceState);
    }

    mCancel = ViewUtils.$$(this, R.id.cancel);
    mOk = ViewUtils.$$(this, R.id.ok);
    mSelectAll = ViewUtils.$$(this, R.id.select_all);
    mDeselectAll = ViewUtils.$$(this, R.id.deselect_all);
    mInvertSelection = ViewUtils.$$(this, R.id.invert_selection);
    mRecyclerView = (EasyRecyclerView) ViewUtils.$$(this, R.id.recycler_view);

    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setClipToPadding(false);
    mAdapter = new LanguageAdapter();
    mRecyclerView.setAdapter(mAdapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    mCancel.setOnClickListener(this);
    mOk.setOnClickListener(this);
    mSelectAll.setOnClickListener(this);
    mDeselectAll.setOnClickListener(this);
    mInvertSelection.setOnClickListener(this);

    Ripple.addRipple(mCancel, false);
    Ripple.addRipple(mOk, false);
    Ripple.addRipple(mSelectAll, false);
    Ripple.addRipple(mDeselectAll, false);
    Ripple.addRipple(mInvertSelection, false);
  }
 @Override
 protected void onPostCreate(Bundle savedInstanceState) {
   super.onPostCreate(savedInstanceState);
   trySetupSwipeRefresh();
 }
 @Override
 public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
   super.onCreate(savedInstanceState, persistentState);
   ButterKnife.bind(this);
 }
Exemplo n.º 9
0
  @Override
  public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    this.tabletLayout = view.findViewById(R.id.infoview) != null;

    if (!(getActivity() instanceof ToolbarActivity)) {
      throw new IllegalStateException("Fragment must be child of a ToolbarActivity.");
    }

    ToolbarActivity activity = (ToolbarActivity) getActivity();
    activity.getScrollHideToolbarListener().reset();

    int abHeight = AndroidUtility.getActionBarContentOffset(getActivity());
    if (tabletLayout) {
      View tabletLayout = ButterKnife.findById(view, R.id.tabletlayout);
      tabletLayout.setPadding(0, abHeight, 0, 0);

      ((FrameLayout.LayoutParams) voteAnimationIndicator.getLayoutParams()).gravity =
          Gravity.CENTER;

      scrollHandler = new NoopOnScrollListener();
    } else {
      // use height of the toolbar to configure swipe refresh layout.
      swipeRefreshLayout.setProgressViewOffset(false, 0, (int) (1.5 * abHeight));

      scrollHandler = new ScrollHandler(activity);
    }

    content.addOnScrollListener(scrollHandler);

    swipeRefreshLayout.setColorSchemeResources(R.color.primary);
    swipeRefreshLayout.setOnRefreshListener(
        () -> {
          if (!isVideoFullScreen()) {
            rewindOnLoad = true;
            loadPostDetails();
          }
        });

    swipeRefreshLayout.setKeepScreenOn(settings.keepScreenOn());

    adapter = new MergeRecyclerAdapter();
    content.setItemAnimator(null);
    content.setLayoutManager(new LinearLayoutManager(getActivity()));
    content.setAdapter(adapter);

    initializeMediaView();
    initializeInfoLine();
    initializeCommentPostLine();

    commentsAdapter = new CommentsAdapter(userService.getName().or(""));
    commentsAdapter.setCommentActionListener(this);
    commentsAdapter.setPrioritizeOpComments(settings.prioritizeOpComments());
    commentsAdapter.setShowFavCommentButton(userService.isAuthorized());
    adapter.addAdapter(commentsAdapter);

    // restore the postInfo, if possible.
    if (tags != null && comments != null) {
      displayTags(tags);
      displayComments(comments);
    }

    loadPostDetails();

    // show the repost badge if this is a repost
    repostHint.setVisibility(isRepost() ? View.VISIBLE : View.GONE);
  }
Exemplo n.º 10
0
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_movie);
    activateToolbar();

    context = this;

    Bundle extras = getIntent().getExtras();

    LOG_TAG = getBaseContext().getClass().getSimpleName();

    movieDescriptionTextView = (TextView) findViewById(R.id.MoviePageMovieDescription);
    movieNameTextView = (TextView) findViewById(R.id.MoviePageMovieName);
    movieImageImageView = (ImageView) findViewById(R.id.MoviePageMovieImage);
    movieGenresTextView = (TextView) findViewById(R.id.MoviePageMovieGenres);
    movieReleaseDateTextView = (TextView) findViewById(R.id.MoviePageReleaseDate);
    imdbScoreTextView = (TextView) findViewById(R.id.MoviePageIMDBScore);
    metascoreTextView = (TextView) findViewById(R.id.MoviePageMetascore);
    rtScoreTextView = (TextView) findViewById(R.id.MoviePageRottenTomatoesScore);

    final ParseUser currentUser = ParseUser.getCurrentUser();
    final String currentUserName = currentUser.getUsername();

    volleySingleton = VolleySingleton.getInstance();
    requestQueue = volleySingleton.getRequestQueue();

    if (extras != null) {

      movieName = extras.getString("movieName");
      movieId = extras.getInt("movieId");

      movieNameTextView.setText(movieName);

      // String requestURL = TMDB_API_URL_BASE + TMDB_API_URL_MOVIE + Integer.toString(movieId) +
      // TMDB_API_URL_API + TMDB_API_KEY;
      String requestURL = URLBuilder.getMovieWithIdURL(movieId);

      movieDescriptionTextView.setOnClickListener(
          new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              LayoutInflater inflater =
                  (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              View PopupDesc = inflater.inflate(R.layout.description_popup, null, false);
              pw =
                  new PopupWindow(
                      PopupDesc,
                      ViewGroup.LayoutParams.MATCH_PARENT,
                      ViewGroup.LayoutParams.MATCH_PARENT,
                      true);

              pw.showAtLocation(findViewById(R.id.MoviePageRelLay), Gravity.CENTER, 0, 0);
              PopupDescTextView = (TextView) PopupDesc.findViewById(R.id.popup_desc);
              PopupDescTextView.setText(movieDescriptionTextView.getText().toString());

              pwRelLay = (RelativeLayout) PopupDesc.findViewById(R.id.descPopupRelLay);
              AnimationUtils.PopupAnimate(pwRelLay, true);
              pwRelLay.setOnClickListener(
                  new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                      AnimationUtils.PopupAnimate(pwRelLay, false);
                      pw.dismiss();
                    }
                  });
            }
          });

      JsonObjectRequest movieRequest =
          new JsonObjectRequest(
              Request.Method.GET,
              requestURL,
              (JSONObject) null,
              new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                  try {
                    MovieInformation currentMovie =
                        new MovieInformation(response, MOVIE_CONSTRUCTOR_EXTENDED);
                    // String imageURL = TMDB_IMAGE_BASE_URL + TMDB_POSTER_SIZE_DEFAULT +
                    // response.getString(TMDB_POSTER_PATH);
                    if (!currentMovie.poster_path.isEmpty()) {
                      String imageURL = URLBuilder.getImageURL(currentMovie.poster_path);
                      Picasso.with(getBaseContext())
                          .load(imageURL)
                          .error(R.drawable.ic_action_user)
                          .into(movieImageImageView);
                    }

                    movieDescriptionTextView.setText(currentMovie.overview);

                    if (!currentMovie.release_date.isEmpty()) {
                      Date date = dateFormat.parse(currentMovie.release_date);
                    }

                    movieReleaseDateTextView.setText(currentMovie.release_date);

                    String genresText = "";
                    if (currentMovie.genres.size() > 0) {
                      genresText += GENRES.get(currentMovie.genres.get(0));

                      for (int i = 1; i < currentMovie.genres.size(); i++) {
                        genresText += ", ";
                        genresText += GENRES.get(currentMovie.genres.get(i));
                      }
                    }

                    movieGenresTextView.setText(genresText);

                    if (!currentMovie.imdbId.isEmpty()) {
                      String rtScoreURL =
                          URLBuilder.getRottenTomatoesResultWithIdURL(currentMovie.imdbId);

                      String omdbScoreURL = URLBuilder.getOmdbResultWithIdURL(currentMovie.imdbId);
                      Log.d(LOG_TAG, rtScoreURL);

                      final JsonObjectRequest rtScoreRequest =
                          new JsonObjectRequest(
                              Request.Method.GET,
                              rtScoreURL,
                              (JSONObject) null,
                              new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject response) {
                                  try {
                                    String possibleError = response.optString("error");

                                    if (possibleError.equals("")) {
                                      Log.d(LOG_TAG, Integer.toString(response.getInt("id")));
                                      JSONObject ratingObject =
                                          response.getJSONObject(ROTTEN_TOMATOES_RATINGS);
                                      double score =
                                          ratingObject.getInt(ROTTEN_TOMATOES_CRITICS_SCORE);
                                      score /= 10;
                                      String rtRating;
                                      if (score >= 0) {
                                        rtRating = Double.toString(score);
                                      } else {
                                        rtRating = "N/A";
                                      }

                                      rtScoreTextView.setText(rtRating);
                                    } else {
                                      rtScoreTextView.setText("N/A");
                                    }

                                  } catch (JSONException e) {
                                    e.printStackTrace();
                                  }
                                }
                              },
                              new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                  Log.d(LOG_TAG, "ERROR: " + error.getMessage());
                                }
                              });
                      requestQueue.add(rtScoreRequest);

                      JsonObjectRequest omdbScoreRequest =
                          new JsonObjectRequest(
                              Request.Method.GET,
                              omdbScoreURL,
                              (JSONObject) null,
                              new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject response) {
                                  try {
                                    String imdbRating = response.getString(OMDB_IMDB_RATING);
                                    imdbScoreTextView.setText(imdbRating);

                                    String metascore = response.getString(OMDB_METASCORE);
                                    if (!metascore.equals("N/A")) {
                                      double score = (double) Integer.parseInt(metascore);
                                      score /= 10;
                                      metascoreTextView.setText(Double.toString(score));
                                    } else {
                                      metascoreTextView.setText("N/A");
                                    }

                                  } catch (JSONException e) {
                                    e.printStackTrace();
                                  }
                                }
                              },
                              new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                  Log.d(LOG_TAG, "ERROR: " + error.getMessage());
                                }
                              });
                      requestQueue.add(omdbScoreRequest);
                    }

                  } catch (JSONException e) {
                    e.printStackTrace();
                  } catch (ParseException e) {
                    e.printStackTrace();
                  }
                }
              },
              new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                  Log.d(LOG_TAG, "ERROR: " + error.getMessage());
                }
              });
      requestQueue.add(movieRequest);
    }

    mPager = (ViewPager) findViewById(R.id.MoviePagePager);
    mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
    mTabs = (SlidingTabLayout) findViewById(R.id.MoviePageTabs);
    mTabs.setDistributeEvenly(true);
    mTabs.setViewPager(mPager);
  }
 @Override
 protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
   outState.putLong(KEY_SELECTIONS, saveSelectionsToLong());
 }
Exemplo n.º 12
0
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    replaceFragment(R.id.scaffold_content, getSettingsFragment());
  }