forked from littlecurl/AppProjects
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 0f10725
Showing
85 changed files
with
2,783 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/caches/build_file_checksums.ser | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
apply plugin: 'com.android.application' | ||
|
||
android { | ||
compileSdkVersion 27 | ||
defaultConfig { | ||
applicationId "com.example.justloginregistertest" | ||
minSdkVersion 18 | ||
targetSdkVersion 27 | ||
versionCode 1 | ||
versionName "1.0" | ||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" | ||
} | ||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
} | ||
|
||
dependencies { | ||
implementation fileTree(dir: 'libs', include: ['*.jar']) | ||
implementation 'com.android.support:appcompat-v7:27.1.1' | ||
implementation 'com.android.support.constraint:constraint-layout:1.1.2' | ||
testImplementation 'junit:junit:4.12' | ||
androidTestImplementation 'com.android.support.test:runner:1.0.2' | ||
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' | ||
implementation 'com.jakewharton:butterknife:8.8.1' | ||
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
26 changes: 26 additions & 0 deletions
26
...t/app/src/androidTest/java/com/example/justloginregistertest/ExampleInstrumentedTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
package com.example.justloginregistertest; | ||
|
||
import android.content.Context; | ||
import android.support.test.InstrumentationRegistry; | ||
import android.support.test.runner.AndroidJUnit4; | ||
|
||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
|
||
import static org.junit.Assert.*; | ||
|
||
/** | ||
* Instrumented test, which will execute on an Android device. | ||
* | ||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a> | ||
*/ | ||
@RunWith(AndroidJUnit4.class) | ||
public class ExampleInstrumentedTest { | ||
@Test | ||
public void useAppContext() { | ||
// Context of the app under test. | ||
Context appContext = InstrumentationRegistry.getTargetContext(); | ||
|
||
assertEquals("com.example.justloginregistertest", appContext.getPackageName()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="com.example.justloginregistertest"> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:icon="@mipmap/ic_launcher" | ||
android:label="@string/app_name" | ||
android:roundIcon="@mipmap/ic_launcher_round" | ||
android:supportsRtl="true" | ||
android:theme="@style/AppTheme"> | ||
<activity android:name=".loginActivity"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
<activity android:name=".RegisterActivity"></activity> | ||
<activity android:name=".MainActivity"></activity> | ||
</application> | ||
|
||
</manifest> |
147 changes: 147 additions & 0 deletions
147
JustLoginRegisterTest/app/src/main/java/com/example/justloginregistertest/Code.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
package com.example.justloginregistertest; | ||
|
||
import android.graphics.Bitmap; | ||
import android.graphics.Canvas; | ||
import android.graphics.Color; | ||
import android.graphics.Paint; | ||
|
||
import java.util.Random; | ||
|
||
/** | ||
* Created by littlecurl 2018/6/24 | ||
*/ | ||
|
||
public class Code { | ||
/** | ||
* 随机数数组 | ||
* 去除了易混淆的 数字 0 和 字母 o O | ||
* 数字 1 和 字母 i I l L | ||
* 数字 6 和 字母 b | ||
* 数字 9 和 字母 q | ||
* 字母 c C 和 G | ||
* 字母 t (经常和随机线混在一起看不清) | ||
*/ | ||
private static final char[] CHARS = { | ||
'2', '3', '4', '5', '7', '8', | ||
'a', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm', | ||
'n', 'p', 'r', 's', 'u', 'v', 'w', 'x', 'y', 'z', | ||
'A', 'B', 'D', 'E', 'F', 'H', 'J', 'K', 'M', | ||
'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' | ||
}; | ||
|
||
private static Code bmpCode; | ||
|
||
public static Code getInstance() { | ||
if(bmpCode == null) | ||
bmpCode = new Code(); | ||
return bmpCode; | ||
} | ||
|
||
//default settings | ||
//验证码默认随机数的个数 | ||
private static final int DEFAULT_CODE_LENGTH = 4; | ||
//默认字体大小 | ||
private static final int DEFAULT_FONT_SIZE = 25; | ||
//默认线条的条数 | ||
private static final int DEFAULT_LINE_NUMBER = 5; | ||
//padding值 | ||
private static final int BASE_PADDING_LEFT = 10, RANGE_PADDING_LEFT = 15, BASE_PADDING_TOP = 15, RANGE_PADDING_TOP = 20; | ||
//验证码的默认宽高 | ||
private static final int DEFAULT_WIDTH = 100, DEFAULT_HEIGHT = 40; | ||
|
||
//settings decided by the layout xml | ||
//canvas width and height | ||
private int width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT; | ||
|
||
//random word space and pading_top | ||
private int base_padding_left = BASE_PADDING_LEFT, range_padding_left = RANGE_PADDING_LEFT, | ||
base_padding_top = BASE_PADDING_TOP, range_padding_top = RANGE_PADDING_TOP; | ||
|
||
//number of chars, lines; font size | ||
private int codeLength = DEFAULT_CODE_LENGTH, line_number = DEFAULT_LINE_NUMBER, font_size = DEFAULT_FONT_SIZE; | ||
|
||
//variables | ||
private String code; | ||
private int padding_left, padding_top; | ||
private Random random = new Random(); | ||
//验证码图片 | ||
public Bitmap createBitmap() { | ||
padding_left = 0; | ||
|
||
Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); | ||
Canvas c = new Canvas(bp); | ||
|
||
code = createCode(); | ||
|
||
c.drawColor(Color.WHITE); | ||
Paint paint = new Paint(); | ||
paint.setAntiAlias(true); | ||
paint.setTextSize(font_size); | ||
//画验证码 | ||
for (int i = 0; i < code.length(); i++) { | ||
randomTextStyle(paint); | ||
randomPadding(); | ||
c.drawText(code.charAt(i) + "", padding_left, padding_top, paint); | ||
} | ||
//画线条 | ||
for (int i = 0; i < line_number; i++) { | ||
drawLine(c, paint); | ||
} | ||
|
||
c.save( Canvas.ALL_SAVE_FLAG );//保存 | ||
c.restore();// | ||
return bp; | ||
} | ||
|
||
public String getCode() { | ||
return code; | ||
} | ||
|
||
//生成验证码 | ||
private String createCode() { | ||
StringBuilder buffer = new StringBuilder(); | ||
for (int i = 0; i < codeLength; i++) { | ||
buffer.append(CHARS[random.nextInt(CHARS.length)]); | ||
} | ||
return buffer.toString(); | ||
} | ||
//画干扰线 | ||
private void drawLine(Canvas canvas, Paint paint) { | ||
int color = randomColor(); | ||
int startX = random.nextInt(width); | ||
int startY = random.nextInt(height); | ||
int stopX = random.nextInt(width); | ||
int stopY = random.nextInt(height); | ||
paint.setStrokeWidth(1); | ||
paint.setColor(color); | ||
canvas.drawLine(startX, startY, stopX, stopY, paint); | ||
} | ||
//生成随机颜色 | ||
private int randomColor() { | ||
return randomColor(1); | ||
} | ||
|
||
private int randomColor(int rate) { | ||
int red = random.nextInt(256) / rate; | ||
int green = random.nextInt(256) / rate; | ||
int blue = random.nextInt(256) / rate; | ||
return Color.rgb(red, green, blue); | ||
} | ||
//随机生成文字样式,颜色,粗细,倾斜度 | ||
private void randomTextStyle(Paint paint) { | ||
int color = randomColor(); | ||
paint.setColor(color); | ||
paint.setFakeBoldText(random.nextBoolean()); //true为粗体,false为非粗体 | ||
float skewX = random.nextInt(11) / 10; | ||
skewX = random.nextBoolean() ? skewX : -skewX; | ||
paint.setTextSkewX(skewX); //float类型参数,负数表示右斜,整数左斜 | ||
//paint.setUnderlineText(true); //true为下划线,false为非下划线 | ||
//paint.setStrikeThruText(true); //true为删除线,false为非删除线 | ||
} | ||
//随机生成padding值 | ||
private void randomPadding() { | ||
padding_left += base_padding_left + random.nextInt(range_padding_left); | ||
padding_top = base_padding_top + random.nextInt(range_padding_top); | ||
} | ||
} | ||
|
Oops, something went wrong.