秒验使用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 国际」许可协议进行许可。

posted @   冲锋的麦克  阅读(340)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示