秒验使用adapter自定义UI示例
一、设置AdapterClass#
SecVerify.setAdapterClass(MyLoginAdapter.class);
二、MyLoginAdapter内容#
import android.app.Activity; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.mob.secverify.ui.component.LoginAdapter; /** * 使用Adapter的方式修改授权页面ui,通过修改授权页面的控件属性,达到修改目的 * <p> * * todo 需要注意以下内容 * * 1、在结束当前授权页面时需要调用SecVerify.finishOAuthPage();来结束,否则会影响下次进入 * * 2、在点击登录之后,不论登录成功或者失败,需要SecVerify.finishOAuthPage();结束当前页面, 否则会影响电信授权页面的回调导致页面无法结束 * * 3、设置脱敏手机号需要在onResume中设置,onCreate中可能还未拿到这个脱敏手机号 */ public class MyLoginAdapter extends LoginAdapter { private Activity activity; private ViewGroup vgBody; private LinearLayout vgContainer; private RelativeLayout rlTitle; private Button btnLogin; private TextView tvSecurityPhone; private TextView tvOwnPhone; private TextView tvAgreement; private CheckBox cbAgreement; private View contentView; //可用于判断展示运营商隐私协议 private String operator; private String url; @Override public void onCreate() { super.onCreate(); //获取授权页面原有控件 init(); } private void init() { vgBody = getBodyView(); vgContainer = (LinearLayout) getContainerView(); activity = getActivity(); rlTitle = getTitlelayout(); btnLogin = getLoginBtn(); tvSecurityPhone = getSecurityPhoneText(); cbAgreement = getAgreementCheckbox(); operator = getOperatorName(); //隐藏 授权页面原有内容 vgBody.setVisibility(View.GONE); rlTitle.setVisibility(View.GONE); //获取自己的View contentView = View.inflate(activity, R.layout.sec_diy, null); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); //添加自己的View到授权页面上,注意不要使用Activity来设置 vgContainer.addView(contentView, params); tvSecurityPhone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(activity, "asdadasd" + tvSecurityPhone.getText(), Toast.LENGTH_SHORT).show(); } }); // RxBus.getInstance().toObserverable(Object.class) // .subscribe(new Action1<Object>() { // @Override // public void call(Object studentEvent) { // Toast.makeText(activity, "我是adapter里的toast", Toast.LENGTH_SHORT).show(); // } // }); } @Override public void onResume() { super.onResume(); Toast.makeText(activity, "手机号" + tvSecurityPhone.getText(), Toast.LENGTH_SHORT).show(); TextView phone = contentView.findViewById(R.id.phone); phone.setText(getSecurityPhoneText().getText()); contentView.findViewById(R.id.login_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //点击自己登录按钮时需要将默认的复选框设置为选中,并且点击原有的授权页面登录按钮 cbAgreement.setChecked(true); btnLogin.performClick(); } }); } public MyLoginAdapter() { } @Override public void onDestroy() { super.onDestroy(); Toast.makeText(activity, "我关闭了", Toast.LENGTH_SHORT).show(); } }
三、其他#
1、获取脱敏手机号#
在onResume方法中使用getSecurityPhoneText().getText()获取
2、添加转场动画#
可以在使用adapter的同时,设置UIsetting的动画设置
UiSettings uiSettings = new UiSettings.Builder() .setTranslateAnim(true) .build(); SecVerify.setUiSettings(uiSettings); SecVerify.setAdapterClass(MyLoginAdapter.class);
这样在调用秒验登录接口时,就会加上从左往右平移动画了,其他的动画可以看官网
作者:冲锋的麦克
出处:https://www.cnblogs.com/zhangwenju/p/14230862.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示