diff options
Diffstat (limited to 'src/com/android/camera/ui/RenderOverlay.java')
-rw-r--r-- | src/com/android/camera/ui/RenderOverlay.java | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/com/android/camera/ui/RenderOverlay.java b/src/com/android/camera/ui/RenderOverlay.java index 8e2f4457f..5f9b7aebf 100644 --- a/src/com/android/camera/ui/RenderOverlay.java +++ b/src/com/android/camera/ui/RenderOverlay.java @@ -18,6 +18,7 @@ package com.android.camera.ui; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -48,6 +49,7 @@ public class RenderOverlay extends FrameLayout { // reverse list of touch clients private List<Renderer> mTouchClients; private int[] mPosition = new int[2]; + private final Rect mInsets = new Rect(); public RenderOverlay(Context context, AttributeSet attrs) { super(context, attrs); @@ -69,13 +71,15 @@ public class RenderOverlay extends FrameLayout { if (renderer.handlesTouch()) { mTouchClients.add(0, renderer); } - renderer.layout(getLeft(), getTop(), getRight(), getBottom()); + renderer.layout(mRenderView.getLeft(), mRenderView.getTop(), + mRenderView.getRight(), mRenderView.getBottom()); } public void addRenderer(int pos, Renderer renderer) { mClients.add(pos, renderer); renderer.setOverlay(this); - renderer.layout(getLeft(), getTop(), getRight(), getBottom()); + renderer.layout(mRenderView.getLeft(), mRenderView.getTop(), + mRenderView.getRight(), mRenderView.getBottom()); } public void remove(Renderer renderer) { @@ -88,6 +92,24 @@ public class RenderOverlay extends FrameLayout { } @Override + protected boolean fitSystemWindows(Rect insets) { + if (!mInsets.equals(insets)) { + mInsets.set(insets); + // Make sure onMeasure will be called to adapt to the new insets. + requestLayout(); + } + return false; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // make sure all the children are resized - insets include status bar, + // navigation bar, etc, but in this case, we are only concerned with the size of nav bar + super.onMeasure(widthMeasureSpec - mInsets.right, heightMeasureSpec - mInsets.bottom); + setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); + } + + @Override public boolean dispatchTouchEvent(MotionEvent m) { if (mGestures != null) { if (!mGestures.isEnabled()) return false; |