PreviewStatusListener.java revision 70da918464276b110c43868caa272c97baadb89e
106db742814dd635d100639f977fcfdc904deb778Doris Liu/*
206db742814dd635d100639f977fcfdc904deb778Doris Liu * Copyright (C) 2013 The Android Open Source Project
306db742814dd635d100639f977fcfdc904deb778Doris Liu *
406db742814dd635d100639f977fcfdc904deb778Doris Liu * Licensed under the Apache License, Version 2.0 (the "License");
506db742814dd635d100639f977fcfdc904deb778Doris Liu * you may not use this file except in compliance with the License.
606db742814dd635d100639f977fcfdc904deb778Doris Liu * You may obtain a copy of the License at
706db742814dd635d100639f977fcfdc904deb778Doris Liu *
806db742814dd635d100639f977fcfdc904deb778Doris Liu *      http://www.apache.org/licenses/LICENSE-2.0
906db742814dd635d100639f977fcfdc904deb778Doris Liu *
1006db742814dd635d100639f977fcfdc904deb778Doris Liu * Unless required by applicable law or agreed to in writing, software
1106db742814dd635d100639f977fcfdc904deb778Doris Liu * distributed under the License is distributed on an "AS IS" BASIS,
1206db742814dd635d100639f977fcfdc904deb778Doris Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1306db742814dd635d100639f977fcfdc904deb778Doris Liu * See the License for the specific language governing permissions and
1406db742814dd635d100639f977fcfdc904deb778Doris Liu * limitations under the License.
1506db742814dd635d100639f977fcfdc904deb778Doris Liu */
1606db742814dd635d100639f977fcfdc904deb778Doris Liu
1706db742814dd635d100639f977fcfdc904deb778Doris Liupackage com.android.camera.ui;
1806db742814dd635d100639f977fcfdc904deb778Doris Liu
1906db742814dd635d100639f977fcfdc904deb778Doris Liuimport android.view.GestureDetector;
2006db742814dd635d100639f977fcfdc904deb778Doris Liuimport android.view.TextureView;
214a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liuimport android.view.View;
2206db742814dd635d100639f977fcfdc904deb778Doris Liu
2306db742814dd635d100639f977fcfdc904deb778Doris Liu/**
2406db742814dd635d100639f977fcfdc904deb778Doris Liu * This interface defines a listener that watches preview status, including SurfaceTexture
2506db742814dd635d100639f977fcfdc904deb778Doris Liu * change and preview gestures.
2606db742814dd635d100639f977fcfdc904deb778Doris Liu */
2706db742814dd635d100639f977fcfdc904deb778Doris Liupublic interface PreviewStatusListener extends TextureView.SurfaceTextureListener {
2806db742814dd635d100639f977fcfdc904deb778Doris Liu    /**
2906db742814dd635d100639f977fcfdc904deb778Doris Liu     * The preview status listener needs to provide an
3006db742814dd635d100639f977fcfdc904deb778Doris Liu     * {@link android.view.GestureDetector.OnGestureListener} in order to listen
3106db742814dd635d100639f977fcfdc904deb778Doris Liu     * to the touch events that happen on preview.
3206db742814dd635d100639f977fcfdc904deb778Doris Liu     *
3306db742814dd635d100639f977fcfdc904deb778Doris Liu     * @return a listener that listens to touch events
3406db742814dd635d100639f977fcfdc904deb778Doris Liu     */
3506db742814dd635d100639f977fcfdc904deb778Doris Liu    public GestureDetector.OnGestureListener getGestureListener();
364a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu
374a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu    /**
384a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu     * Gets called when preview TextureView gets a layout change call.
394a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu     */
404a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu    public void onPreviewLayoutChanged(View v, int left, int top, int right,
414a010db8a60008b2bf67b93b64f77f63affc29f3Doris Liu            int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom);
4270da918464276b110c43868caa272c97baadb89eDoris Liu
4370da918464276b110c43868caa272c97baadb89eDoris Liu    /**
4470da918464276b110c43868caa272c97baadb89eDoris Liu     * This listener gets notified when the actual preview frame changes size due
4570da918464276b110c43868caa272c97baadb89eDoris Liu     * to a transform matrix being applied to the TextureView
4670da918464276b110c43868caa272c97baadb89eDoris Liu     */
4770da918464276b110c43868caa272c97baadb89eDoris Liu    public interface PreviewSizeChangedListener {
4870da918464276b110c43868caa272c97baadb89eDoris Liu        public void onPreviewSizeChanged(float previewWidth, float previewHeight);
4970da918464276b110c43868caa272c97baadb89eDoris Liu    }
5070da918464276b110c43868caa272c97baadb89eDoris Liu
5170da918464276b110c43868caa272c97baadb89eDoris Liu    /**
5270da918464276b110c43868caa272c97baadb89eDoris Liu     * The preview status listener needs to know for the specific module whether
5370da918464276b110c43868caa272c97baadb89eDoris Liu     * preview TextureView should automatically adjust its transform matrix based
5470da918464276b110c43868caa272c97baadb89eDoris Liu     * on the current aspect ratio, width and height of the TextureView.
5570da918464276b110c43868caa272c97baadb89eDoris Liu     *
5670da918464276b110c43868caa272c97baadb89eDoris Liu     * @return whether transform matrix should be automatically adjusted
5770da918464276b110c43868caa272c97baadb89eDoris Liu     */
5870da918464276b110c43868caa272c97baadb89eDoris Liu    public boolean shouldAutoAdjustTransformMatrixOnLayout();
5970da918464276b110c43868caa272c97baadb89eDoris Liu
6070da918464276b110c43868caa272c97baadb89eDoris Liu    /**
6170da918464276b110c43868caa272c97baadb89eDoris Liu     * The preview status listener needs to know for the specific module whether
6270da918464276b110c43868caa272c97baadb89eDoris Liu     * bottom bar should be automatically adjusted when preview has changed size
6370da918464276b110c43868caa272c97baadb89eDoris Liu     * or orientation.
6470da918464276b110c43868caa272c97baadb89eDoris Liu     *
6570da918464276b110c43868caa272c97baadb89eDoris Liu     * @return whether bottom bar should be automatically adjusted
6670da918464276b110c43868caa272c97baadb89eDoris Liu     */
6770da918464276b110c43868caa272c97baadb89eDoris Liu    public boolean shouldAutoAdjustBottomBar();
6806db742814dd635d100639f977fcfdc904deb778Doris Liu}
69