Librerias: https://github.com/aritraroy/PatternLockView
https://github.com/pilgr/Paper
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimaryDark" tools:context="com.example.usuario.lockpattern.MainActivity"> <com.andrognito.patternlockview.PatternLockView android:id="@+id/pattern_lock_view" android:layout_width="280dp" android:layout_height="280dp" android:layout_centerInParent="true"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Guardar Patron" android:id="@+id/btnSetearPatron" android:layout_below="@+id/pattern_lock_view" android:layout_centerHorizontal="true"/> </RelativeLayout>
activity_principal.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_principal" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimaryDark" tools:context="com.example.usuario.lockpattern.Principal"> <com.andrognito.patternlockview.PatternLockView android:id="@+id/pattern_lock_view" android:layout_width="280dp" android:layout_height="280dp" android:layout_gravity="center" android:layout_centerInParent="true"/> </RelativeLayout>
MainActivity.java
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.andrognito.patternlockview.PatternLockView; import com.andrognito.patternlockview.listener.PatternLockViewListener; import com.andrognito.patternlockview.utils.PatternLockUtils; import java.util.List; import io.paperdb.Paper; public class MainActivity extends AppCompatActivity { String save_pattern_key = "pattern_code"; String final_pattern = ""; PatternLockView mPatternLockView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Paper.init(this); final String save_pattern = Paper.book().read(save_pattern_key); if(save_pattern != null && !save_pattern.equals("null")) { setContentView(R.layout.activity_principal); mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view); mPatternLockView.addPatternLockListener(new PatternLockViewListener() { @Override public void onStarted() { } @Override public void onProgress(List<PatternLockView.Dot> progressPattern) { } @Override public void onComplete(List<PatternLockView.Dot> pattern) { final_pattern = PatternLockUtils.patternToString(mPatternLockView,pattern); if(final_pattern.equals(save_pattern)){ Toast.makeText(MainActivity.this, "Password Correct!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,ActividadDesbloqueada.class); startActivity(intent); }else{ Toast.makeText(MainActivity.this, "Password Incorrecta!", Toast.LENGTH_SHORT).show();} } @Override public void onCleared() { } }); } else { setContentView(R.layout.activity_main); mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view); mPatternLockView.addPatternLockListener(new PatternLockViewListener() { @Override public void onStarted() { } @Override public void onProgress(List<PatternLockView.Dot> progressPattern) { } @Override public void onComplete(List<PatternLockView.Dot> pattern) { final_pattern = PatternLockUtils .patternToString(mPatternLockView,pattern); } @Override public void onCleared() { } }); Button btnSetup = (Button)findViewById(R.id.btnSetearPatron); btnSetup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Paper.book().write(save_pattern_key, final_pattern); Toast.makeText(MainActivity.this, "Save pattern okay!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,Principal.class); startActivity(intent); } }); } } }
Principal.java
import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.Toast; import com.andrognito.patternlockview.PatternLockView; import com.andrognito.patternlockview.listener.PatternLockViewListener; import com.andrognito.patternlockview.utils.PatternLockUtils; import java.util.List; import io.paperdb.Paper; public class Principal extends AppCompatActivity { String save_pattern_key = "pattern_code"; PatternLockView mPatternLockView; String final_pattern = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Paper.init(this); final String save_pattern = Paper.book().read(save_pattern_key); if(save_pattern != null && !save_pattern.equals("null")) { setContentView(R.layout.activity_principal); mPatternLockView = (PatternLockView)findViewById(R.id.pattern_lock_view); mPatternLockView.addPatternLockListener(new PatternLockViewListener() { @Override public void onStarted() { } @Override public void onProgress(List<PatternLockView.Dot> progressPattern) { } @Override public void onComplete(List<PatternLockView.Dot> pattern) { final_pattern = PatternLockUtils.patternToString(mPatternLockView,pattern); if(final_pattern.equals(save_pattern)){ Toast.makeText(Principal.this, "Password Correct!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Principal.this,ActividadDesbloqueada.class); startActivity(intent); }else{ Toast.makeText(Principal.this, "Password Incorrecta!", Toast.LENGTH_SHORT).show();} } @Override public void onCleared() { } }); } } }