summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Yoo <jyoo@codeaurora.org>2015-12-18 15:38:48 -0800
committerCamera Software Integration <camswint@localhost>2016-01-20 23:34:08 -0700
commit666692bf730a1c46210cc74781a56afb4b6fcf28 (patch)
treebfb626b79a0c85c9cad5df7323b7dd7651caa0fd
parent0a67cc64e652830a67f3635f28a7d659b29e258a (diff)
downloadandroid_packages_apps_Snap-666692bf730a1c46210cc74781a56afb4b6fcf28.tar.gz
android_packages_apps_Snap-666692bf730a1c46210cc74781a56afb4b6fcf28.tar.bz2
android_packages_apps_Snap-666692bf730a1c46210cc74781a56afb4b6fcf28.zip
SnapdragonCamera: Adding help screen on first start
Adding menu help screen. Change-Id: I8f88a20b0c3599bfa35040e66562ced012d6213d CRs-Fixed: 951551
-rw-r--r--res/layout/menu_help.xml69
-rw-r--r--res/layout/photo_module.xml4
-rw-r--r--src/com/android/camera/CameraSettings.java2
-rw-r--r--src/com/android/camera/PhotoUI.java31
-rw-r--r--src/com/android/camera/ui/Arrows.java91
-rw-r--r--src/com/android/camera/ui/MenuHelp.java377
6 files changed, 572 insertions, 2 deletions
diff --git a/res/layout/menu_help.xml b/res/layout/menu_help.xml
new file mode 100644
index 000000000..aa6b97ac5
--- /dev/null
+++ b/res/layout/menu_help.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+-->
+<com.android.camera.ui.MenuHelp xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/menu_help"
+ android:visibility="gone"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <View
+ android:id="@+id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="bottom"/>
+ <com.android.camera.ui.Arrows
+ android:id="@+id/arrows"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"/>
+ <com.android.camera.ui.RotateLayout
+ android:id="@+id/help_text_0_0"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/MenuButton"/>
+ <com.android.camera.ui.RotateLayout
+ android:id="@+id/help_text_1_0"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/MenuButton"/>
+ <com.android.camera.ui.RotateLayout
+ android:id="@+id/help_text_3_0"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/MenuButton"/>
+ <com.android.camera.ui.RotateLayout
+ android:id="@+id/help_text_4_6"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/MenuButton"/>
+ <com.android.camera.ui.RotateLayout
+ android:id="@+id/help_ok_2_4"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ style="@style/MenuButton"/>
+</com.android.camera.ui.MenuHelp>
diff --git a/res/layout/photo_module.xml b/res/layout/photo_module.xml
index c6d0a8def..10017192b 100644
--- a/res/layout/photo_module.xml
+++ b/res/layout/photo_module.xml
@@ -100,7 +100,9 @@
<include layout="@layout/camera_controls"
android:layout_gravity="center"
style="@style/CameraControls"/>
-
+ <include layout="@layout/menu_help"
+ android:layout_gravity="center"
+ style="@style/CameraControls"/>
<RelativeLayout
android:id="@+id/id_tsmakeup_level_layout_root"
android:layout_width="match_parent"
diff --git a/src/com/android/camera/CameraSettings.java b/src/com/android/camera/CameraSettings.java
index 2f9764aec..407f879cf 100644
--- a/src/com/android/camera/CameraSettings.java
+++ b/src/com/android/camera/CameraSettings.java
@@ -245,6 +245,8 @@ public class CameraSettings {
public static final String KEY_REFOCUS_PROMPT = "refocus-prompt";
+ public static final String KEY_SHOW_MENU_HELP = "help_menu";
+
public static final String KEY_SELFIE_FLASH = "pref_selfie_flash_key";
public static final String EXPOSURE_DEFAULT_VALUE = "0";
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index f8f30ac0d..e7ab1ff9d 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -69,6 +69,7 @@ import com.android.camera.ui.FaceView;
import com.android.camera.ui.FocusIndicator;
import com.android.camera.ui.ListSubMenu;
import com.android.camera.ui.ModuleSwitcher;
+import com.android.camera.ui.MenuHelp;
import com.android.camera.ui.PieRenderer;
import com.android.camera.ui.PieRenderer.PieListener;
import com.android.camera.ui.RenderOverlay;
@@ -114,6 +115,7 @@ public class PhotoUI implements PieListener,
private PhotoMenu mMenu;
private ModuleSwitcher mSwitcher;
private CameraControls mCameraControls;
+ private MenuHelp mMenuHelp;
private AlertDialog mLocationDialog;
// Small indicators which show the camera settings in the viewfinder.
@@ -322,6 +324,7 @@ public class PhotoUI implements PieListener,
mScreenRatio = CameraUtil.determineRatio(size.x, size.y);
calculateMargins(size);
mCameraControls.setMargins(mTopMargin, mBottomMargin);
+ showFirstTimeHelp();
}
private void calculateMargins(Point size) {
@@ -341,6 +344,19 @@ public class PhotoUI implements PieListener,
mOrientationResize = orientation;
}
+ private void showFirstTimeHelp(int topMargin, int bottomMargin) {
+ mMenuHelp = (MenuHelp) mRootView.findViewById(R.id.menu_help);
+ mMenuHelp.setVisibility(View.VISIBLE);
+ mMenuHelp.setMargins(topMargin, bottomMargin);
+ mMenuHelp.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mMenuHelp.setVisibility(View.GONE);
+ mMenuHelp = null;
+ }
+ });
+ }
+
public void setAspectRatio(float ratio) {
if (ratio <= 0.0) throw new IllegalArgumentException();
@@ -568,7 +584,7 @@ public class PhotoUI implements PieListener,
mMenuButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- if(mMenu != null){
+ if (mMenu != null) {
mMenu.openFirstLevel();
}
}
@@ -1335,6 +1351,8 @@ public class PhotoUI implements PieListener,
public void setOrientation(int orientation, boolean animation) {
mOrientation = orientation;
mCameraControls.setOrientation(orientation, animation);
+ if (mMenuHelp != null)
+ mMenuHelp.setOrientation(orientation, animation);
if (mMenuLayout != null)
mMenuLayout.setOrientation(orientation, animation);
if (mSubMenuLayout != null)
@@ -1390,6 +1408,17 @@ public class PhotoUI implements PieListener,
setOrientation(mOrientation, true);
}
+ public void showFirstTimeHelp() {
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);
+ boolean isMenuShown = prefs.getBoolean(CameraSettings.KEY_SHOW_MENU_HELP, false);
+ if(!isMenuShown) {
+ showFirstTimeHelp(mTopMargin, mBottomMargin);
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean(CameraSettings.KEY_SHOW_MENU_HELP, true);
+ editor.apply();
+ }
+ }
+
public void showRefocusDialog() {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mActivity);
int prompt = prefs.getInt(CameraSettings.KEY_REFOCUS_PROMPT, 1);
diff --git a/src/com/android/camera/ui/Arrows.java b/src/com/android/camera/ui/Arrows.java
new file mode 100644
index 000000000..4923eb10e
--- /dev/null
+++ b/src/com/android/camera/ui/Arrows.java
@@ -0,0 +1,91 @@
+/*
+Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+package com.android.camera.ui;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.util.AttributeSet;
+import android.view.View;
+
+import java.util.ArrayList;
+
+public class Arrows extends View {
+ private static final int ARROW_COLOR = Color.WHITE;
+ private static final double ARROW_END_DEGREE = 15d;
+ private static final int ARROW_END_LENGTH = 50;
+
+ private Paint mPaint;
+ private ArrayList<Path> mPaths;
+
+ public Arrows(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mPaths = new ArrayList<Path>();
+ mPaint = new Paint();
+ mPaint.setStyle(Paint.Style.STROKE);
+ mPaint.setColor(ARROW_COLOR);
+ mPaint.setStrokeWidth(2f);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ if (mPaths != null) {
+ for(int i=0; i < mPaths.size(); i++) {
+ canvas.drawPath(mPaths.get(i), mPaint);
+ }
+ }
+ }
+
+ public void addPath(float[] x, float[] y) {
+ Path path = new Path();
+ path.reset();
+ path.moveTo(x[0], y[0]);
+ for(int i=1; i < x.length; i++) {
+ if(i == x.length-1) {
+ path.lineTo(x[i], y[i]);
+
+ double setha = Math.toDegrees(Math.atan2(y[i] - y[i - 1], x[i] - x[i - 1]));
+ setha = (setha + ARROW_END_DEGREE + 360) % 360;
+ path.lineTo(x[i]-(float)(ARROW_END_LENGTH*Math.cos(Math.toRadians(setha))),
+ y[i]-(float)(ARROW_END_LENGTH*Math.sin(Math.toRadians(setha))));
+ path.lineTo(x[i], y[i]);
+ setha = (setha - ARROW_END_DEGREE*2 + 360) % 360;
+ path.lineTo(x[i]-(float)(ARROW_END_LENGTH*Math.cos(Math.toRadians(setha))),
+ y[i]-(float)(ARROW_END_LENGTH*Math.sin(Math.toRadians(setha))));
+ }
+ else
+ path.quadTo(x[i],y[i], x[i+1], y[i+1]);
+ }
+ mPaths.add(path);
+ invalidate();
+ }
+}
diff --git a/src/com/android/camera/ui/MenuHelp.java b/src/com/android/camera/ui/MenuHelp.java
new file mode 100644
index 000000000..d753a2680
--- /dev/null
+++ b/src/com/android/camera/ui/MenuHelp.java
@@ -0,0 +1,377 @@
+/*
+Copyright (c) 2016, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+package com.android.camera.ui;
+
+import android.animation.Animator;
+import android.animation.Animator.AnimatorListener;
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.graphics.drawable.AnimationDrawable;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewPropertyAnimator;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+import android.widget.TableLayout;
+import android.widget.TextView;
+import java.util.ArrayList;
+
+import org.codeaurora.snapcam.R;
+import com.android.camera.ui.ModuleSwitcher;
+import com.android.camera.ui.RotateImageView;
+import com.android.camera.ShutterButton;
+import com.android.camera.Storage;
+import com.android.camera.util.CameraUtil;
+import com.android.camera.TsMakeupManager;
+
+public class MenuHelp extends RotatableLayout {
+
+ private static final String TAG = "MenuHelp";
+ private View mBackgroundView;
+ private Arrows mArrows;
+ private static int mTopMargin = 0;
+ private static int mBottomMargin = 0;
+ private static final int HELP_0_0_INDEX = 0;
+ private static final int HELP_1_0_INDEX = 1;
+ private static final int HELP_3_0_INDEX = 2;
+ private static final int HELP_4_6_INDEX = 3;
+ private static final int OK_2_4_INDEX = 4;
+ private static final int MAX_INDEX = 5;
+ private float[][] mLocX = new float[4][MAX_INDEX];
+ private float[][] mLocY = new float[4][MAX_INDEX];
+ private RotateLayout mHelp0_0;
+ private RotateLayout mHelp1_0;
+ private RotateLayout mHelp3_0;
+ private RotateLayout mHelp4_6;
+ private RotateLayout mOk2_4;
+ private Context mContext;
+ private int mOrientation;
+ private final static int POINT_MARGIN = 50;
+ private static final int WIDTH_GRID = 5;
+ private static final int HEIGHT_GRID = 7;
+ private Typeface mTypeface;
+
+ public MenuHelp(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mContext = context;
+ mTypeface = Typeface.create(Typeface.SERIF, Typeface.NORMAL);
+ }
+
+ public MenuHelp(Context context) {
+ this(context, null);
+ }
+
+ public void setMargins(int top, int bottom) {
+ mTopMargin = top;
+ mBottomMargin = bottom;
+ }
+
+ @Override
+ public void onLayout(boolean changed, int l, int t, int r, int b) {
+ r = r - l;
+ b = b - t;
+ l = 0;
+ t = 0;
+ for (int i = 0; i < getChildCount(); i++) {
+ View v = getChildAt(i);
+ v.layout(l, t, r, b);
+ }
+ setLocation(r - l, b - t);
+ }
+
+ private void setLocation(int w, int h) {
+ int rotation = getUnifiedRotation();
+ toIndex(mHelp0_0, w, h, rotation, 1, 3, HELP_0_0_INDEX);
+ toIndex(mHelp1_0, w, h, rotation, 2, 2, HELP_1_0_INDEX);
+ if(TsMakeupManager.HAS_TS_MAKEUP)
+ toIndex(mHelp3_0, w, h, rotation, 3, 1, HELP_3_0_INDEX);
+ toIndex(mHelp4_6, w, h, rotation, 3, 4, HELP_4_6_INDEX);
+ toIndex(mOk2_4, w, h, rotation, 1, 5, OK_2_4_INDEX);
+ fillArrows(w, h, rotation);
+ }
+
+ private void fillArrows(int w, int h, int rotation) {
+ View v1 = new View(mContext);
+ View v2 = new View(mContext);
+ View v3 = new View(mContext);
+ {
+ toIndex(v1, w, h, rotation, 1, 3, -1);
+ toIndex(v2, w, h, rotation, 0, 1, -1);
+ toIndex(v3, w, h, rotation, 0, 0, -1);
+ float[] x = {v1.getX()-POINT_MARGIN, v2.getX(), v3.getX()};
+ float[] y = {v1.getY()-POINT_MARGIN, v2.getY(), v3.getY()+POINT_MARGIN};
+ mArrows.addPath(x, y);
+ }
+
+ {
+ toIndex(v1, w, h, rotation, 2, 2, -1);
+ toIndex(v2, w, h, rotation, 1, 1, -1);
+ toIndex(v3, w, h, rotation, 1, 0, -1);
+ float[] x = {v1.getX()-POINT_MARGIN, v2.getX(), v3.getX()};
+ float[] y = {v1.getY()-POINT_MARGIN, v2.getY(), v3.getY()+POINT_MARGIN};
+ mArrows.addPath(x, y);
+ }
+
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ toIndex(v1, w, h, rotation, 3, 1, -1);
+ toIndex(v2, w, h, rotation, 3, 0, -1);
+ float[] x = {v1.getX(), v2.getX()};
+ float[] y = {v1.getY()-POINT_MARGIN*2, v2.getY()+POINT_MARGIN};
+ mArrows.addPath(x, y);
+ }
+
+ {
+ toIndex(v1, w, h, rotation, 3, 4, -1);
+ toIndex(v2, w, h, rotation, 3, 5, -1);
+ toIndex(v3, w, h, rotation, 4, 6, -1);
+ float[] x = {v1.getX(), v2.getX(), v3.getX()};
+ float[] y = {v1.getY()+POINT_MARGIN, v2.getY(), v3.getY()-POINT_MARGIN};
+ mArrows.addPath(x, y);
+ }
+ }
+
+ private void toIndex(View v, int w, int h, int rotation, int index, int index2, int index3) {
+ FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) v.getLayoutParams();
+ int tw = v.getMeasuredWidth();
+ int th = v.getMeasuredHeight();
+ int l = 0, r = 0, t = 0, b = 0;
+
+ int wnumber = WIDTH_GRID;
+ int hnumber = HEIGHT_GRID;
+ int windex = 0;
+ int hindex = 0;
+ switch (rotation) {
+ case 0:
+ // portrait, to left of anchor at bottom
+ wnumber = WIDTH_GRID;
+ hnumber = HEIGHT_GRID;
+ windex = index;
+ hindex = index2;
+ break;
+ case 90:
+ // phone landscape: below anchor on right
+ wnumber = HEIGHT_GRID;
+ hnumber = WIDTH_GRID;
+ windex = index2;
+ hindex = hnumber - index - 1;
+ break;
+ case 180:
+ // phone upside down: right of anchor at top
+ wnumber = WIDTH_GRID;
+ hnumber = HEIGHT_GRID;
+ windex = wnumber - index - 1;
+ hindex = hnumber - index2 - 1;
+ break;
+ case 270:
+ // reverse landscape: above anchor on left
+ wnumber = HEIGHT_GRID;
+ hnumber = WIDTH_GRID;
+ windex = wnumber - index2 - 1;
+ hindex = index;
+ break;
+ }
+ int boxh = h / hnumber;
+ int boxw = w / wnumber;
+ int cx = (2 * windex + 1) * boxw / 2;
+ int cy = (2 * hindex + 1) * boxh / 2;
+
+ if (index2 == 0 && mTopMargin != 0) {
+ switch (rotation) {
+ case 90:
+ cx = mTopMargin / 2;
+ break;
+ case 180:
+ cy = h - mTopMargin / 2;
+ break;
+ case 270:
+ cx = w - mTopMargin / 2;
+ break;
+ default:
+ cy = mTopMargin / 2;
+ break;
+ }
+ }
+
+ l = cx - tw / 2;
+ r = cx + tw / 2;
+ t = cy - th / 2;
+ b = cy + th / 2;
+
+ if (index3 != -1) {
+ int idx1 = rotation / 90;
+ int idx2 = index3;
+ mLocX[idx1][idx2] = l;
+ mLocY[idx1][idx2] = t;
+ }
+ v.layout(l, t, r, b);
+ }
+
+ public void setOrientation(int orientation, boolean animation) {
+ mOrientation = orientation;
+ RotateLayout[] layouts = {
+ mHelp0_0, mHelp1_0, mHelp3_0, mHelp4_6, mOk2_4
+ };
+ for (RotateLayout l : layouts) {
+ l.setOrientation(orientation, animation);
+ }
+ }
+
+ @Override
+ public void onFinishInflate() {
+ super.onFinishInflate();
+ mBackgroundView = findViewById(R.id.background);
+ mBackgroundView.setBackgroundColor(Color.argb(200, 0, 0, 0));
+ mHelp0_0 = (RotateLayout)findViewById(R.id.help_text_0_0);
+ fillHelp0_0();
+ mHelp1_0 = (RotateLayout)findViewById(R.id.help_text_1_0);
+ fillHelp1_0();
+ mHelp3_0 = (RotateLayout) findViewById(R.id.help_text_3_0);
+ fillHelp3_0();
+ mHelp4_6 = (RotateLayout)findViewById(R.id.help_text_4_6);
+ fillHelp4_6();
+ mOk2_4 = (RotateLayout)findViewById(R.id.help_ok_2_4);
+ fillOk2_4();
+ mArrows = (Arrows)findViewById(R.id.arrows);
+ }
+
+ private void fillOk2_4() {
+ LinearLayout linearLayout = new LinearLayout(mContext);
+ mOk2_4.addView(linearLayout);
+ linearLayout.setGravity(Gravity.CENTER);
+ linearLayout.setPadding(40, 20, 40, 20);
+ linearLayout.setBackgroundColor(Color.WHITE);
+ TextView text1 = new TextView(mContext);
+ text1.setText("OK");
+ text1.setTextColor(Color.BLACK);
+ text1.setTypeface(mTypeface);
+ linearLayout.addView(text1);
+ }
+
+ private void fillHelp0_0() {
+ TableLayout tableLayout = new TableLayout(mContext);
+ mHelp0_0.addView(tableLayout);
+ LinearLayout linearLayout = new LinearLayout(mContext);
+ TextView text1 = new TextView(mContext);
+ text1.setTextColor(Color.WHITE);
+ text1.setText("Select a ");
+ text1.setTypeface(mTypeface);
+ linearLayout.addView(text1);
+ TextView text2 = new TextView(mContext);
+ text2.setText("Scene Mode");
+ text2.setTypeface(mTypeface);
+ linearLayout.addView(text2);
+ text2.setTextColor(Color.GREEN);
+ tableLayout.addView(linearLayout);
+ TextView text3 = new TextView(mContext);
+ text3.setText("for better pictures");
+ text3.setTextColor(Color.WHITE);
+ text3.setTypeface(mTypeface);
+ tableLayout.addView(text3);
+ }
+
+ private void fillHelp1_0() {
+ TableLayout tableLayout = new TableLayout(mContext);
+ mHelp1_0.addView(tableLayout);
+ LinearLayout linearLayout = new LinearLayout(mContext);
+ TextView text1 = new TextView(mContext);
+ text1.setText("Apply color ");
+ text1.setTextColor(Color.WHITE);
+ text1.setTypeface(mTypeface);
+ linearLayout.addView(text1);
+ TextView text2 = new TextView(mContext);
+ text2.setText("filters");
+ text2.setTextColor(Color.GREEN);
+ text2.setTypeface(mTypeface);
+ linearLayout.addView(text2);
+ TextView text3 = new TextView(mContext);
+ text3.setText(" to ");
+ text3.setTextColor(Color.WHITE);
+ text3.setTypeface(mTypeface);
+ linearLayout.addView(text3);
+ tableLayout.addView(linearLayout);
+ TextView text4 = new TextView(mContext);
+ text4.setText("improve pictures");
+ text4.setTextColor(Color.WHITE);
+ text4.setTypeface(mTypeface);
+ tableLayout.addView(text4);
+ }
+
+ private void fillHelp3_0() {
+ TableLayout tableLayout = new TableLayout(mContext);
+ mHelp3_0.addView(tableLayout);
+ if(TsMakeupManager.HAS_TS_MAKEUP) {
+ TextView text1 = new TextView(mContext);
+ text1.setText("Enhance portraits");
+ text1.setTextColor(Color.WHITE);
+ text1.setTypeface(mTypeface);
+ tableLayout.addView(text1);
+ TextView text2 = new TextView(mContext);
+ text2.setText("with the");
+ text2.setTextColor(Color.WHITE);
+ text2.setTypeface(mTypeface);
+ tableLayout.addView(text2);
+ TextView text3 = new TextView(mContext);
+ text3.setText("Beautify feature");
+ text3.setTextColor(Color.GREEN);
+ text3.setTypeface(mTypeface);
+ tableLayout.addView(text3);
+ }
+ }
+
+ private void fillHelp4_6() {
+ TableLayout tableLayout = new TableLayout(mContext);
+ mHelp4_6.addView(tableLayout);
+ LinearLayout linearLayout = new LinearLayout(mContext);
+ TextView text1 = new TextView(mContext);
+ text1.setText("Switch");
+ text1.setTextColor(Color.GREEN);
+ text1.setTypeface(mTypeface);
+ linearLayout.addView(text1);
+ TextView text2 = new TextView(mContext);
+ text2.setText(" between ");
+ text2.setTextColor(Color.WHITE);
+ text2.setTypeface(mTypeface);
+ linearLayout.addView(text2);
+ tableLayout.addView(linearLayout);
+ TextView text3 = new TextView(mContext);
+ text3.setText("camera, video, and panorama");
+ text3.setTextColor(Color.WHITE);
+ text3.setTypeface(mTypeface);
+ tableLayout.addView(text3);
+ }
+}