package com.lzx.lock.module.lock; import android.os.Bundle; import android.view.View; import android.widget.RelativeLayout; import android.widget.TextView; import com.lzx.lock.R; import com.lzx.lock.base.BaseActivity; import com.lzx.lock.bean.LockStage; import com.lzx.lock.mvp.contract.GestureCreateContract; import com.lzx.lock.mvp.p.GestureCreatePresenter; import com.lzx.lock.utils.LockPatternUtils; import com.lzx.lock.utils.SystemBarHelper; import com.lzx.lock.utils.ToastUtil; import com.lzx.lock.widget.LockPatternView; import com.lzx.lock.widget.LockPatternViewPattern; import java.util.List; /** * Created by xian on 2017/2/17. */ public class GestureCreateActivity extends BaseActivity implements View.OnClickListener, GestureCreateContract.View { private LockPatternView mLockPatternView; private TextView mLockTip; private LockStage mUiStage = LockStage.Introduction; protected List<LockPatternView.Cell> mChosenPattern = null; //密码 private static final String KEY_PATTERN_CHOICE = "chosenPattern"; private static final String KEY_UI_STAGE = "uiStage"; private LockPatternUtils mLockPatternUtils; private LockPatternViewPattern mPatternViewPattern; private GestureCreatePresenter mGestureCreatePresenter; private RelativeLayout mTopLayout; @Override public int getLayoutId() { return R.layout.activity_gesture_lock; } @Override protected void initViews(Bundle savedInstanceState) { mLockTip = (TextView) findViewById(R.id.lock_tip); mLockPatternView = (LockPatternView) findViewById(R.id.lock_pattern_view); mTopLayout = (RelativeLayout) findViewById(R.id.top_layout); mTopLayout.setPadding(0, SystemBarHelper.getStatusBarHeight(this),0,0); mGestureCreatePresenter = new GestureCreatePresenter(this, this); initLockPatternView(); if (savedInstanceState == null) { mGestureCreatePresenter.updateStage(LockStage.Introduction); } else { final String patternString = savedInstanceState.getString(KEY_PATTERN_CHOICE); if (patternString != null) { mChosenPattern = LockPatternUtils.stringToPattern(patternString); } mGestureCreatePresenter.updateStage(LockStage.values()[savedInstanceState.getInt(KEY_UI_STAGE)]); } } /** * 初始化锁屏控件 */ private void initLockPatternView() { mLockPatternUtils = new LockPatternUtils(this); mPatternViewPattern = new LockPatternViewPattern(mLockPatternView); mPatternViewPattern.setPatternListener(new LockPatternViewPattern.onPatternListener() { @Override public void onPatternDetected(List<LockPatternView.Cell> pattern) { mGestureCreatePresenter.onPatternDetected(pattern, mChosenPattern, mUiStage); } }); mLockPatternView.setOnPatternListener(mPatternViewPattern); mLockPatternView.setTactileFeedbackEnabled(true); } @Override protected void initData() { } @Override protected void initAction() { } @Override public void onClick(View view) { } @Override public void updateUiStage(LockStage stage) { mUiStage = stage; } @Override public void updateChosenPattern(List<LockPatternView.Cell> mChosenPattern) { this.mChosenPattern = mChosenPattern; } @Override public void updateLockTip(String text, boolean isToast) { if (isToast) { ToastUtil.showToast(text); } else { mLockTip.setText(text); } } @Override public void setHeaderMessage(int headerMessage) { mLockTip.setText(headerMessage); } @Override public void lockPatternViewConfiguration(boolean patternEnabled, LockPatternView.DisplayMode displayMode) { if (patternEnabled) { mLockPatternView.enableInput(); } else { mLockPatternView.disableInput(); } mLockPatternView.setDisplayMode(displayMode); } @Override public void Introduction() { clearPattern(); } @Override public void HelpScreen() { } @Override public void ChoiceTooShort() { mLockPatternView.setDisplayMode(LockPatternView.DisplayMode.Wrong); //路径太短 mLockPatternView.removeCallbacks(mClearPatternRunnable); mLockPatternView.postDelayed(mClearPatternRunnable, 1000); } private Runnable mClearPatternRunnable = new Runnable() { public void run() { mLockPatternView.clearPattern(); } }; @Override public void moveToStatusTwo() { } @Override public void clearPattern() { mLockPatternView.clearPattern(); } @Override public void ConfirmWrong() { mChosenPattern = null; clearPattern(); } @Override public void ChoiceConfirmed() { mLockPatternUtils.saveLockPattern(mChosenPattern); //保存密码 clearPattern(); setResult(RESULT_OK); finish(); } }