diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 7593188b7..d01299625 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.fragment; +import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.TextUtils; @@ -8,9 +9,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; + import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; + import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.FitCenter; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; @@ -47,6 +52,7 @@ public class CoverFragment extends Fragment { private Disposable disposable; private int displayedChapterIndex = -2; private Playable media; + private int orientation = Configuration.ORIENTATION_UNDEFINED; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -60,6 +66,11 @@ public class CoverFragment extends Fragment { return root; } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + configureForOrientation(getResources().getConfiguration().orientation); + } + private void loadMediaInfo() { if (disposable != null) { disposable.dispose(); @@ -72,12 +83,12 @@ public class CoverFragment extends Fragment { emitter.onComplete(); } }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(media -> { - this.media = media; - displayMediaInfo(media); - }, error -> Log.e(TAG, Log.getStackTraceString(error))); + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(media -> { + this.media = media; + displayMediaInfo(media); + }, error -> Log.e(TAG, Log.getStackTraceString(error))); } private void displayMediaInfo(@NonNull Playable media) { @@ -159,6 +170,31 @@ public class CoverFragment extends Fragment { } } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + if (orientation != newConfig.orientation) { + orientation = newConfig.orientation; + configureForOrientation(orientation); + } + } + + private void configureForOrientation(int orientation) { + View textContainer = getView().findViewById(R.id.cover_fragment_text_container); + LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); + LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) textContainer.getLayoutParams(); + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + mainContainer.setOrientation(LinearLayout.VERTICAL); + params.weight = 0; + } else { + mainContainer.setOrientation(LinearLayout.HORIZONTAL); + params.weight = 1; + } + textContainer.setLayoutParams(params); + } + @Override public void onDestroyView() { super.onDestroyView(); |