+++ /dev/null
-<?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>
+++ /dev/null
-<?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>
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();
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;
// 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;
// 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);