Captcha
allprojects {
repositories {
maven {
url 'https://s01.oss.sonatype.org/content/repositories/releases/'
}
}
}
dependencies {
implementation('com.gitee.chinasoft_ohos:captcha:1.0.2')
......
}
Проект можно запустить напрямую в SDK6 и DevEco Studio 2.2 Beta1. Если не запускается, удалите файлы .gradle, .idea, build, gradle, build.gradle и создайте новый проект на основе вашей версии. Скопируйте файлы из нового проекта в корневой каталог.
Компонент состоит из двух основных элементов: Img и Slider.
<com.luozm.captcha.Captcha
ohos:id="$+id:captcha"
ohos:width="match_parent"
ohos:height="match_content"
app:src="$media:cat"/>
captcha = (Captcha) findComponentById(ResourceTable.Id_captCha);
captcha.setCaptchaListener(new Captcha.CaptchaListener() {
@Override
public String onAccess(long time) {
new ToastDialog(getContext())
.setText( "验证成功")
.show();
return "验证通过";
}
@Override
public String onFailed(int failedCount) {
new ToastDialog(getContext())
.setText( "验证失败,失败次数"+ count)
.show();
return "验证失败";
}
@Override
public String onMaxFailed() {
new ToastDialog(getContext())
.setText( "验证超过次数,你的帐号被封锁")
.show();
return "验证超过次数,你的帐号被封锁";
}
});
public abstract class CaptchaStrategy {
protected Context mContext;
public CaptchaStrategy(Context ctx) {
this.mContext = ctx;
}
protected Context getContext() {
return mContext;
}
/**
* Определяет форму недостающего блока
*
* @param blockSize в dp, обратите внимание на преобразование в px, размер недостающего блока, обратите внимание, что границы Path не должны превышать этот размер
* @return путь формы
*/
public abstract Path getBlockShape(int blockSize);
/**
* Согласно ширине и высоте всей картинки капчи и размеру недостающих блоков, определяет положение недостающих блоков
*
* @param width ширина картинки
* @param height высота картинки
* @param blockSize размер блока
* @return информация о положении блока
*/
public abstract PositionInfo getBlockPostionInfo(int width, int height, int blockSize);
/**
* Определяет положение изображения скользящего блока (только полезно, когда установлен режим без скользящей полосы, рекомендуется переписать)
*
* @param ширина ширина картинки
* @param высота высота картинки
* @param blockSize размер блока
* @return информация о положении блока
*/
public PositionInfo getPositionInfoForSwipeBlock(int width, int height, int blockSize){
return getBlockPostionInfo(width,height,blockSize);
}
/**
* Определяет Paint для тени недостающей части
*/
public abstract Paint getBlockShadowPaint();
/**
* Получает Paint для изображения недостающего блока
*/
public abstract Paint getBlockBitmapPaint();
/**
* Украшает изображение скользящего блока, выполняется после рисования изображения, то есть перед рисованием переднего плана скользящего блока
* @params холст
* @параметры shape форма недостающего блока
*/
public void decoreateSwipeBlockBitmap(Canvas canvas, Path shape) {
}
}
captCha.setCaptchaStrategy(new XXXCaptchaStrategy(context));
<com.luozm.captcha.Captcha
ohos:id="$+id:captcha"
ohos:width="match_parent"
ohos:height="match_content"
app:mode="mode_bar"
app:src="$media:cat1"
app:blockSize="150"
app:max_fail_count="5"
app:progressbg="$graphic:po_seekbar"
app:thumbbg="$graphic:thumb"/>
captcha.setSeekBarStyle(ResourceTable.Graphic_po_seekbar,ResourceTable.Graphic_thumb);
CodeCheck: тестирование кода без исключений. CloudTest: тестирование кода без исключений. Проверка на вирусы: пройдена. Текущая версия demo: основные функции соответствуют исходному компоненту.
1.0.2
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )