package de.danoeh.antennapod.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.glide.ApGlideSettings; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackController; /** * Displays the cover and the title of a FeedItem. */ public class CoverFragment extends Fragment { private static final String TAG = "CoverFragment"; private View root; private TextView txtvPodcastTitle; private TextView txtvEpisodeTitle; private ImageView imgvCover; private PlaybackController controller; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setRetainInstance(true); root = inflater.inflate(R.layout.cover_fragment, container, false); txtvPodcastTitle = root.findViewById(R.id.txtvPodcastTitle); txtvEpisodeTitle = root.findViewById(R.id.txtvEpisodeTitle); imgvCover = root.findViewById(R.id.imgvCover); return root; } private void loadMediaInfo() { Playable media = controller.getMedia(); if (media == null) { Log.w(TAG, "loadMediaInfo was called while media was null"); return; } txtvPodcastTitle.setText(media.getFeedTitle()); txtvEpisodeTitle.setText(media.getEpisodeTitle()); Glide.with(this) .load(media.getImageLocation()) .apply(new RequestOptions() .diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY) .dontAnimate() .fitCenter()) .into(imgvCover); } @Override public void onDestroy() { super.onDestroy(); // prevent memory leaks root = null; } @Override public void onStart() { super.onStart(); controller = new PlaybackController(getActivity(), false) { @Override public boolean loadMediaInfo() { if (getMedia() == null) { return false; } CoverFragment.this.loadMediaInfo(); return true; } }; controller.init(); loadMediaInfo(); } @Override public void onStop() { super.onStop(); controller.release(); controller = null; } }