先上圖看看實現效果

1.在 app 的 build.gradle 添加依賴
implementation 'com.luozm.captcha:captcha:1.1.2'
2.將 Captcha 添加至布局文件
<com.luozm.captcha.Captcha
android:id="@+id/captCha"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="265dp"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
app:mode="mode_bar"
app:src="@drawable/validate"
app:blockSize="50dp"
android:scaleType="centerCrop"
app:max_fail_count="4"/>
3.添加 Java 代碼
public void showw(String advPic) {
Context context = MainActivity.this;
diaa = new Dialog(context, R.style.edit_AlertDialog_style);
diaa.setContentView(R.layout.item_pict);
captcha = diaa.findViewById(R.id.captCha);
final Button btn_mode = diaa.findViewById(R.id.btn_mode);
final Captcha captcha = diaa.findViewById(R.id.captCha);
ImageView cuowu = diaa.findViewById(R.id.im_cuowu);
// Glide.with(getApplication()).load(advPic).into(captcha );
captcha.setBitmap(advPic);
btn_mode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (captcha.getMode() == Captcha.MODE_BAR) {
captcha.setMode(Captcha.MODE_NONBAR);
btn_mode.setText("滑動條模式");
} else {
captcha.setMode(Captcha.MODE_BAR);
btn_mode.setText("無滑動條模式");
}
}
});
cuowu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diaa.dismiss();
itData(mLongitude, mLatitude);
}
});
captcha.setCaptchaListener(new Captcha.CaptchaListener() {
@Override
public String onAccess(long time) {
Toast.makeText(MainActivity.this, "驗證成功", Toast.LENGTH_SHORT).show();
diaa.dismiss();
diaa.setCanceledOnTouchOutside(true);
return "驗證通過";
}
@Override
public String onFailed(int count) {
Toast.makeText(MainActivity.this, "驗證失敗,失敗次數" + count, Toast.LENGTH_SHORT).show();
return "驗證失敗";
}
@Override
public String onMaxFailed() {
Toast.makeText(MainActivity.this, "驗證超過次數,你的帳號被封鎖", Toast.LENGTH_SHORT).show();
return "可以走了";
}
});
diaa.show();
diaa.setCanceledOnTouchOutside(true);
Window w = diaa.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
lp.y = 40;
diaa.onWindowAttributesChanged(lp);
}
