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();
}
}