Android Passcode Keypad View
A custom view with keyboard and character display to be used for authentication.
The view has a bunch customisation options to make to look and work the way whichever needed.
Demo
Installation
Add gradle dependency
repositories {
jcenter()
}
dependencies {
compile 'in.arjsna:passcodeview:1.2.1'
}
Usage
Add the view in the layout file
<in.arjsna.lib.PassCodeView
android:id="@+id/pass_code_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:digits="4"
app:digit_size="30.0dp"
app:key_text_size="30.0sp"
android:padding="25.0dp"
app:empty_drawable="@drawable/empty_dot"
app:filled_drawable="@drawable/filled_dot"/>
View attributes that can be included in xml are
digits
- number of digits in passcode
filled_drawable
- drawable to be show for filled digits
empty_drawable
- drawable to be show for empty digits
key_text_size
- size of text in keyboard's key
digit_spacing
- horizontal space between each digit
digit_vertical_padding
- vertical padding of digits
divider_visible
- boolean to show or hide divider between digits and keyboard
Other customisations options available are
PassCodeView passCodeView = (PassCodeView) findViewById(R.id.pass_code_view);
Typeface typeFace = Typeface.createFromAsset(getAssets(), "fonts/Font-Bold.ttf");
/** *Set TypeFace for the font in keys of keypad */ passCodeView.setTypeFace(typeFace);
/** * Set color for the keypad text * @param color - Resource id of the color to be set */ passCodeView.setKeyTextColor(getResources.getColor(R.color.black));
/** * Set size of keypad text * @param size - Text size value to be set */ passCodeView.setKeyTextSize(30);
/** * Set passcode digit lenght * @param length - digit length to be set */ passCodeView.setDigitLength(6);
/** * Set current passcode text * @param code - {
@code String
}
passcode string to be set */ public void setPassCode("8854") /** * Reset the code to empty */ passCodeView.reset();
/** * Set drawable for empty digits programmatically */ passCodeView.setEmptyDrawable(R.drawable.empty);
/** * Set drawable for filled digits programmatically */ passCodeView.setFilledDrawable(R.drawable.filled);
/** * Attach {
@code TextChangeListener
}
to get notified on text changes * @param listener - {
@Code TextChangeListener
}
object to be attached and notified */ passCodeView.setOnTextChangeListener(new PassCodeView.TextChangeListener() {
@Override
public void onTextChanged(String text) {
Log.i("Passcode", "text");
}
}
);