OSDN Git Service

Fix layout and preview for tablets
authorMichael Kolb <kolby@google.com>
Wed, 1 May 2013 20:28:24 +0000 (13:28 -0700)
committerMichael Kolb <kolby@google.com>
Wed, 1 May 2013 21:23:29 +0000 (14:23 -0700)
  Bug: 8253060

Make controls full screen, and layout according to required size

Change-Id: I725547041264457d85d73d470d25caa5cb2cf783

res/layout-land/camera_controls.xml
res/layout-port/camera_controls.xml
res/layout/camera_main.xml
res/values-sw600dp-land/styles.xml [deleted file]
res/values-sw600dp-port/styles.xml [deleted file]
res/values-sw600dp/dimens.xml
res/values/dimens.xml
src/com/android/camera/ui/CameraControls.java

index 04841a0..96f593a 100644 (file)
@@ -16,8 +16,8 @@
 <com.android.camera.ui.CameraControls
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/camera_controls"
-    style="@style/CameraControls"
-    android:layout_gravity="center" >
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
 
         <View
             android:id="@+id/blocker"
index 4ed9e63..ebbdf26 100644 (file)
@@ -16,8 +16,8 @@
 <com.android.camera.ui.CameraControls
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/camera_controls"
-    style="@style/CameraControls"
-    android:layout_gravity="center" >
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
 
         <View
             android:id="@+id/blocker"
index fe59134..99befc0 100644 (file)
@@ -26,8 +26,6 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent" />
 
-    <include layout="@layout/camera_controls"
-        style="@style/CameraControls"
-        android:layout_centerInParent="true" />
+    <include layout="@layout/camera_controls" />
 
 </com.android.camera.ui.CameraRootView>
\ No newline at end of file
diff --git a/res/values-sw600dp-land/styles.xml b/res/values-sw600dp-land/styles.xml
deleted file mode 100644 (file)
index 12e45a9..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style name="CameraControls">
-        <item name="android:layout_width">match_parent</item>
-        <item name="android:layout_height">520dp</item>
-    </style>
-</resources>
diff --git a/res/values-sw600dp-port/styles.xml b/res/values-sw600dp-port/styles.xml
deleted file mode 100644 (file)
index d6eca66..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2012 The Android Open Source Project
-
-     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.
--->
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-    <style name="CameraControls">
-        <item name="android:layout_height">match_parent</item>
-        <item name="android:layout_width">520dp</item>
-    </style>
-</resources>
index 59d86d9..5ec2f19 100644 (file)
@@ -21,5 +21,6 @@
     <dimen name="onscreen_indicators_height">@dimen/onscreen_indicators_height_large</dimen>
     <dimen name="shutter_offset">-33dp</dimen>
     <dimen name="capture_size">80dip</dimen>
-    <dimen name="capture_top_margin">16dip</dimen>
+    <dimen name="capture_margin_top">16dip</dimen>
+    <dimen name="camera_controls_size">520dip</dimen>
 </resources>
index 5719416..a1e2370 100644 (file)
     <dimen name="capture_size">48dip</dimen>
     <dimen name="capture_margin_right">16dip</dimen>
     <dimen name="capture_margin_top">16dip</dimen>
+    <dimen name="camera_controls_size">0dip</dimen>
 </resources>
index e5b90dd..f7af52c 100644 (file)
@@ -68,15 +68,31 @@ public class CameraControls extends RotatableLayout {
     public void onLayout(boolean changed, int l, int t, int r, int b) {
         int orientation = getResources().getConfiguration().orientation;
         int rotation = Util.getDisplayRotation((Activity) getContext());
+        int size = getResources().getDimensionPixelSize(R.dimen.camera_controls_size);
         rotation = correctRotation(rotation, orientation);
         super.onLayout(changed, l, t, r, b);
         Rect shutter = new Rect();
+        topRight(mPreview, l, t, r, b, orientation, rotation);
+        if (size > 0) {
+            // restrict controls to size
+            switch (rotation) {
+            case 0:
+            case 180:
+                l = (l + r - size) / 2;
+                r = l + size;
+                break;
+            case 90:
+            case 270:
+                t = (t + b - size) / 2;
+                b = t + size;
+                break;
+            }
+        }
         center(mShutter, l, t, r, b, orientation, rotation, shutter);
         center(mBackgroundView, l, t, r, b, orientation, rotation, new Rect());
         toLeft(mSwitcher, l, t, r, b, orientation, rotation, shutter);
         toRight(mMenu, l, t, r, b, orientation, rotation, shutter);
         toRight(mIndicators, l, t, r, b, orientation, rotation, shutter);
-        topRight(mPreview, l, t, r, b, orientation, rotation);
         View retake = findViewById(R.id.btn_retake);
         if (retake != null) {
             Rect retakeRect = new Rect();
@@ -106,8 +122,8 @@ public class CameraControls extends RotatableLayout {
         switch (rotation) {
         case 0:
             // phone portrait; controls bottom
-            result.left = (r - l) / 2 - tw / 2 + lp.leftMargin;
-            result.right = (r - l) / 2 + tw / 2 - lp.rightMargin;
+            result.left = (r + l) / 2 - tw / 2 + lp.leftMargin;
+            result.right = (r + l) / 2 + tw / 2 - lp.rightMargin;
             result.bottom = b - lp.bottomMargin;
             result.top = b - th + lp.topMargin;
             break;
@@ -115,13 +131,13 @@ public class CameraControls extends RotatableLayout {
             // phone landscape: controls right
             result.right = r - lp.rightMargin;
             result.left = r - tw + lp.leftMargin;
-            result.top = (b - t) / 2 - th / 2 + lp.topMargin;
-            result.bottom = (b - t) / 2 + th / 2 - lp.bottomMargin;
+            result.top = (b + t) / 2 - th / 2 + lp.topMargin;
+            result.bottom = (b + t) / 2 + th / 2 - lp.bottomMargin;
             break;
         case 180:
             // phone upside down: controls top
-            result.left = (r - l) / 2 - tw / 2 + lp.leftMargin;
-            result.right = (r - l) / 2 + tw / 2 - lp.rightMargin;
+            result.left = (r + l) / 2 - tw / 2 + lp.leftMargin;
+            result.right = (r + l) / 2 + tw / 2 - lp.rightMargin;
             result.top = t + lp.topMargin;
             result.bottom = t + th - lp.bottomMargin;
             break;
@@ -129,8 +145,8 @@ public class CameraControls extends RotatableLayout {
             // reverse landscape: controls left
             result.left = l + lp.leftMargin;
             result.right = l + tw - lp.rightMargin;
-            result.top = (b - t) / 2 - th / 2 + lp.topMargin;
-            result.bottom = (b - t) / 2 + th / 2 - lp.bottomMargin;
+            result.top = (b + t) / 2 - th / 2 + lp.topMargin;
+            result.bottom = (b + t) / 2 + th / 2 - lp.bottomMargin;
             break;
         }
         v.layout(result.left, result.top, result.right, result.bottom);