diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 356ba642951..e7a77de0788 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -735,9 +735,6 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout-xlarge/choose_lock_pattern_tutorial.xml b/res/layout-xlarge/choose_lock_pattern_tutorial.xml
new file mode 100644
index 00000000000..ea0972799e5
--- /dev/null
+++ b/res/layout-xlarge/choose_lock_pattern_tutorial.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f1745ace539..345d8fe3c59 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -720,6 +720,12 @@
Cancel
+
+ Cancel
+
+
+ Next
+
Device administration
@@ -1875,12 +1881,8 @@
Securing your phone
- Protect your tablet from unauthorized use by creating a personal screen unlock pattern.
- \n\n1\u00A0 On the next screen, watch while an example pattern is drawn.
- \n\n2\u00A0 When ready, draw your own personal unlock pattern. Experiment with different patterns but connect at least four dots.
- \n\n3\u00A0 Redraw your pattern to confirm.
- \n\nReady to start? Touch \u201CNext\u201D.
- \n\nTo leave your tablet unprotected, touch \u201CCancel\u201D.
+ Protect your tablet from unauthorized use by creating a personal screen unlock pattern. Use your finger to connect the dots in any order on the next screen. You must connect at least four dots.
+ \n\nReady to start? Touch \u201CNext\u201D.
Protect your phone from unauthorized use by creating a personal screen unlock pattern.
@@ -1891,14 +1893,6 @@
\n\nTo leave your phone unprotected, touch \u201CCancel\u201D.
-
-
- Example pattern
-
- Connect at least four dots.\n
- \nTouch \u201CNext\u201D when you\u2019re ready to draw your own pattern.
-
-
Manage applications
diff --git a/src/com/android/settings/ChooseLockPatternExample.java b/src/com/android/settings/ChooseLockPatternExample.java
deleted file mode 100644
index 454c4068dfd..00000000000
--- a/src/com/android/settings/ChooseLockPatternExample.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2008 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.
- */
-
-package com.android.settings;
-
-import android.app.Fragment;
-import android.content.Intent;
-import android.graphics.drawable.AnimationDrawable;
-import android.os.Bundle;
-import android.os.Handler;
-import android.preference.PreferenceActivity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-public class ChooseLockPatternExample extends PreferenceActivity {
-
- // required constructor for fragments
- public ChooseLockPatternExample() {
-
- }
-
- @Override
- public Intent getIntent() {
- Intent modIntent = new Intent(super.getIntent());
- modIntent.putExtra(EXTRA_SHOW_FRAGMENT, ChooseLockPatternExampleFragment.class.getName());
- modIntent.putExtra(EXTRA_NO_HEADERS, true);
- return modIntent;
- }
-
- public static class ChooseLockPatternExampleFragment extends Fragment
- implements View.OnClickListener {
- private static final long START_DELAY = 1000;
- protected static final String TAG = "Settings";
- private View mNextButton;
- private View mSkipButton;
- private View mImageView;
- private AnimationDrawable mAnimation;
- private Handler mHandler = new Handler();
- private Runnable mRunnable = new Runnable() {
- public void run() {
- startAnimation(mAnimation);
- }
- };
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.choose_lock_pattern_example, null);
- mNextButton = view.findViewById(R.id.next_button);
- mNextButton.setOnClickListener(this);
-
- mSkipButton = view.findViewById(R.id.skip_button);
- mSkipButton.setOnClickListener(this);
-
- mImageView = (ImageView) view.findViewById(R.id.lock_anim);
- mImageView.setBackgroundResource(R.drawable.lock_anim);
- mImageView.setOnClickListener(this);
- mAnimation = (AnimationDrawable) mImageView.getBackground();
- return view;
- }
-
- @Override
- public void onResume() {
- super.onResume();
- mHandler.postDelayed(mRunnable, START_DELAY);
- }
-
- @Override
- public void onPause() {
- super.onPause();
- stopAnimation(mAnimation);
- }
-
- public void onClick(View v) {
- if (v == mSkipButton) {
- // Canceling, so finish all
- getActivity().setResult(ChooseLockPattern.RESULT_FINISHED);
- getActivity().finish();
- } else if (v == mNextButton) {
- stopAnimation(mAnimation);
- Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
- intent.putExtra("confirm_credentials", false);
- startActivity(intent);
- getActivity().finish();
- }
- }
-
- protected void startAnimation(final AnimationDrawable animation) {
- if (animation != null && !animation.isRunning()) {
- animation.run();
- }
- }
-
- protected void stopAnimation(final AnimationDrawable animation) {
- if (animation != null && animation.isRunning()) animation.stop();
- }
- }
-}
-
diff --git a/src/com/android/settings/ChooseLockPatternTutorial.java b/src/com/android/settings/ChooseLockPatternTutorial.java
index da600c41f67..a96baa23a04 100644
--- a/src/com/android/settings/ChooseLockPatternTutorial.java
+++ b/src/com/android/settings/ChooseLockPatternTutorial.java
@@ -16,7 +16,10 @@
package com.android.settings;
+import java.util.ArrayList;
+
import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockPatternView;
import android.app.Fragment;
import android.content.Intent;
@@ -45,6 +48,7 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
implements View.OnClickListener {
private View mNextButton;
private View mSkipButton;
+ private LockPatternView mPatternView;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -68,6 +72,17 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
mNextButton.setOnClickListener(this);
mSkipButton = view.findViewById(R.id.skip_button);
mSkipButton.setOnClickListener(this);
+
+ // Set up LockPatternView to be a non-interactive demo animation
+ mPatternView = (LockPatternView) view.findViewById(R.id.lockPattern);
+ ArrayList demoPattern = new ArrayList();
+ demoPattern.add(LockPatternView.Cell.of(0,0));
+ demoPattern.add(LockPatternView.Cell.of(0,1));
+ demoPattern.add(LockPatternView.Cell.of(1,1));
+ demoPattern.add(LockPatternView.Cell.of(2,1));
+ mPatternView.setPattern(LockPatternView.DisplayMode.Animate, demoPattern);
+ mPatternView.disableInput();
+
return view;
}
@@ -77,7 +92,7 @@ public class ChooseLockPatternTutorial extends PreferenceActivity {
getActivity().setResult(ChooseLockPattern.RESULT_FINISHED);
getActivity().finish();
} else if (v == mNextButton) {
- Intent intent = new Intent(getActivity(), ChooseLockPatternExample.class);
+ Intent intent = new Intent(getActivity(), ChooseLockPattern.class);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
getActivity().finish();