aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2016-09-02 23:03:13 +0200
committerChristian Schneppe <christian@pix-art.de>2016-09-02 23:03:13 +0200
commit939b8d1c757f38fc46b72adfe04a31e2813f2234 (patch)
tree8909cd04ad58cf3139ce8436f1a20b2959a25099
parent3a10b5c6b6aca64bf7d71e30e095a56e0b751b23 (diff)
rotate FullScreenViewer based on dimensions of content
-rw-r--r--src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java57
1 files changed, 51 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java b/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java
index 8d2df66f6..5d63cff77 100644
--- a/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ShowFullscreenMessageActivity.java
@@ -2,8 +2,11 @@ package de.pixart.messenger.ui;
import android.app.Activity;
import android.content.Intent;
+import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -29,14 +32,15 @@ import uk.co.senab.photoview.PhotoViewAttacher;
public class ShowFullscreenMessageActivity extends Activity {
- private ConversationActivity activity;
+ Integer oldOrientation = getRequestedOrientation();
PhotoView mImage;
FullscreenVideoLayout mVideo;
ImageView mFullscreenbutton;
Uri mFileUri;
File mFile;
ImageButton mFAB;
-
+ int height = 0;
+ int width = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -45,7 +49,7 @@ public class ShowFullscreenMessageActivity extends Activity {
layout.screenBrightness = 1;
getWindow().setAttributes(layout);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
- getWindow().addFlags(layout.FLAG_KEEP_SCREEN_ON);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getActionBar().hide();
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
@@ -59,7 +63,6 @@ public class ShowFullscreenMessageActivity extends Activity {
mImage = (PhotoView) findViewById(R.id.message_image_view);
mVideo = (FullscreenVideoLayout) findViewById(R.id.message_video_view);
mFullscreenbutton = (ImageView) findViewById(R.id.vcv_img_fullscreen);
-
mFAB = (ImageButton) findViewById(R.id.imageButton);
mFAB.setOnClickListener(new View.OnClickListener() {
@Override
@@ -95,7 +98,6 @@ public class ShowFullscreenMessageActivity extends Activity {
protected void onStart() {
super.onStart();
Intent intent = getIntent();
-
if (intent != null) {
if (intent.hasExtra("image")) {
mFileUri = intent.getParcelableExtra("image");
@@ -117,6 +119,24 @@ public class ShowFullscreenMessageActivity extends Activity {
}
private void DisplayImage(File file) {
+ BitmapFactory.Options options = new BitmapFactory.Options();
+ options.inJustDecodeBounds = true;
+ BitmapFactory.decodeFile(new File(file.getPath()).getAbsolutePath(), options);
+ height = options.outHeight;
+ width = options.outWidth;
+ if (width >= height) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE);
+ } else {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+ } else {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
+ } else {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ }
+ }
final PhotoViewAttacher mAttacher = new PhotoViewAttacher(mImage);
mImage.setVisibility(View.VISIBLE);
try {
@@ -136,6 +156,23 @@ public class ShowFullscreenMessageActivity extends Activity {
}
private void DisplayVideo(Uri uri) {
+ MediaMetadataRetriever retriever = new MediaMetadataRetriever();
+ retriever.setDataSource(uri.getPath());
+ height = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
+ width = Integer.valueOf(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
+ if (width >= height) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE);
+ } else {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+ } else {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT);
+ } else {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ }
+ }
try {
mVideo.setVisibility(View.VISIBLE);
mVideo.setVideoURI(uri);
@@ -163,14 +200,22 @@ public class ShowFullscreenMessageActivity extends Activity {
@Override
protected void onPause() {
mVideo.reset();
+ WindowManager.LayoutParams layout = getWindow().getAttributes();
+ layout.screenBrightness = -1;
+ getWindow().setAttributes(layout);
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ setRequestedOrientation(oldOrientation);
super.onPause();
}
+ @Override
public void onStop () {
+ mVideo.reset();
WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = -1;
getWindow().setAttributes(layout);
- getWindow().clearFlags(layout.FLAG_KEEP_SCREEN_ON);
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ setRequestedOrientation(oldOrientation);
super.onStop();
}
} \ No newline at end of file