Java tutorial
package tech.salroid.filmy.activities; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.PorterDuff; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.LoaderManager; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v7.app.AppCompatActivity; import android.support.v7.graphics.Palette; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.google.android.youtube.player.YouTubeStandalonePlayer; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.Arrays; import java.util.HashMap; import butterknife.BindView; import butterknife.ButterKnife; import tech.salroid.filmy.R; import tech.salroid.filmy.animations.RevealAnimation; import tech.salroid.filmy.customs.BreathingProgress; import tech.salroid.filmy.database.FilmContract; import tech.salroid.filmy.database.MovieDetailsUpdation; import tech.salroid.filmy.database.MovieLoaders; import tech.salroid.filmy.database.MovieProjection; import tech.salroid.filmy.database.OfflineMovies; import tech.salroid.filmy.fragment.AllTrailerFragment; import tech.salroid.filmy.fragment.CastFragment; import tech.salroid.filmy.fragment.CrewFragment; import tech.salroid.filmy.fragment.FullReadFragment; import tech.salroid.filmy.fragment.SimilarFragment; import tech.salroid.filmy.network_stuff.GetDataFromNetwork; import tech.salroid.filmy.utility.Confirmation; import tech.salroid.filmy.utility.Constants; import tech.salroid.filmy.utility.NullChecker; /* * Filmy Application for Android * Copyright (c) 2016 Sajal Gupta (http://github.com/salroid). * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ public class MovieDetailsActivity extends AppCompatActivity implements View.OnClickListener, LoaderManager.LoaderCallbacks<Cursor>, GetDataFromNetwork.DataFetchedListener, CastFragment.GotCrewListener { @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.detail_title) TextView det_title; @BindView(R.id.detail_tagline) TextView det_tagline; @BindView(R.id.detail_overview) TextView det_overview; @BindView(R.id.tmdbRating) TextView det_rating; @BindView(R.id.tomatoRating) TextView tomato_rating; @BindView(R.id.flixterRating) TextView flixter_rating; @BindView(R.id.metaRating) TextView meta_rating; @BindView(R.id.imdbRating) TextView rating_of_imdb; @BindView(R.id.metaRatingView) TextView metascore_setter; @BindView(R.id.detail_released) TextView det_released; @BindView(R.id.detail_certification) TextView det_certification; @BindView(R.id.detail_runtime) TextView det_runtime; @BindView(R.id.detail_language) TextView det_language; @BindView(R.id.detail_youtube) ImageView youtube_link; @BindView(R.id.backdrop) ImageView banner; @BindView(R.id.play_button) ImageView youtube_play_button; @BindView(R.id.tomatoRating_image) ImageView tomatoRating_image; @BindView(R.id.flixterRating_image) ImageView flixterRating_image; @BindView(R.id.breathingProgress) BreathingProgress breathingProgress; @BindView(R.id.trailorBackground) LinearLayout trailorBackground; @BindView(R.id.youtube_icon) ImageView youtubeIcon; @BindView(R.id.trailorView) FrameLayout trailorView; @BindView(R.id.new_main) FrameLayout newMain; @BindView(R.id.all_details_container) FrameLayout main_content; @BindView(R.id.header_container) FrameLayout headerContainer; @BindView(R.id.main) RelativeLayout main; @BindView(R.id.metaRating_background) RelativeLayout metaRating_background; @BindView(R.id.header) LinearLayout header; @BindView(R.id.extraDetails) RelativeLayout extraDetails; @BindView(R.id.ratingBar) RelativeLayout ratingBar; @BindView(R.id.cast_divider) View castDivider; @BindView(R.id.layout_imdb) LinearLayout layout_imdb; @BindView(R.id.layout_flixi) LinearLayout layout_flixi; @BindView(R.id.layout_meta) LinearLayout layout_meta; @BindView(R.id.layout_tmdb) LinearLayout layout_tmdb; @BindView(R.id.layout_tomato) LinearLayout layout_tomato; Context context = this; String[] trailer_array; String[] trailer_array_name; FullReadFragment fullReadFragment; AllTrailerFragment allTrailerFragment; HashMap<String, String> movieMap; boolean networkApplicable, databaseApplicable, savedDatabaseApplicable, trailer_boolean = false; int type; private String movie_id; private String trailor = null; private String trailer = null; private String movie_desc; private String quality; private String movie_tagline; private String movie_rating; private String movie_rating_tmdb; private String show_centre_img_url; private String movie_title; private String movie_id_final; private CastFragment castFragment; private boolean nightMode; private String movie_imdb_id; private CrewFragment crewFragment; private SimilarFragment similarFragment; private String movie_rating_audience; private String movie_rating_metascore; @Override protected void onCreate(Bundle savedInstanceState) { SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); nightMode = sp.getBoolean("dark", false); if (nightMode) setTheme(R.style.DetailsActivityThemeDark); else setTheme(R.style.DetailsActivityTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_detailed); ButterKnife.bind(this); if (!nightMode) allThemeLogic(); else { nightModeLogic(); castDivider.setVisibility(View.GONE); } setSupportActionBar(toolbar); if (getSupportActionBar() != null) getSupportActionBar().setDisplayHomeAsUpEnabled(true); SharedPreferences prefrence = PreferenceManager.getDefaultSharedPreferences(MovieDetailsActivity.this); quality = prefrence.getString("image_quality", "w1000"); headerContainer.setOnClickListener(this); newMain.setOnClickListener(this); trailorView.setOnClickListener(this); youtubeIcon.setOnClickListener(this); Intent intent = getIntent(); getDataFromIntent(intent); if (savedInstanceState == null) { RevealAnimation.performReveal(main_content); performDataFetching(); } showCastFragment(); showCrewFragment(); showSimilarFragment(); } private void nightModeLogic() { main_content.setBackgroundColor(Color.parseColor("#212121")); headerContainer.setBackgroundColor(Color.parseColor("#212121")); extraDetails.setBackgroundColor(Color.parseColor("#212121")); ratingBar.setBackgroundColor(Color.parseColor("#212121")); } private void allThemeLogic() { main_content.setBackgroundColor(Color.parseColor("#f5f5f5")); headerContainer.setBackgroundColor(getResources().getColor(R.color.primaryColor)); extraDetails.setBackgroundColor(getResources().getColor(R.color.primaryColor)); ratingBar.setBackgroundColor(getResources().getColor(R.color.primaryColor)); } @Override protected void onResume() { super.onResume(); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); boolean nightModeNew = sp.getBoolean("dark", false); if (nightMode != nightModeNew) recreate(); performDataFetching(); /* showCastFragment(); //TODO :: salroid finds it un-necessary showCrewFragment(); showSimilarFragment();*/ } private void performDataFetching() { GetDataFromNetwork getStuffFromNetwork = new GetDataFromNetwork(); getStuffFromNetwork.setDataFetchedListener(this); if (networkApplicable) getStuffFromNetwork.getMovieDetailsFromNetwork(movie_id); if (databaseApplicable) getSupportLoaderManager().initLoader(MovieLoaders.MOVIE_DETAILS_LOADER, null, this); if (savedDatabaseApplicable) getSupportLoaderManager().initLoader(MovieLoaders.SAVED_MOVIE_DETAILS_LOADER, null, this); if (!databaseApplicable && !savedDatabaseApplicable) { main.setVisibility(View.INVISIBLE); breathingProgress.setVisibility(View.VISIBLE); } } private void getDataFromIntent(Intent intent) { if (intent != null) { networkApplicable = intent.getBooleanExtra("network_applicable", false); databaseApplicable = intent.getBooleanExtra("database_applicable", false); savedDatabaseApplicable = intent.getBooleanExtra("saved_database_applicable", false); type = intent.getIntExtra("type", 0); movie_id = intent.getStringExtra("id"); movie_title = intent.getStringExtra("title"); } } private void showCastFragment() { castFragment = CastFragment.newInstance(null, movie_title); getSupportFragmentManager().beginTransaction().replace(R.id.cast_container, castFragment).commit(); castFragment.setGotCrewListener(this); } private void showCrewFragment() { crewFragment = CrewFragment.newInstance(null, movie_title); getSupportFragmentManager().beginTransaction().replace(R.id.crew_container, crewFragment).commit(); } private void showSimilarFragment() { similarFragment = SimilarFragment.newInstance(null, movie_title); getSupportFragmentManager().beginTransaction().replace(R.id.similar_container, similarFragment).commit(); } void parseMovieDetails(String movieDetails) { String title, tagline, overview, banner_profile, runtime, language, released, poster, img_url = null, get_poster_path_from_json, get_banner_from_json; try { JSONObject jsonObject = new JSONObject(movieDetails); title = jsonObject.getString("title"); tagline = jsonObject.getString("tagline"); overview = jsonObject.getString("overview"); released = jsonObject.getString("release_date"); runtime = jsonObject.getString("runtime") + " mins"; language = jsonObject.getString("original_language"); movie_id_final = jsonObject.getString("id"); movie_imdb_id = jsonObject.getString("imdb_id"); movie_rating_tmdb = jsonObject.getString("vote_average"); if (!(tagline.equals(""))) det_tagline.setVisibility(View.VISIBLE); if (castFragment != null) castFragment.getCastFromNetwork(movie_id_final); if (similarFragment != null) similarFragment.getSimilarFromNetwork(movie_id_final); Rating.getRating(context, movie_imdb_id); //poster and banner get_poster_path_from_json = jsonObject.getString("poster_path"); get_banner_from_json = jsonObject.getString("backdrop_path"); poster = getResources().getString(R.string.poster_prefix_185) + get_poster_path_from_json; String banner_for_full_activity; String poster_prefix_500 = getResources().getString(R.string.poster_prefix_500); String poster_prefix_add_quality = getResources().getString(R.string.poster_prefix_add_quality); if (!get_banner_from_json.equals("null")) { banner_profile = poster_prefix_500 + get_banner_from_json; banner_for_full_activity = poster_prefix_add_quality + quality + get_banner_from_json; } else { banner_profile = poster_prefix_500 + get_poster_path_from_json; banner_for_full_activity = poster_prefix_add_quality + quality + get_poster_path_from_json; } //trailer JSONObject trailorsObject = jsonObject.getJSONObject("trailers"); JSONArray youTubeArray = trailorsObject.getJSONArray("youtube"); trailer_array = new String[youTubeArray.length()]; trailer_array_name = new String[youTubeArray.length()]; if (youTubeArray.length() != 0) { Boolean main_trailer = true; for (int i = 0; i < youTubeArray.length(); i++) { JSONObject singleTrailor = youTubeArray.getJSONObject(i); trailer_array[i] = singleTrailor.getString("source"); trailer_array_name[i] = singleTrailor.getString("name"); String type = singleTrailor.getString("type"); if (main_trailer) { if (type.equals("Trailer")) { trailor = singleTrailor.getString("source"); main_trailer = false; } else trailor = youTubeArray.getJSONObject(0).getString("source"); } } trailer = getResources().getString(R.string.trailer_link_prefix) + trailor; } else trailer = null; //genre String genre = ""; JSONArray genreArray = jsonObject.getJSONArray("genres"); for (int i = 0; i < genreArray.length(); i++) { if (i > 3) break; String finalgenre = genreArray.getJSONObject(i).getString("name"); String punctuation = ", "; if (i == genre.length()) punctuation = ""; genre = genre + punctuation + finalgenre; } movie_desc = overview; movie_title = title; movie_tagline = tagline; show_centre_img_url = banner_for_full_activity; movieMap = new HashMap<>(); movieMap.put("imdb_id", movie_id_final); movieMap.put("title", movie_title); movieMap.put("tagline", tagline); movieMap.put("overview", overview); movieMap.put("rating", movie_rating); movieMap.put("certification", genre); movieMap.put("language", language); movieMap.put("released", released); movieMap.put("runtime", runtime); movieMap.put("trailer", trailer); movieMap.put("banner", banner_profile); movieMap.put("poster", poster); try { if (trailor != null) { trailer_boolean = true; // String videoId = extractYoutubeId(trailer); img_url = getResources().getString(R.string.trailer_img_prefix) + trailor + getResources().getString(R.string.trailer_img_suffix); } else { img_url = getResources().getString(R.string.poster_prefix_185) + jsonObject.getString("poster_path"); } movieMap.put("trailer_img", img_url); } catch (Exception e) { e.printStackTrace(); } finally { if (databaseApplicable) MovieDetailsUpdation.performMovieDetailsUpdation(MovieDetailsActivity.this, type, movieMap, movie_id); else showParsedContent(title, banner_profile, img_url, tagline, overview, movie_rating, runtime, released, genre, language); } } catch (JSONException e) { e.printStackTrace(); } } private void showParsedContent(String title, String banner_profile, String img_url, String tagline, String overview, String rating, String runtime, String released, String certification, String language) { det_tagline.setText(tagline); det_title.setText(title); det_overview.setText(overview); // det_rating.setText(rating); det_runtime.setText(runtime); det_released.setText(released); det_certification.setText(certification); det_language.setText(language); try { Glide.with(context).load(banner_profile).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { banner.setImageBitmap(resource); Palette.from(resource).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette p) { // Use generated instance Palette.Swatch swatch = p.getVibrantSwatch(); Palette.Swatch trailorSwatch = p.getDarkVibrantSwatch(); if (swatch != null) { header.setBackgroundColor(swatch.getRgb()); det_title.setTextColor(swatch.getTitleTextColor()); det_tagline.setTextColor(swatch.getBodyTextColor()); det_overview.setTextColor(swatch.getBodyTextColor()); } if (trailorSwatch != null) { trailorBackground.setBackgroundColor(trailorSwatch.getRgb()); youtubeIcon.setColorFilter(trailorSwatch.getBodyTextColor(), PorterDuff.Mode.SRC_IN); } } }); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } try { Glide.with(context).load(img_url).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { youtube_link.setImageBitmap(resource); if (trailer_boolean) youtube_play_button.setVisibility(View.VISIBLE); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } main.setVisibility(View.VISIBLE); breathingProgress.setVisibility(View.INVISIBLE); } @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { CursorLoader cursorloader = null; if (id == MovieLoaders.MOVIE_DETAILS_LOADER) { switch (type) { case 0: cursorloader = new CursorLoader(this, FilmContract.MoviesEntry.buildMovieWithMovieId(movie_id), MovieProjection.GET_MOVIE_COLUMNS, null, null, null); break; case 1: cursorloader = new CursorLoader(this, FilmContract.InTheatersMoviesEntry.buildMovieWithMovieId(movie_id), MovieProjection.GET_MOVIE_COLUMNS, null, null, null); break; case 2: cursorloader = new CursorLoader(this, FilmContract.UpComingMoviesEntry.buildMovieWithMovieId(movie_id), MovieProjection.GET_MOVIE_COLUMNS, null, null, null); break; } } else if (id == MovieLoaders.SAVED_MOVIE_DETAILS_LOADER) { final String selection = FilmContract.SaveEntry.TABLE_NAME + "." + FilmContract.SaveEntry.SAVE_ID + " = ? "; String[] selectionArgs = { movie_id }; cursorloader = new CursorLoader(this, FilmContract.SaveEntry.CONTENT_URI, MovieProjection.GET_SAVE_COLUMNS, selection, selectionArgs, null); } return cursorloader; } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { int id = loader.getId(); if (id == MovieLoaders.MOVIE_DETAILS_LOADER) { fetchMovieDetailsFromCursor(data); } else if (id == MovieLoaders.SAVED_MOVIE_DETAILS_LOADER) { fetchSavedMovieDetailsFromCursor(data); } } private void fetchSavedMovieDetailsFromCursor(Cursor data) { if (data != null && data.moveToFirst()) { int title_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_TITLE); int banner_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_BANNER); int tagline_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_TAGLINE); int description_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_DESCRIPTION); int trailer_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_TRAILER); int rating_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_RATING); int released_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_RATING); int runtime_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_RUNTIME); int language_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_LANGUAGE); int certification_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_CERTIFICATION); int id_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_ID); int poster_link_index = data.getColumnIndex(FilmContract.SaveEntry.SAVE_POSTER_LINK); String title = data.getString(title_index); String banner_url = data.getString(banner_index); String tagline = data.getString(tagline_index); String overview = data.getString(description_index); //as it will be used to show it on YouTube trailer = data.getString(trailer_index); String posterLink = data.getString(poster_link_index); String rating = (data.getString(rating_index)); String runtime = data.getString(runtime_index); String released = data.getString(released_index); String certification = data.getString(certification_index); String language = data.getString(language_index); movie_id_final = data.getString(id_index); det_tagline.setText(tagline); det_title.setText(title); det_overview.setText(overview); // det_rating.setText(rating); det_runtime.setText(runtime); det_released.setText(released); det_certification.setText(certification); det_language.setText(language); movie_desc = overview; show_centre_img_url = banner_url; try { Glide.with(context).load(banner_url).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { banner.setImageBitmap(resource); Palette.from(resource).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette p) { // Use generated instance Palette.Swatch swatch = p.getVibrantSwatch(); Palette.Swatch trailorSwatch = p.getDarkVibrantSwatch(); if (swatch != null) { header.setBackgroundColor(swatch.getRgb()); det_title.setTextColor(swatch.getTitleTextColor()); det_tagline.setTextColor(swatch.getBodyTextColor()); det_overview.setTextColor(swatch.getBodyTextColor()); } if (trailorSwatch != null) { trailorBackground.setBackgroundColor(trailorSwatch.getRgb()); youtubeIcon.setColorFilter(trailorSwatch.getBodyTextColor(), PorterDuff.Mode.SRC_IN); } } }); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } String thumbNail = null; if ((trailor != null)) { trailer_boolean = true; thumbNail = getResources().getString(R.string.trailer_img_prefix) + trailor + getResources().getString(R.string.trailer_img_prefix); } else { thumbNail = posterLink; } try { Glide.with(context).load(thumbNail).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { youtube_link.setImageBitmap(resource); if (trailer_boolean) youtube_play_button.setVisibility(View.VISIBLE); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } } } private void fetchMovieDetailsFromCursor(Cursor data) { if (data != null && data.moveToFirst()) { int title_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_TITLE); int banner_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_BANNER); int tagline_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_TAGLINE); int description_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_DESCRIPTION); int trailer_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_TRAILER); int rating_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_RATING); int released_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_RELEASED); int runtime_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_RUNTIME); int language_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_LANGUAGE); int certification_index = data.getColumnIndex(FilmContract.MoviesEntry.MOVIE_CERTIFICATION); String title = data.getString(title_index); String banner_url = data.getString(banner_index); String tagline = data.getString(tagline_index); String overview = data.getString(description_index); String trailer = data.getString(trailer_index); String rating = data.getString(rating_index); String runtime = data.getString(runtime_index); String released = data.getString(released_index); String certification = data.getString(certification_index); String language = data.getString(language_index); if (NullChecker.isSettable(title)) det_title.setText(title); if (NullChecker.isSettable(tagline)) det_tagline.setText(tagline); if (NullChecker.isSettable(overview)) det_overview.setText(overview); if (runtime != null && !runtime.equals("null mins")) det_runtime.setText(runtime); if (NullChecker.isSettable(released)) det_released.setText(released); if (NullChecker.isSettable(certification)) det_certification.setText(certification); if (NullChecker.isSettable(language)) det_language.setText(language); try { Glide.with(context).load(banner_url).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { banner.setImageBitmap(resource); Palette.from(resource).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette p) { Palette.Swatch swatch = p.getVibrantSwatch(); Palette.Swatch trailorSwatch = p.getDarkVibrantSwatch(); if (swatch != null) { header.setBackgroundColor(swatch.getRgb()); det_title.setTextColor(swatch.getTitleTextColor()); det_tagline.setTextColor(swatch.getBodyTextColor()); det_overview.setTextColor(swatch.getBodyTextColor()); } if (trailorSwatch != null) { trailorBackground.setBackgroundColor(trailorSwatch.getRgb()); youtubeIcon.setColorFilter(trailorSwatch.getBodyTextColor(), PorterDuff.Mode.SRC_IN); } } }); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } try { Glide.with(context).load(trailer).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE) .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { youtube_link.setImageBitmap(resource); if (trailer_boolean) youtube_play_button.setVisibility(View.VISIBLE); } }); } catch (Exception e) { //Log.d(LOG_TAG, e.getMessage()); } } } @Override public void onLoaderReset(Loader<Cursor> loader) { } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); if (type == -1) startActivity(new Intent(this, MainActivity.class)); break; case R.id.action_share: shareMovie(); break; case R.id.action_save: OfflineMovies offlineMovies = new OfflineMovies(this); offlineMovies.saveMovie(movieMap, movie_id, movie_id_final, Constants.FLAG_OFFLINE); break; case R.id.action_fav: Confirmation.confirmFav(this, movieMap, movie_id, movie_id_final, Constants.FLAG_FAVORITE); break; case R.id.action_watch: Confirmation.confirmWatchlist(this, movieMap, movie_id, movie_id_final, Constants.FLAG_WATCHLIST); break; default: break; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { if (getFragmentManager().getBackStackEntryCount() == 0) { super.onBackPressed(); } else { getFragmentManager().popBackStack(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.movie_detail_menu, menu); menu.findItem(R.id.action_save).setVisible(!savedDatabaseApplicable); return true; } @Override public void onClick(View view) { switch (view.getId()) { case R.id.header_container: if (movie_title != null && movie_desc != null) { fullReadFragment = new FullReadFragment(); Bundle args = new Bundle(); args.putString("title", movie_title); args.putString("desc", movie_desc); fullReadFragment.setArguments(args); getSupportFragmentManager().beginTransaction().replace(R.id.all_details_container, fullReadFragment) .addToBackStack("DESC").commit(); } break; case R.id.new_main: if (!(show_centre_img_url == null)) { Intent intent = new Intent(MovieDetailsActivity.this, FullScreenImage.class); intent.putExtra("img_url", show_centre_img_url); startActivity(intent); } break; case R.id.trailorView: if ((trailer_boolean)) startActivity(YouTubeStandalonePlayer.createVideoIntent(MovieDetailsActivity.this, getString(R.string.Youtube_Api_Key), trailor)); break; case R.id.youtube_icon: if (trailer_boolean) { allTrailerFragment = new AllTrailerFragment(); // Log.d(TAG, "onClick: "+ Arrays.toString(trailer_array)); Bundle args = new Bundle(); args.putString("title", movie_title); args.putStringArray("trailers", trailer_array); args.putStringArray("trailers_name", trailer_array_name); allTrailerFragment.setArguments(args); getSupportFragmentManager().beginTransaction() .replace(R.id.all_details_container, allTrailerFragment).addToBackStack("TRAILER").commit(); } break; } } @Override public void dataFetched(String response, int code) { switch (code) { case GetDataFromNetwork.MOVIE_DETAILS_CODE: parseMovieDetails(response); // showCastFragment();% break; case GetDataFromNetwork.CAST_CODE: break; } } private void shareMovie() { String movie_imdb = getResources().getString(R.string.imdb_link_prefix) + movie_imdb_id; if (!(movie_title == null && movie_rating.equals("null") && movie_imdb_id.equals("null"))) { Intent myIntent = new Intent(Intent.ACTION_SEND); myIntent.setType("text/plain"); myIntent.putExtra(Intent.EXTRA_TEXT, "*" + movie_title + "*\n" + movie_tagline + "\n" + movie_imdb + "\n"); startActivity(Intent.createChooser(myIntent, "Share with")); } } @Override protected void onStop() { super.onStop(); castFragment = null; similarFragment = null; } @Override public void gotCrew(String crewData) { if (crewFragment != null) crewFragment.crew_parseOutput(crewData); } public void setRating(String movie_rating_imdb, String movie_rating_tomatometer, String audience_rating, String metascore_rating, String image) { movie_rating_audience = audience_rating; movie_rating_metascore = metascore_rating; if (movie_rating_imdb.equals("N/A")) layout_imdb.setVisibility(View.GONE); else rating_of_imdb.setText(movie_rating_imdb); if (movie_rating_tomatometer.equals("N/A")) layout_tomato.setVisibility(View.GONE); else { if (image.equals("certified")) tomatoRating_image.setImageDrawable(getResources().getDrawable(R.drawable.certified)); else if (image.equals("fresh")) tomatoRating_image.setImageDrawable(getResources().getDrawable(R.drawable.fresh)); else if (image.equals("rotten")) tomatoRating_image.setImageDrawable(getResources().getDrawable(R.drawable.rotten)); tomato_rating.setText(movie_rating_tomatometer); } if (movie_rating_audience.equals("N/A")) layout_flixi.setVisibility(View.GONE); else { float audi_rating = Float.valueOf(audience_rating); if (audi_rating > 3.4) flixterRating_image.setImageDrawable(getResources().getDrawable(R.drawable.popcorn)); else flixterRating_image.setImageDrawable(getResources().getDrawable(R.drawable.spilt)); flixter_rating.setText(movie_rating_audience); } if (movie_rating_metascore.equals("N/A")) layout_meta.setVisibility(View.GONE); else { int metasco_rating = Integer.valueOf(metascore_rating); if (metasco_rating > 60) metaRating_background.setBackgroundColor(Color.parseColor("#66cc33")); else if (metasco_rating > 40 && metasco_rating < 61) metaRating_background.setBackgroundColor(Color.parseColor("#ffcc33")); else metaRating_background.setBackgroundColor(Color.parseColor("#ff0000")); meta_rating.setText(movie_rating_metascore); metascore_setter.setText(movie_rating_metascore); } if (movie_rating_tmdb.equals("0")) layout_tmdb.setVisibility(View.GONE); else det_rating.setText(movie_rating_tmdb); } }