# ShapeLocker
PATTERN LOCK, unlock with gestures<br>
(手势解锁,九宫格解锁,图形解锁)<br><br>
![image](https://github.com/panespanes/ShapeLocker/blob/master/shapelocker2.png)
<br>
<br>
<br>
Download
--------
You can download binaries from GitHub's [release page](https://github.com/panespanes/ShapeLocker/releases)
Or use Gradle:
Step 1. Add it in your root build.gradle at the end of repositories:
```gradle
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
```
Step 2. Add the dependency
```gradle
dependencies {
compile 'com.github.panespanes:ShapeLocker:v1.0.4'
}
```
<br>
How to Use
-------------------
Simple use case:
in layout.xml:
```java
// To create a simple view:
<com.panes.shapelocker.view.ShapeLocker
android:id="@+id/sl"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
>
</com.panes.shapelocker.view.ShapeLocker>
```
More configurations:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sp);
// load a default theme:
ShapeLockerProperties.with(this).loadLightTheme();
// or:
ShapeLocker sl = (ShapeLocker) findViewById(R.id.sl);
sl.loadLightTheme();
}
```
<br>
UNSOLVED:
-------------------
模拟器上运行的bug (真机上运行没影响)<br>
有同学反映<strong><em>模拟器上运行</strong></em>会出现"密码圈绘制不全"的bug, 如图<br>
![image](https://github.com/panespanes/ShapeLocker/blob/master/mdp.png)
<br>
做了些实验, 真机不会出现这个bug, AVD自带模拟器没有重现, BlueStacks模拟器没有类似情况,<br> 而"靠谱助手","海马玩","逍遥模拟器"等VirtualBox底层的模拟器均重现bug.<br>
猜测是由于VirtualBox的驱动对于安卓UI图形绘制的支持并不全面导致的:<br>
具体原因ShapeLocker对界面刷新做了优化, 响应触摸事件后<strong><em>只重绘被影响区域</em></strong>,<br>
相关代码:
```java
Rect invalidateRect = new Rect();
...
invalidateRect.set((int) (left - radius), (int) (top - radius), (int) (right + radius), (int) (bottom + radius));
...
invalidateRect.union((int) (left - radius), (int) (top - radius), (int) (right + radius), (int) (bottom + radius));
...
invalidateRect.set((int) (left - widthOffset), (int) (top - heightOffset), (int) (right + widthOffset), (int) (bottom + heightOffset));
...
invalidate(invalidateRect);
```
而VirtualBox并不会按照严格按照rect大小重绘区域.<br>
解决办法(真机运行的项目中请不要这样修改, 因为会造成平均34%左右性能损失):<br>
将这部分代码改为
```java
invalidate();
```
即可.
没有合适的资源?快使用搜索试试~ 我知道了~
PATTERNLOCK,使用手势解锁_Java_下载.zip
共75个文件
png:27个
xml:23个
java:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 90 浏览量
2023-05-01
01:10:47
上传
评论
收藏 365KB ZIP 举报
温馨提示
PATTERNLOCK,使用手势解锁_Java_下载.zip
资源推荐
资源详情
资源评论
收起资源包目录
PATTERNLOCK,使用手势解锁_Java_下载.zip (75个子文件)
ShapeLocker-master
gradle.properties 855B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 231B
mdp.png 6KB
shapelocker2.png 59KB
app
src
main
res
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher.png 3KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-xhdpi
ic_launcher.png 5KB
values
colors.xml 208B
strings.xml 67B
styles.xml 383B
gradlew.bat 2KB
shapelocker
src
androidTest
java
com
panes
shapelocker
ApplicationTest.java 352B
test
java
com
panes
shapelocker
ExampleUnitTest.java 314B
main
java
com
panes
shapelocker
utils
SPUtil.java 3KB
property
ShapeLockerProperties.java 5KB
view
ShapeLocker.java 44KB
exception
ShapeLockerException.java 325B
res
values
attr.xml 229B
strings.xml 385B
drawable
indicator_code_lock_point_area_green.png 11KB
btn_code_lock_touched_holo.png 596B
indicator_code_lock_point_area_red.png 9KB
btn_code_lock_default_holo.png 697B
indicator_code_lock_point_area_default_holo.png 697B
indicator_code_lock_drag_direction_green_up_holo.png 860B
btn_code_lock_default.png 3KB
indicator_code_lock_point_area_green_holo.png 7KB
indicator_code_lock_drag_direction_red_up.png 298B
indicator_code_lock_drag_direction_red_up_holo.png 1KB
indicator_code_lock_point_area_red_holo.png 7KB
btn_code_lock_touched.png 1KB
indicator_code_lock_point_area_default.png 3KB
ic_launcher.png 1KB
AndroidManifest.xml 253B
proguard-rules.pro 644B
build.gradle 545B
.gitignore 7B
build.gradle 540B
.idea
.name 4B
runConfigurations.xml 564B
misc.xml 2KB
compiler.xml 686B
modules.xml 518B
gradle.xml 963B
encodings.xml 159B
copyright
profiles_settings.xml 74B
settings.gradle 43B
gradlew 5KB
shapelockerdemo
src
androidTest
java
com
panes
myapplication
ApplicationTest.java 354B
test
java
com
panes
myapplication
ExampleUnitTest.java 316B
main
java
com
panes
myapplication
ScrollingActivity.java 470B
res
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-hdpi
ic_launcher.png 3KB
menu
menu_scrolling.xml 417B
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher.png 10KB
values-v21
styles.xml 327B
mipmap-xhdpi
ic_launcher.png 5KB
values
dimens.xml 157B
colors.xml 208B
strings.xml 6KB
styles.xml 708B
layout
content_scrolling.xml 938B
sp.xml 572B
activity_scrolling.xml 2KB
AndroidManifest.xml 781B
proguard-rules.pro 644B
build.gradle 728B
.gitignore 7B
mdp1.png 100KB
.gitignore 97B
README.md 3KB
共 75 条
- 1
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功