回复
     鸿蒙开源组件——滑块拼图验证码控件
jacksky
 发布于 2021-12-29 16:31
 浏览
 0收藏
Captcha
项目介绍
- 项目名称:滑块拼图验证码控件
 - 所属系列:openharmony的第三方组件适配移植
 - 功能:滑块拼图验证码控件
 - 项目移植状态:主功能完成,滑块效果有差异
 - 调用差异:无
 - 开发版本:sdk6,DevEco Studio2.2 Beta1
 - 基线版本: Release 1.12
 
效果演示
安装教程
1.在项目根目录下的build.gradle文件中,
allprojects {
   repositories {
       maven {
           url 'https://s01.oss.sonatype.org/content/repositories/releases/'
       }
   }
}
2.在entry模块的build.gradle文件中,
dependencies {
   implementation('com.gitee.chinasoft_ohos:captcha:1.0.2')
   ......  
}
在sdk6,DevEco Studio2.2 Beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下
使用说明
组件主要由Img控件和Slider控件组成。
1.将Captcha添加至布局
<com.luozm.captcha.Captcha
        ohos:id="$+id:captcha"
        ohos:width="match_parent"
        ohos:height="match_content"
        app:src="$media:cat"/>
2.添加Java代码
   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 "验证超过次数,你的帐号被封锁";
            }
        });
4.(可选)自定义拼图样式
1)编写策略类,继承CaptchaStrategy类,重写策略方法,具体可参考DefaultCaptchaStrategy类
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 path of the shape
   */
  public abstract Path getBlockShape(int blockSize);
  /**
   * 根据整张拼图的宽高和拼图缺块大小定义拼图缺块的位置
   *
   * @param width  picture width
   * @param height picture height
   * @return position info of the block
   */
  public abstract PositionInfo getBlockPostionInfo(int width, int height, int blockSize);
  /**
    * 定义滑块图片的位置信息(只有设置为无滑动条模式有用并建议重写)
    *
   * @param width  picture width
   * @param height picture height
   * @return position info of the block
   */
  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 canvas
   * @params shape   缺块的形状
   */
  public void decoreateSwipeBlockBitmap(Canvas canvas, Path shape) {
  }
}
2)添加Java代码
captCha.setCaptchaStrategy(new XXXCaptchaStrategy(context));
5.(可选)自定义滑块条 与Slider自定义样式一样
<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"/>
测试信息
CodeCheck代码测试无异常
CloudTest代码测试无异常
病毒安全检测通过
当前版本demo功能与原组件基本无差异
版本迭代
- 1.0.2
 
Captcha-master.zip 546.49K 18次下载  
已于2021-12-29 16:31:50修改
 
        赞
        
 
        收藏 
      
 回复
  相关推荐
 



















