From 0667d87faebec0a111ecc803e7dd50b9ade8d566 Mon Sep 17 00:00:00 2001 From: Mattia Iavarone Date: Fri, 29 Sep 2017 01:06:25 +0200 Subject: [PATCH] Refactor preview activities --- .../cameraview/demo/MessageView.java | 50 +++++ .../demo/PicturePreviewActivity.java | 31 +-- .../cameraview/demo/VideoPreviewActivity.java | 8 +- demo/src/main/res/drawable/background.xml | 2 +- .../res/layout/activity_picture_preview.xml | 183 ++---------------- .../res/layout/activity_video_preview.xml | 51 +---- demo/src/main/res/layout/control_view.xml | 2 +- demo/src/main/res/values/colors.xml | 2 +- 8 files changed, 101 insertions(+), 228 deletions(-) create mode 100644 demo/src/main/java/com/otaliastudios/cameraview/demo/MessageView.java diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/MessageView.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/MessageView.java new file mode 100644 index 00000000..d123ceea --- /dev/null +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/MessageView.java @@ -0,0 +1,50 @@ +package com.otaliastudios.cameraview.demo; + + +import android.content.Context; +import android.support.annotation.Nullable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.LinearLayout; +import android.widget.Spinner; +import android.widget.TextView; + +import com.otaliastudios.cameraview.CameraView; + +import java.util.ArrayList; + +public class MessageView extends LinearLayout { + + private TextView message; + private TextView title; + + public MessageView(Context context) { + this(context, null); + } + + public MessageView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public MessageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + setOrientation(VERTICAL); + inflate(context, R.layout.control_view, this); + ViewGroup content = findViewById(R.id.content); + inflate(context, R.layout.spinner_text, content); + title = findViewById(R.id.title); + message = (TextView) content.getChildAt(0); + } + + public void setTitle(String title) { + this.title.setText(title); + } + + public void setMessage(String message) { + this.message.setText(message); + } +} diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java index 1333f33d..4770fdca 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/PicturePreviewActivity.java @@ -15,12 +15,6 @@ import java.lang.ref.WeakReference; public class PicturePreviewActivity extends Activity { - ImageView imageView; - TextView nativeCaptureResolution; - TextView actualResolution; - TextView approxUncompressedSize; - TextView captureLatency; - private static WeakReference image; public static void setImage(@Nullable byte[] im) { @@ -31,11 +25,11 @@ public class PicturePreviewActivity extends Activity { protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_picture_preview); - imageView = findViewById(R.id.image); - nativeCaptureResolution = findViewById(R.id.nativeCaptureResolution); - actualResolution = findViewById(R.id.actualResolution); - approxUncompressedSize = findViewById(R.id.approxUncompressedSize); - captureLatency = findViewById(R.id.captureLatency); + final ImageView imageView = findViewById(R.id.image); + final MessageView nativeCaptureResolution = findViewById(R.id.nativeCaptureResolution); + final MessageView actualResolution = findViewById(R.id.actualResolution); + final MessageView approxUncompressedSize = findViewById(R.id.approxUncompressedSize); + final MessageView captureLatency = findViewById(R.id.captureLatency); final long delay = getIntent().getLongExtra("delay", 0); final int nativeWidth = getIntent().getIntExtra("nativeWidth", 0); @@ -50,14 +44,21 @@ public class PicturePreviewActivity extends Activity { @Override public void onBitmapReady(Bitmap bitmap) { imageView.setImageBitmap(bitmap); - approxUncompressedSize.setText(getApproximateFileMegabytes(bitmap) + "MB"); - captureLatency.setText(delay + " milliseconds"); + + approxUncompressedSize.setTitle("Approx. uncompressed size"); + approxUncompressedSize.setMessage(getApproximateFileMegabytes(bitmap) + "MB"); + + captureLatency.setTitle("Capture latency"); + captureLatency.setMessage(delay + " milliseconds"); // ncr and ar might be different when cropOutput is true. AspectRatio nativeRatio = AspectRatio.of(nativeWidth, nativeHeight); AspectRatio finalRatio = AspectRatio.of(bitmap.getWidth(), bitmap.getHeight()); - nativeCaptureResolution.setText(nativeWidth + "x" + nativeHeight + " (" + nativeRatio + ")"); - actualResolution.setText(bitmap.getWidth() + "x" + bitmap.getHeight() + " (" + finalRatio + ")"); + nativeCaptureResolution.setTitle("Native capture resolution"); + nativeCaptureResolution.setMessage(nativeWidth + "x" + nativeHeight + " (" + nativeRatio + ")"); + + actualResolution.setTitle("Actual resolution"); + actualResolution.setMessage(bitmap.getWidth() + "x" + bitmap.getHeight() + " (" + finalRatio + ")"); } }); diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java index 06409df0..59a870d9 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/VideoPreviewActivity.java @@ -14,8 +14,7 @@ import android.widget.VideoView; public class VideoPreviewActivity extends Activity { - VideoView videoView; - TextView actualResolution; + private VideoView videoView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -28,7 +27,7 @@ public class VideoPreviewActivity extends Activity { playVideo(); } }); - actualResolution = findViewById(R.id.actualResolution); + final MessageView actualResolution = findViewById(R.id.actualResolution); Uri videoUri = getIntent().getParcelableExtra("video"); MediaController controller = new MediaController(this); @@ -40,7 +39,8 @@ public class VideoPreviewActivity extends Activity { videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { - actualResolution.setText(mp.getVideoWidth() + " x " + mp.getVideoHeight()); + actualResolution.setTitle("Actual resolution"); + actualResolution.setMessage(mp.getVideoWidth() + " x " + mp.getVideoHeight()); ViewGroup.LayoutParams lp = videoView.getLayoutParams(); float videoWidth = mp.getVideoWidth(); float videoHeight = mp.getVideoHeight(); diff --git a/demo/src/main/res/drawable/background.xml b/demo/src/main/res/drawable/background.xml index 1e86660c..19bc1308 100644 --- a/demo/src/main/res/drawable/background.xml +++ b/demo/src/main/res/drawable/background.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/demo/src/main/res/layout/activity_picture_preview.xml b/demo/src/main/res/layout/activity_picture_preview.xml index 21b0f228..2411758d 100644 --- a/demo/src/main/res/layout/activity_picture_preview.xml +++ b/demo/src/main/res/layout/activity_picture_preview.xml @@ -3,180 +3,37 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_gravity="center_horizontal" + android:adjustViewBounds="true" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + diff --git a/demo/src/main/res/layout/activity_video_preview.xml b/demo/src/main/res/layout/activity_video_preview.xml index 68158f7d..db4dd3d7 100644 --- a/demo/src/main/res/layout/activity_video_preview.xml +++ b/demo/src/main/res/layout/activity_video_preview.xml @@ -1,9 +1,9 @@ - - + - - - - - - - - - - - - + android:layout_height="wrap_content"/> diff --git a/demo/src/main/res/layout/control_view.xml b/demo/src/main/res/layout/control_view.xml index e5bb6331..0839eda3 100644 --- a/demo/src/main/res/layout/control_view.xml +++ b/demo/src/main/res/layout/control_view.xml @@ -5,7 +5,7 @@ #009966 #00734d - #65FF2D + #57db27