Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lify
RvApp
Commits
421a1fbb
Commit
421a1fbb
authored
Jan 08, 2020
by
jianglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
抽离登录模块,解决其他模块依赖home模块的问题
parent
b39586db
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
4020 additions
and
0 deletions
+4020
-0
.gitignore
plugin_login/.gitignore
+1
-0
build.gradle
plugin_login/build.gradle
+58
-0
proguard-rules.pro
plugin_login/proguard-rules.pro
+21
-0
AndroidManifest.xml
plugin_login/src/main/AndroidManifest.xml
+25
-0
BaseLoginActivity.java
...n_login/src/main/java/com/rv/login/BaseLoginActivity.java
+189
-0
BingPhoneActivity.java
...n_login/src/main/java/com/rv/login/BingPhoneActivity.java
+288
-0
ConfirmPwdActivity.java
..._login/src/main/java/com/rv/login/ConfirmPwdActivity.java
+308
-0
LoginRvActivity.java
plugin_login/src/main/java/com/rv/login/LoginRvActivity.java
+349
-0
PrivacyTipsDialog.java
...n_login/src/main/java/com/rv/login/PrivacyTipsDialog.java
+215
-0
PwdLoginActivity.java
...in_login/src/main/java/com/rv/login/PwdLoginActivity.java
+292
-0
RegisteredActivity.java
..._login/src/main/java/com/rv/login/RegisteredActivity.java
+578
-0
VerifyDialog.java
plugin_login/src/main/java/com/rv/login/VerifyDialog.java
+162
-0
CheckLoginBean.java
...login/src/main/java/com/rv/login/bean/CheckLoginBean.java
+44
-0
RegisteredBean.java
...login/src/main/java/com/rv/login/bean/RegisteredBean.java
+128
-0
VerifyDataBean.java
...login/src/main/java/com/rv/login/bean/VerifyDataBean.java
+67
-0
VerifyResultBean.java
...gin/src/main/java/com/rv/login/bean/VerifyResultBean.java
+26
-0
VerifyImageView.java
...ogin/src/main/java/com/rv/login/view/VerifyImageView.java
+42
-0
rv_pwd_watch.png
plugin_login/src/main/res/drawable-xhdpi/rv_pwd_watch.png
+0
-0
rv_pwd_watch_no.png
plugin_login/src/main/res/drawable-xhdpi/rv_pwd_watch_no.png
+0
-0
selector_rv_pwd.xml
plugin_login/src/main/res/drawable/selector_rv_pwd.xml
+5
-0
dialog_privacy_tips.xml
plugin_login/src/main/res/layout/dialog_privacy_tips.xml
+86
-0
dialog_verfy.xml
plugin_login/src/main/res/layout/dialog_verfy.xml
+104
-0
rv_act_bing_phone.xml
plugin_login/src/main/res/layout/rv_act_bing_phone.xml
+147
-0
rv_act_confirm_pwd.xml
plugin_login/src/main/res/layout/rv_act_confirm_pwd.xml
+148
-0
rv_act_login.xml
plugin_login/src/main/res/layout/rv_act_login.xml
+207
-0
rv_act_pwd_login.xml
plugin_login/src/main/res/layout/rv_act_pwd_login.xml
+203
-0
rv_act_registered.xml
plugin_login/src/main/res/layout/rv_act_registered.xml
+296
-0
strings.xml
plugin_login/src/main/res/values/strings.xml
+31
-0
No files found.
plugin_login/.gitignore
0 → 100644
View file @
421a1fbb
/build
plugin_login/build.gradle
0 → 100644
View file @
421a1fbb
apply
plugin:
'com.android.library'
apply
plugin:
'com.jakewharton.butterknife'
android
{
compileSdkVersion
rootProject
.
ext
.
compileSdkVersion
buildToolsVersion
rootProject
.
ext
.
buildToolsVersion
defaultConfig
{
minSdkVersion
rootProject
.
ext
.
minSdkVersion
targetSdkVersion
rootProject
.
ext
.
targetSdkVersion
flavorDimensions
"default"
javaCompileOptions
{
annotationProcessorOptions
{
includeCompileClasspath
=
true
arguments
=
[
moduleName:
project
.
getName
()]
}
}
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android.txt'
),
'proguard-rules.pro'
}
}
productFlavors
{
//开发环境
dev
{
}
sit
{
}
pro
{
}
interior
{
}
}
compileOptions
{
sourceCompatibility
=
"1.8"
targetCompatibility
=
"1.8"
}
}
dependencies
{
implementation
fileTree
(
include:
[
'*.jar'
],
dir:
'libs'
)
implementation
'com.jakewharton:butterknife:9.0.0-rc1'
implementation
'com.android.support.constraint:constraint-layout:1.1.3'
annotationProcessor
'com.jakewharton:butterknife-compiler:9.0.0-rc1'
implementation
'com.android.support:appcompat-v7:28.0.0'
implementation
project
(
':RvWrapper'
)
implementation
project
(
':component_resource'
)
annotationProcessor
'com.alibaba:arouter-compiler:1.1.4'
implementation
'com.alibaba:fastjson:1.2.21'
implementation
project
(
':component_utils'
)
}
plugin_login/proguard-rules.pro
0 → 100644
View file @
421a1fbb
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
plugin_login/src/main/AndroidManifest.xml
0 → 100644
View file @
421a1fbb
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.rv.login"
>
<application>
<activity
android:name=
".BingPhoneActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".LoginRvActivity"
android:screenOrientation=
"portrait"
android:launchMode=
"singleTask"
/>
<activity
android:name=
".ConfirmPwdActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".PwdLoginActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".RegisteredActivity"
android:screenOrientation=
"portrait"
/>
</application>
</manifest>
\ No newline at end of file
plugin_login/src/main/java/com/rv/login/BaseLoginActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.app.ProgressDialog
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
com.alibaba.fastjson.JSON
;
import
com.frame.base.bus.LoginSuccessfulEvent
;
import
com.frame.base.bus.LoginUserInfoEvent
;
import
com.frame.base.bus.RxBus
;
import
com.frame.rv.config.ApiConfig
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.SPConstance
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.other.TagAliasOperatorHelper
;
import
com.ruiwenliu.wrapper.presenter.MvpPresenter
;
import
com.ruiwenliu.wrapper.util.UtilsManager
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.Cookie
;
import
com.rv.component.utils.DateUtils
;
import
com.rv.component.utils.LogUtil
;
import
com.rv.login.bean.RegisteredBean
;
import
com.umeng.socialize.UMAuthListener
;
import
com.umeng.socialize.UMShareAPI
;
import
com.umeng.socialize.UMShareConfig
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
com.umeng.socialize.utils.SocializeUtils
;
import
com.yuyife.okgo.OkGoUtil
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
/**
* Created :Auser
* Date: 2019/5/15.
* Desc:登录基类
*/
public
abstract
class
BaseLoginActivity
<
P
extends
MvpPresenter
>
extends
BaseStatusActivity
<
P
>
implements
UMAuthListener
{
public
ProgressDialog
dialog
;
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
dialog
=
new
ProgressDialog
(
this
);
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
@Nullable
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
UMShareAPI
.
get
(
mActivity
).
onActivityResult
(
requestCode
,
resultCode
,
data
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
UMShareAPI
.
get
(
mActivity
).
release
();
}
@Override
protected
void
onSaveInstanceState
(
Bundle
outState
)
{
super
.
onSaveInstanceState
(
outState
);
UMShareAPI
.
get
(
mActivity
).
onSaveInstanceState
(
outState
);
}
@Override
public
void
onStart
(
SHARE_MEDIA
platform
)
{
SocializeUtils
.
safeShowDialog
(
dialog
);
}
@Override
public
void
onError
(
SHARE_MEDIA
platform
,
int
action
,
Throwable
t
)
{
SocializeUtils
.
safeCloseDialog
(
dialog
);
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_login_authorization_failure
)
+
t
.
getMessage
());
}
@Override
public
void
onCancel
(
SHARE_MEDIA
platform
,
int
action
)
{
SocializeUtils
.
safeCloseDialog
(
dialog
);
// Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show();
}
public
void
umLogin
(
SHARE_MEDIA
share_media
)
{
UMShareConfig
config
=
new
UMShareConfig
();
config
.
isNeedAuthOnGetUserInfo
(
true
);
UMShareAPI
.
get
(
mActivity
).
setShareConfig
(
config
);
UMShareAPI
.
get
(
mActivity
).
getPlatformInfo
(
mActivity
,
share_media
,
this
);
}
public
void
deleteAuthorize
()
{
// UMShareAPI.get(mActivity).deleteOauth(mActivity, SHARE_MEDIA.WEIXIN, this);
// UMShareAPI.get(mActivity).deleteOauth(mActivity, SHARE_MEDIA.QQ, this);
}
public
void
setDataUser
(
BeanUserInfo
data
)
{
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_USERINFO
,
JSON
.
toJSONString
(
data
.
getData
())).
commit
();
RxBus
.
post
(
new
LoginUserInfoEvent
());
}
/**
* 第三方登录
*
* @param username
* @param mobilecode
* @param password
* @param nickname
* @param headimgurl
* @param openid
* @param type
*/
public
void
otherLoginBind
(
String
username
,
String
mobilecode
,
String
password
,
String
nickname
,
String
headimgurl
,
String
openid
,
int
type
,
int
isQQ
,
String
uid
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
username
);
map
.
put
(
"mobilecode"
,
mobilecode
);
map
.
put
(
"password"
,
password
);
map
.
put
(
"nickname"
,
nickname
);
map
.
put
(
"headimgurl"
,
headimgurl
);
map
.
put
(
"openid"
,
openid
);
map
.
put
(
"type"
,
type
);
map
.
put
(
"isQQ"
,
isQQ
);
if
(
isQQ
==
0
)
{
map
.
put
(
"unionid"
,
uid
);
}
map
.
put
(
"code"
,
AppCookie
.
getStringValue
(
"code"
));
mPresenter
.
postData
(
2
,
ApiConfig
.
HTTP_URL_OTHER_LOGIN_BIND
,
RegisteredBean
.
class
,
map
,
true
);
}
public
void
processLoginData
(
RegisteredBean
bean
)
{
LogUtil
.
d
(
"登录返回的code为"
+
bean
.
getData
().
getCode
());
RegisteredBean
registeredBean
=
bean
;
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_CODE
,
registeredBean
.
getData
().
getCode
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_NAME
,
registeredBean
.
getData
().
getUsername
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_HEADERURL
,
registeredBean
.
getData
().
getHeaderurl
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_TOKEN
,
registeredBean
.
getToken
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_TOKE_TIME
,
DateUtils
.
getCurDate
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_NICKANAME
,
registeredBean
.
getData
().
getNickname
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_IMUSERID
,
registeredBean
.
getData
().
getImUserId
());
Cookie
.
save
(
getApplicationContext
(),
SPConstance
.
USER_JSON_IMTOKEN
,
registeredBean
.
getData
().
getImToken
());
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_CODE
,
registeredBean
.
getData
().
getCode
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_NAME
,
registeredBean
.
getData
().
getUsername
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_HEADERURL
,
registeredBean
.
getData
().
getHeaderurl
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_USERID
,
registeredBean
.
getData
().
getUserId
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_TOKEN
,
registeredBean
.
getToken
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_IMUSERID
,
registeredBean
.
getData
().
getImUserId
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_IMTOKEN
,
registeredBean
.
getData
().
getImToken
()).
commit
();
UtilsManager
.
getInstance
(
OkGoUtil
.
application
).
setSharePreferencesSave
(
SPConstance
.
USER_JSON
).
putString
(
SPConstance
.
USER_JSON_ISCERTIFICATIONSTATUS
,
registeredBean
.
getData
().
getCertificationStatus
()).
commit
();
Map
<
String
,
Object
>
headMap
=
new
LinkedHashMap
<>();
if
(
registeredBean
.
getToken
()
!=
null
)
{
headMap
.
put
(
"Authorization"
,
registeredBean
.
getToken
());
mPresenter
.
getDataHead
(
RvFrameConfig
.
ADMIN_POST
,
10
,
ApiConfig
.
HTTP_URL_APP_USER_INFO
,
BeanUserInfo
.
class
,
headMap
,
false
);
}
OkGoUtil
.
setToken
(
registeredBean
.
getToken
(),
DateUtils
.
getCurDate
());
// switch (RvFrameConfig.RvFrameInfo.TYPE_LOGIN) {
// case 1:
// if ("0".equals(bean.getData().getCertificationStatus())) { //实名认证状态:0-未认证,1-已认证
// ARouter.getInstance().build(Constance.ACTIVITY_URL_IDCARDCERTIFICATION).navigation();
// } else {
// startActivity(CarDetailActivity.getIntent(mActivity, 1));
// }
// break;
// default:
// finish();
// break;
// }
boolean
isAliasAction
=
true
;
TagAliasOperatorHelper
.
TagAliasBean
tagAliasBean
=
new
TagAliasOperatorHelper
.
TagAliasBean
();
tagAliasBean
.
action
=
TagAliasOperatorHelper
.
ACTION_SET
;
TagAliasOperatorHelper
.
sequence
++;
if
(
isAliasAction
)
{
tagAliasBean
.
alias
=
registeredBean
.
getData
().
getUserId
();
}
else
{
tagAliasBean
.
tags
=
null
;
}
tagAliasBean
.
isAliasAction
=
isAliasAction
;
TagAliasOperatorHelper
.
getInstance
().
handleAction
(
getApplicationContext
(),
TagAliasOperatorHelper
.
sequence
,
tagAliasBean
);
RxBus
.
post
(
new
LoginSuccessfulEvent
());
finish
();
}
}
plugin_login/src/main/java/com/rv/login/BingPhoneActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.frame.rv.config.ApiConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.bean.SendCodeBean
;
import
com.ruiwenliu.wrapper.util.RxJavaManager
;
import
com.ruiwenliu.wrapper.util.listener.TextChangedListener
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.login.bean.CheckLoginBean
;
import
com.rv.login.bean.RegisteredBean
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
butterknife.BindView
;
import
butterknife.OnClick
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.functions.Consumer
;
/**
* Created :Auser
* Date: 2019/5/21.
* Desc:绑定手机号
*/
public
class
BingPhoneActivity
extends
BaseLoginActivity
<
CommonPresenter
>
{
@BindView
(
R2
.
id
.
et_phone
)
EditText
etPhone
;
@BindView
(
R2
.
id
.
iv_clear_phone
)
ImageView
ivClearPhone
;
@BindView
(
R2
.
id
.
et_phone_code
)
EditText
etPhoneCode
;
@BindView
(
R2
.
id
.
iv_clear_code
)
ImageView
ivClearCode
;
@BindView
(
R2
.
id
.
tv_get_code
)
TextView
tvGetCode
;
@BindView
(
R2
.
id
.
tv_bind
)
TextView
tvBind
;
private
String
mOpenid
;
private
String
mHeadImg
;
private
String
mName
;
private
int
mIsQQ
;
private
String
mUnionid
;
private
Disposable
mDisposable
;
public
static
Intent
getIntent
(
Context
context
,
String
openid
,
String
headImg
,
int
isQQ
,
String
name
,
String
uId
)
{
return
new
Intent
(
context
,
BingPhoneActivity
.
class
)
.
putExtra
(
"openid"
,
openid
)
.
putExtra
(
"headImg"
,
headImg
)
.
putExtra
(
"isQQ"
,
isQQ
)
.
putExtra
(
"name"
,
name
)
.
putExtra
(
"uId"
,
uId
);
}
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
rv_act_bing_phone
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
titleView
.
setTitle
(
mActivity
.
getString
(
R
.
string
.
rv_phone_bind
));
mOpenid
=
intent
.
getStringExtra
(
"openid"
);
mHeadImg
=
intent
.
getStringExtra
(
"headImg"
);
mName
=
intent
.
getStringExtra
(
"name"
);
mIsQQ
=
intent
.
getIntExtra
(
"isQQ"
,
1
);
mUnionid
=
intent
.
getStringExtra
(
"uId"
);
editListener
(
etPhone
);
editListener
(
etPhoneCode
);
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
switch
(
requestType
)
{
case
0
:
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_code_toast
));
sendCode
(
60
);
break
;
case
1
:
CheckLoginBean
checkLoginBean
=
(
CheckLoginBean
)
result
;
switch
(
checkLoginBean
.
getData
().
getType
())
{
case
0
:
showToast
(
mIsQQ
==
1
?
"该手机号已经绑定过一个QQ,请您更换手机号!"
:
"该手机号已经绑定过一个微信,请您更换手机号!"
);
break
;
case
1
:
otherLoginBind
(
getPhone
(),
getCode
(),
""
,
mName
,
mHeadImg
,
mOpenid
,
1
,
mIsQQ
,
mUnionid
);
break
;
case
2
:
startActivity
(
ConfirmPwdActivity
.
getIntent
(
mActivity
,
mOpenid
,
mHeadImg
,
mIsQQ
,
mName
,
getPhone
(),
getCode
(),
mUnionid
));
finish
();
break
;
}
break
;
case
2
:
processLoginData
((
RegisteredBean
)
result
);
break
;
case
10
:
setDataUser
((
BeanUserInfo
)
result
);
break
;
}
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
stopCarousel
();
deleteAuthorize
();
}
@OnClick
({
R2
.
id
.
iv_clear_phone
,
R2
.
id
.
iv_clear_code
,
R2
.
id
.
tv_get_code
,
R2
.
id
.
tv_bind
})
public
void
onViewClicked
(
View
view
)
{
int
id
=
view
.
getId
();
if
(
id
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
}
else
if
(
id
==
R
.
id
.
iv_clear_code
)
{
clearEditData
(
etPhoneCode
);
}
else
if
(
id
==
R
.
id
.
tv_get_code
)
{
if
(
TextUtils
.
isEmpty
(
getPhone
()))
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_hint
));
return
;
}
if
(
getPhone
().
length
()
!=
11
)
{
showToast
(
"请输入正确手机号"
);
return
;
}
sendCode
();
}
else
if
(
id
==
R
.
id
.
tv_bind
)
{
checkPhone
();
}
}
/**
* 发送验证码
*/
private
void
sendCode
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"type"
,
-
1
);
mPresenter
.
postData
(
0
,
ApiConfig
.
HTTP_URL_SEND_CODE
,
SendCodeBean
.
class
,
map
,
true
);
}
/**
* 检查手机号是否绑定
*/
private
void
checkPhone
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
mPresenter
.
postData
(
1
,
ApiConfig
.
HTTP_URL_CHECK_PHONE
,
CheckLoginBean
.
class
,
map
,
true
);
}
/**
* 获得手机号
*
* @return
*/
private
String
getPhone
()
{
return
etPhone
.
getText
().
toString
().
trim
();
}
/**
* 获得验证码
*
* @return
*/
private
String
getCode
()
{
return
etPhoneCode
.
getText
().
toString
().
trim
();
}
/**
* 清除编辑数据
*/
private
void
clearEditData
(
EditText
text
)
{
text
.
setText
(
""
);
}
/**
* 文本输入监听
*
* @param editText
*/
private
void
editListener
(
final
EditText
editText
)
{
editText
.
addTextChangedListener
(
new
TextChangedListener
()
{
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
if
(
editText
.
getId
()
==
R
.
id
.
et_phone
)
{
ivClearPhone
.
setVisibility
(
getPhone
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_phone_code
)
{
ivClearCode
.
setVisibility
(
getCode
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
if
(
etPhone
.
length
()
>
0
&&
etPhoneCode
.
length
()
>
0
)
{
tvBind
.
setEnabled
(
true
);
tvBind
.
setSelected
(
true
);
}
else
{
tvBind
.
setEnabled
(
false
);
tvBind
.
setSelected
(
false
);
}
}
});
}
/**
* 发送验证码
*
* @param timeLong 验证码时长
*/
private
void
sendCode
(
final
int
timeLong
)
{
RxJavaManager
.
getInstance
().
sendCode
(
timeLong
,
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
tvGetCode
.
setEnabled
(
false
);
}
},
new
Observer
<
Long
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mDisposable
=
d
;
}
@Override
public
void
onNext
(
Long
aLong
)
{
tvGetCode
.
setText
(
""
+
aLong
+
"s"
);
}
@Override
public
void
onError
(
Throwable
e
)
{
}
@Override
public
void
onComplete
()
{
tvGetCode
.
setEnabled
(
true
);
tvGetCode
.
setText
(
mActivity
.
getString
(
R
.
string
.
rv_login_rest
));
}
});
}
/**
* 停止计时
*/
public
void
stopCarousel
()
{
if
(
mDisposable
!=
null
&&
!
mDisposable
.
isDisposed
())
{
mDisposable
.
dispose
();
}
}
@Override
public
void
onComplete
(
SHARE_MEDIA
share_media
,
int
i
,
Map
<
String
,
String
>
map
)
{
}
}
plugin_login/src/main/java/com/rv/login/ConfirmPwdActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.SpannableStringBuilder
;
import
android.text.TextPaint
;
import
android.text.TextUtils
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.LinkMovementMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.text.style.ClickableSpan
;
import
android.view.View
;
import
android.widget.CheckBox
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.InviteCodeUtil
;
import
com.frame.rv.config.ApiConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.util.listener.TextChangedListener
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.login.bean.RegisteredBean
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.OnClick
;
/**
* Created :Auser
* Date: 2019/5/21.
* Desc:确认密码
*/
public
class
ConfirmPwdActivity
extends
BaseLoginActivity
<
CommonPresenter
>
{
@BindView
(
R2
.
id
.
et_pwd
)
EditText
etPwd
;
@BindView
(
R2
.
id
.
iv_clear_pwd
)
ImageView
ivClearPwd
;
@BindView
(
R2
.
id
.
et_invite_code
)
EditText
etInviteCode
;
@BindView
(
R2
.
id
.
cb_annotations
)
CheckBox
cbAnnotations
;
@BindView
(
R2
.
id
.
tv_registered
)
TextView
tvRegistered
;
@BindView
(
R2
.
id
.
tv_agreement
)
TextView
tvAgreement
;
private
String
mOpenid
;
private
String
mHeadImg
;
private
String
mName
;
private
int
mIsQQ
;
private
String
mPhone
;
private
String
mCode
;
private
String
mUnionid
;
private
boolean
pwdShow
;
//密码
private
boolean
confirmShow
;
//确认密码
public
static
Intent
getIntent
(
Context
context
,
String
openid
,
String
headImg
,
int
isQQ
,
String
name
,
String
phone
,
String
code
,
String
uid
)
{
return
new
Intent
(
context
,
ConfirmPwdActivity
.
class
)
.
putExtra
(
"openid"
,
openid
)
.
putExtra
(
"headImg"
,
headImg
)
.
putExtra
(
"isQQ"
,
isQQ
)
.
putExtra
(
"name"
,
name
)
.
putExtra
(
"phone"
,
phone
)
.
putExtra
(
"code"
,
code
)
.
putExtra
(
"uid"
,
uid
);
}
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
rv_act_confirm_pwd
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
super
.
initView
(
savedInstanceState
,
titleView
,
intent
);
titleView
.
setTitle
(
mActivity
.
getString
(
R
.
string
.
rv_edit_pwd
));
editListener
(
etPwd
);
mOpenid
=
intent
.
getStringExtra
(
"openid"
);
mHeadImg
=
intent
.
getStringExtra
(
"headImg"
);
mName
=
intent
.
getStringExtra
(
"name"
);
mIsQQ
=
intent
.
getIntExtra
(
"isQQ"
,
1
);
mCode
=
intent
.
getStringExtra
(
"code"
);
mPhone
=
intent
.
getStringExtra
(
"phone"
);
mUnionid
=
intent
.
getStringExtra
(
"uid"
);
String
inviteCode
=
AppCookie
.
getStringValue
(
"code"
);
if
(!
TextUtils
.
isEmpty
(
inviteCode
))
{
if
(
inviteCode
.
contains
(
"_"
))
{
String
[]
split
=
inviteCode
.
split
(
"_"
);
if
(
split
!=
null
&&
split
.
length
>
0
)
{
etInviteCode
.
setText
(
split
[
0
]);
}
}
else
{
etInviteCode
.
setText
(
inviteCode
);
}
etInviteCode
.
setEnabled
(
false
);
}
initData
();
}
private
void
initData
()
{
String
str
=
"注册即表示同意滴房车《用户协议》和《隐私政策》"
;
SpannableStringBuilder
ssb
=
new
SpannableStringBuilder
();
ssb
.
append
(
str
);
final
int
start
=
str
.
indexOf
(
"《"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
start
,
start
+
6
,
0
);
final
int
end
=
str
.
lastIndexOf
(
"《"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
end
,
end
+
6
,
0
);
tvAgreement
.
setMovementMethod
(
LinkMovementMethod
.
getInstance
());
tvAgreement
.
setText
(
ssb
,
TextView
.
BufferType
.
SPANNABLE
);
}
private
void
avoidHintColor
(
View
view
)
{
if
(
view
instanceof
TextView
)
((
TextView
)
view
).
setHighlightColor
(
getResources
().
getColor
(
android
.
R
.
color
.
transparent
));
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
2
)
{
processLoginData
((
RegisteredBean
)
result
);
}
else
if
(
requestType
==
10
)
{
setDataUser
((
BeanUserInfo
)
result
);
}
}
@Override
public
void
onComplete
(
SHARE_MEDIA
share_media
,
int
i
,
Map
<
String
,
String
>
map
)
{
}
/**
* 获得输入密码
*
* @return
*/
private
String
getPwd
()
{
return
etPwd
.
getText
().
toString
().
trim
();
}
/**
* 清除编辑数据
*/
private
void
clearEditData
(
EditText
text
)
{
text
.
setText
(
""
);
}
@OnClick
({
R2
.
id
.
iv_clear_pwd
,
R2
.
id
.
tv_agreement
,
R2
.
id
.
tv_registered
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_pwd
)
{
pwdShow
=
!
pwdShow
;
ivClearPwd
.
setSelected
(
pwdShow
);
etPwd
.
setTransformationMethod
(
pwdShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_agreement
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
if
(
getPwd
().
length
()
<
8
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
return
;
}
if
(
cbAnnotations
.
isChecked
()
==
false
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_confirm_agreement
));
return
;
}
loginBind
(
mPhone
,
mCode
,
getPwd
(),
mName
,
mHeadImg
,
mOpenid
,
2
,
mIsQQ
,
mUnionid
);
}
}
/**
* 第三方登录
*
* @param username
* @param mobilecode
* @param password
* @param nickname
* @param headimgurl
* @param openid
* @param type
*/
private
void
loginBind
(
String
username
,
String
mobilecode
,
String
password
,
String
nickname
,
String
headimgurl
,
String
openid
,
int
type
,
int
isQQ
,
String
uid
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
username
);
map
.
put
(
"mobilecode"
,
mobilecode
);
map
.
put
(
"password"
,
password
);
map
.
put
(
"nickname"
,
nickname
);
map
.
put
(
"headimgurl"
,
headimgurl
);
map
.
put
(
"openid"
,
openid
);
map
.
put
(
"type"
,
type
);
map
.
put
(
"isQQ"
,
isQQ
);
if
(
isQQ
==
0
)
{
map
.
put
(
"unionid"
,
uid
);
}
String
inviteCode
=
AppCookie
.
getStringValue
(
"code"
);
if
(!
TextUtils
.
isEmpty
(
inviteCode
))
{
map
.
put
(
"code"
,
inviteCode
);
}
else
{
map
.
put
(
"code"
,
InviteCodeUtil
.
getInviteCode
(
etInviteCode
));
}
mPresenter
.
postData
(
2
,
ApiConfig
.
HTTP_URL_OTHER_LOGIN_BIND
,
RegisteredBean
.
class
,
map
,
true
);
}
/**
* 文本输入监听
*
* @param editText
*/
private
void
editListener
(
final
EditText
editText
)
{
editText
.
addTextChangedListener
(
new
TextChangedListener
()
{
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
// switch (editText.getId()) {
//
// case R.id.et_pwd:
// ivClearPwd.setVisibility(getPwd().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// case R.id.et_again_pwd:
// ivClearAgainPwd.setVisibility(getAgainPwd().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// }
if
(
etPwd
.
length
()
>
0
)
{
tvRegistered
.
setEnabled
(
true
);
tvRegistered
.
setSelected
(
true
);
}
else
{
tvRegistered
.
setEnabled
(
false
);
tvRegistered
.
setSelected
(
false
);
}
}
});
}
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
// TODO: add setContentView(...) invocation
ButterKnife
.
bind
(
this
);
}
}
plugin_login/src/main/java/com/rv/login/LoginRvActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.annotation.SuppressLint
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.facade.annotation.Autowired
;
import
com.alibaba.android.arouter.facade.annotation.Route
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.bus.LoginSuccessfulEvent
;
import
com.frame.base.bus.RxBus
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.config.ApiConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.bean.SendCodeBean
;
import
com.ruiwenliu.wrapper.util.RxJavaManager
;
import
com.ruiwenliu.wrapper.util.listener.TextChangedListener
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.component.utils.IsAppInstall
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.rv.login.bean.RegisteredBean
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
com.umeng.socialize.utils.SocializeUtils
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
butterknife.BindView
;
import
butterknife.OnClick
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.functions.Consumer
;
import
io.reactivex.schedulers.Schedulers
;
/**
* Created :Auser
* Date: 2019/5/14.
* Desc:用户登录
*/
@Route
(
path
=
Constance
.
ACTIVITY_URL_LOGINRV
)
public
class
LoginRvActivity
extends
BaseLoginActivity
<
CommonPresenter
>
{
@BindView
(
R2
.
id
.
et_phone
)
EditText
etPhone
;
@BindView
(
R2
.
id
.
et_phone_code
)
EditText
etPhoneCode
;
@BindView
(
R2
.
id
.
tv_get_code
)
TextView
tvGetCode
;
@BindView
(
R2
.
id
.
iv_clear_phone
)
ImageView
ivClearPhone
;
@BindView
(
R2
.
id
.
iv_clear_code
)
ImageView
ivClearCode
;
@BindView
(
R2
.
id
.
tv_login
)
TextView
tvLogin
;
private
Disposable
mDisposable
;
private
String
mOpenid
;
private
String
mUnionid
;
private
String
mHeadImg
;
private
int
mLoginType
;
private
String
mName
;
@Autowired
(
name
=
"jumptype"
)
int
jumptype
;
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
rv_act_login
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
titleView
.
setTitle
(
getString
(
R
.
string
.
rv_phone_login
));
editListener
(
etPhone
);
editListener
(
etPhoneCode
);
// etPhone.setText(""+mActivity.getPackageName());
initRxbus
();
}
@SuppressLint
(
"CheckResult"
)
private
void
initRxbus
()
{
RxBus
.
tObservable
(
LoginSuccessfulEvent
.
class
)
.
observeOn
(
Schedulers
.
newThread
())
.
subscribe
(
new
com
.
frame
.
base
.
bus
.
Observer
<
LoginSuccessfulEvent
>(
disposable
)
{
@Override
public
void
onNext
(
LoginSuccessfulEvent
event
)
{
finish
();
}
});
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
switch
(
requestType
)
{
case
0
:
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_code_toast
));
sendCode
(
60
);
break
;
case
1
:
case
2
:
processLoginData
((
RegisteredBean
)
result
);
break
;
case
10
:
setDataUser
((
BeanUserInfo
)
result
);
break
;
}
}
@OnClick
({
R2
.
id
.
tv_get_code
,
R2
.
id
.
tv_login
,
R2
.
id
.
iv_weixin
,
R2
.
id
.
iv_qq
,
R2
.
id
.
tv_pwd_login
,
R2
.
id
.
tv_registered
,
R2
.
id
.
iv_clear_phone
,
R2
.
id
.
iv_clear_code
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()
==
R
.
id
.
tv_get_code
)
{
if
(
TextUtils
.
isEmpty
(
getPhone
()))
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_hint
));
return
;
}
if
(
getPhone
().
length
()
!=
11
)
{
showToast
(
"请输入正确手机号"
);
return
;
}
sendCode
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_login
)
{
codeLogin
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_weixin
)
{
if
(!
IsAppInstall
.
isWeixinAvilible
(
mActivity
))
{
showToast
(
"亲,您微信还没有安装呢"
);
return
;
}
umLogin
(
SHARE_MEDIA
.
WEIXIN
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_qq
)
{
if
(!
IsAppInstall
.
isQQClientAvailable
(
mActivity
))
{
showToast
(
"亲,您QQ还没有安装呢"
);
return
;
}
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_pwd_login
)
{
startActivity
(
PwdLoginActivity
.
getIntent
(
mActivity
,
jumptype
,
getPhone
()));
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_REGISTER
)
.
withInt
(
"type"
,
0
)
.
withInt
(
"jumptype"
,
jumptype
)
.
navigation
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_code
)
{
clearEditData
(
etPhoneCode
);
}
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
stopCarousel
();
}
@Override
protected
void
onStop
()
{
super
.
onStop
();
stopCarousel
();
}
/**
* 第三方登陆,未注册走该方法
*
* @param errorMsg
* @param errorType
*/
@Override
public
void
onShowError
(
String
errorMsg
,
int
errorType
)
{
super
.
onShowError
(
errorMsg
,
errorType
);
if
(
errorType
==
RvFrameConfig
.
HTTP_STATE_OTHER_LOGIN
)
{
startActivity
(
BingPhoneActivity
.
getIntent
(
mActivity
,
mOpenid
,
mHeadImg
,
mLoginType
,
mName
,
mUnionid
));
}
}
/**
* 发送验证码
*/
private
void
sendCode
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"type"
,
4
);
map
.
put
(
"code"
,
AppCookie
.
getStringValue
(
"code"
));
mPresenter
.
postData
(
0
,
ApiConfig
.
HTTP_URL_SEND_CODE
,
SendCodeBean
.
class
,
map
,
true
);
}
/**
* 第三方登录
*/
private
void
otherLogin
(
String
openid
,
int
isQQ
)
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"openid"
,
openid
);
map
.
put
(
"isQQ"
,
isQQ
);
map
.
put
(
"code"
,
AppCookie
.
getStringValue
(
"code"
));
mPresenter
.
postData
(
1
,
ApiConfig
.
HTTP_URL_OTHER_LOGIN
,
RegisteredBean
.
class
,
map
,
true
);
}
/**
* 验证码登录
*/
private
void
codeLogin
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"mobilecode"
,
getCode
());
map
.
put
(
"type"
,
2
);
map
.
put
(
"code"
,
AppCookie
.
getStringValue
(
"code"
));
mPresenter
.
postData
(
2
,
ApiConfig
.
HTTP_URL_PWD_LOGIN
,
RegisteredBean
.
class
,
map
,
true
);
}
/**
* 获得手机号
*
* @return
*/
private
String
getPhone
()
{
return
etPhone
.
getText
().
toString
().
trim
();
}
/**
* 获得验证码
*
* @return
*/
private
String
getCode
()
{
return
etPhoneCode
.
getText
().
toString
().
trim
();
}
/**
* 清除编辑数据
*/
private
void
clearEditData
(
EditText
text
)
{
text
.
setText
(
""
);
}
/**
* 文本输入监听
*
* @param editText
*/
private
void
editListener
(
final
EditText
editText
)
{
editText
.
addTextChangedListener
(
new
TextChangedListener
()
{
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
if
(
editText
.
getId
()
==
R
.
id
.
et_phone
)
{
ivClearPhone
.
setVisibility
(
getPhone
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_phone_code
)
{
ivClearCode
.
setVisibility
(
getCode
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
if
(
getPhone
().
length
()
>
0
&&
getCode
().
length
()
>
0
)
{
tvLogin
.
setEnabled
(
true
);
tvLogin
.
setSelected
(
true
);
}
else
{
tvLogin
.
setEnabled
(
false
);
tvLogin
.
setSelected
(
false
);
}
}
});
}
/**
* 发送验证码
*
* @param timeLong 验证码时长
*/
private
void
sendCode
(
final
int
timeLong
)
{
RxJavaManager
.
getInstance
().
sendCode
(
timeLong
,
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
tvGetCode
.
setEnabled
(
false
);
}
},
new
Observer
<
Long
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mDisposable
=
d
;
}
@Override
public
void
onNext
(
Long
aLong
)
{
tvGetCode
.
setText
(
""
+
aLong
+
"s"
);
}
@Override
public
void
onError
(
Throwable
e
)
{
}
@Override
public
void
onComplete
()
{
tvGetCode
.
setEnabled
(
true
);
tvGetCode
.
setText
(
mActivity
.
getString
(
R
.
string
.
rv_login_rest
));
}
});
}
/**
* 停止计时
*/
public
void
stopCarousel
()
{
if
(
mDisposable
!=
null
&&
!
mDisposable
.
isDisposed
())
{
mDisposable
.
dispose
();
}
}
/**
* 登录成功回调
*
* @param share_media
* @param i
* @param data
*/
@Override
public
void
onComplete
(
SHARE_MEDIA
share_media
,
int
i
,
Map
<
String
,
String
>
data
)
{
if
(
dialog
!=
null
)
{
SocializeUtils
.
safeCloseDialog
(
dialog
);
}
mOpenid
=
data
.
get
(
"openid"
);
mHeadImg
=
data
.
get
(
"iconurl"
);
mLoginType
=
share_media
.
getName
().
equals
(
"qq"
)
?
1
:
0
;
if
(
mLoginType
==
0
)
{
mUnionid
=
data
.
get
(
"unionid"
);
}
mName
=
data
.
get
(
"name"
);
otherLogin
(
mOpenid
,
mLoginType
);
}
}
plugin_login/src/main/java/com/rv/login/PrivacyTipsDialog.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.content.Context
;
import
android.graphics.Typeface
;
import
android.support.annotation.NonNull
;
import
android.text.SpannableStringBuilder
;
import
android.text.TextPaint
;
import
android.text.method.LinkMovementMethod
;
import
android.text.style.ClickableSpan
;
import
android.text.style.StyleSpan
;
import
android.text.style.UnderlineSpan
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.Button
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.config.ApiConfig
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
public
class
PrivacyTipsDialog
extends
BaseDialog
{
public
PrivacyTipsDialog
(
@NonNull
Context
context
)
{
super
(
context
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
public
PrivacyTipsDialog
(
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_privacy_tips
;
}
public
static
class
Builder
{
private
Context
mContext
;
private
Button
btnDisagree
,
btnAgree
;
private
TextView
txtContent
;
private
PrivacyTipsDialog
dialog
;
private
PrivacyListener
mListener
;
public
Builder
(
Context
context
,
PrivacyListener
listener
)
{
mContext
=
context
;
this
.
mListener
=
listener
;
}
public
interface
DownloadListener
{
void
download
();
}
public
Builder
show
()
{
final
PrivacyTipsDialog
dialog
=
create
();
dialog
.
show
();
return
this
;
}
/**
* 创建定制的对话框
*/
public
PrivacyTipsDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
PrivacyTipsDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_privacy_tips
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
txtContent
=
layout
.
findViewById
(
R
.
id
.
tv_tips_content
)
;
this
.
btnDisagree
=
layout
.
findViewById
(
R
.
id
.
btn_disagree
);
this
.
btnAgree
=
layout
.
findViewById
(
R
.
id
.
btn_agree
);
this
.
btnAgree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
agree
();
dialog
.
dismiss
();
});
this
.
btnDisagree
.
setOnClickListener
(
v
->
{
if
(
mListener
!=
null
)
mListener
.
disAgree
();
dialog
.
dismiss
();
});
setTextColorAndAction
();
dialog
.
setCancelable
(
false
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
private
void
avoidHintColor
(
View
view
)
{
if
(
view
instanceof
TextView
)
((
TextView
)
view
).
setHighlightColor
(
mContext
.
getResources
().
getColor
(
android
.
R
.
color
.
transparent
));
}
private
void
setTextColorAndAction
(){
SpannableStringBuilder
ssb
=
new
SpannableStringBuilder
();
String
str
=
txtContent
.
getText
().
toString
().
trim
();
ssb
.
append
(
str
);
ssb
.
setSpan
(
new
UnderlineSpan
(),
str
.
indexOf
(
"如果您不同意以上"
),
str
.
indexOf
(
"您停止注册后将"
),
0
);
ssb
.
setSpan
(
new
StyleSpan
(
Typeface
.
BOLD
),
str
.
indexOf
(
"如果您不同意以上"
),
str
.
indexOf
(
"您停止注册后将"
),
0
);
ssb
.
setSpan
(
new
UnderlineSpan
(),
str
.
indexOf
(
"请您务必仔细阅读"
),
str
.
indexOf
(
"(尤其是以粗"
),
0
);
ssb
.
setSpan
(
new
StyleSpan
(
Typeface
.
BOLD
),
str
.
indexOf
(
"请您务必仔细阅读"
),
str
.
indexOf
(
"(尤其是以粗"
),
0
);
final
int
startUserAgreement
=
str
.
indexOf
(
"《用户协议》"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
startUserAgreement
,
startUserAgreement
+
6
,
0
);
final
int
endUserAgreement
=
str
.
lastIndexOf
(
"《用户协议》"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
endUserAgreement
,
endUserAgreement
+
6
,
0
);
final
int
startPrivacyAgreement
=
str
.
indexOf
(
"《隐私政策》"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
startPrivacyAgreement
,
startPrivacyAgreement
+
6
,
0
);
final
int
endPrivacyAgreement
=
str
.
lastIndexOf
(
"《隐私政策》"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
mContext
.
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
endPrivacyAgreement
,
endPrivacyAgreement
+
6
,
0
);
txtContent
.
setMovementMethod
(
LinkMovementMethod
.
getInstance
());
txtContent
.
setText
(
ssb
,
TextView
.
BufferType
.
SPANNABLE
);
}
}
public
interface
PrivacyListener
{
void
agree
();
void
disAgree
();
}
}
plugin_login/src/main/java/com/rv/login/PwdLoginActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.TextUtils
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.view.View
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.config.ApiConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.util.listener.TextChangedListener
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.rv.login.bean.RegisteredBean
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
com.umeng.socialize.utils.SocializeUtils
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
butterknife.BindView
;
import
butterknife.OnClick
;
public
class
PwdLoginActivity
extends
BaseLoginActivity
<
CommonPresenter
>
{
@BindView
(
R2
.
id
.
et_phone
)
EditText
etPhone
;
@BindView
(
R2
.
id
.
iv_clear_phone
)
ImageView
ivClearPhone
;
@BindView
(
R2
.
id
.
et_pwd
)
EditText
etPwd
;
@BindView
(
R2
.
id
.
iv_clear_pwd
)
ImageView
ivClearPwd
;
@BindView
(
R2
.
id
.
tv_login
)
TextView
tvLogin
;
private
boolean
isShow
;
private
int
jumptype
;
public
static
Intent
getIntent
(
Context
context
,
int
jumptype
,
String
phone
)
{
return
new
Intent
(
context
,
PwdLoginActivity
.
class
)
.
putExtra
(
"jumptype"
,
jumptype
)
.
putExtra
(
"phone"
,
phone
);
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
super
.
initView
(
savedInstanceState
,
titleView
,
intent
);
titleView
.
setTitle
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_login
));
jumptype
=
intent
.
getIntExtra
(
"jumptype"
,
0
);
String
phone
=
intent
.
getStringExtra
(
"phone"
);
if
(!
TextUtils
.
isEmpty
(
phone
))
{
etPhone
.
setText
(
phone
);
if
(
phone
.
length
()
<=
11
)
{
etPhone
.
setSelection
(
phone
.
length
());
}
else
{
etPhone
.
setSelection
(
11
);
}
}
editListener
(
etPhone
);
editListener
(
etPwd
);
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
rv_act_pwd_login
;
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
0
)
{
processLoginData
((
RegisteredBean
)
result
);
}
else
if
(
requestType
==
10
)
{
setDataUser
((
BeanUserInfo
)
result
);
}
}
@OnClick
({
R2
.
id
.
iv_clear_phone
,
R2
.
id
.
iv_clear_pwd
,
R2
.
id
.
tv_login
,
R2
.
id
.
tv_phone_login
,
R2
.
id
.
tv_registered
,
R2
.
id
.
iv_weixin
,
R2
.
id
.
iv_qq
,
R2
.
id
.
tv_forget_pwd
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_pwd
)
{
isShow
=
!
isShow
;
ivClearPwd
.
setSelected
(
isShow
);
etPwd
.
setTransformationMethod
(
isShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_login
)
{
if
(
getPwd
().
length
()
<
8
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
return
;
}
pwdLogin
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_phone_login
)
{
finish
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_REGISTER
)
.
withInt
(
"type"
,
0
)
.
withInt
(
"jumptype"
,
jumptype
)
.
navigation
();
finish
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_weixin
)
{
umLogin
(
SHARE_MEDIA
.
WEIXIN
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_qq
)
{
umLogin
(
SHARE_MEDIA
.
QQ
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_forget_pwd
)
{
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_REGISTER
)
.
withInt
(
"type"
,
1
)
.
withInt
(
"jumptype"
,
0
)
.
navigation
();
finish
();
}
//
//
// switch (view.getId()) {
// case R.id.iv_clear_phone:
// clearEditData(etPhone);
// break;
// case R.id.iv_clear_pwd:
// isShow=!isShow;
// ivClearPwd.setSelected(isShow);
// etPwd.setTransformationMethod(isShow?HideReturnsTransformationMethod.getInstance(): PasswordTransformationMethod.getInstance());
//// clearEditData(etPwd);
// break;
// case R.id.tv_login://密码登录
//// if(TextUtils.isEmpty(getPhone())){
//// showToast(mActivity.getString(R.string.rv_phone_hint));
//// return;
//// }
//// if(TextUtils.isEmpty(getPwd())){
//// showToast(mActivity.getString(R.string.rv_pwd_hint));
//// return;
//// }
// if (getPwd().length() < 8) {
// showToast(mActivity.getString(R.string.rv_pwd_length));
// return;
// }
// pwdLogin();
// break;
// case R.id.tv_phone_login://手机登录
// finish();
// break;
// case R.id.tv_registered://立即注册
// startActivity(RegisteredActivity.getIntent(mActivity, 0));
// finish();
// break;
// case R.id.iv_weixin:
// umLogin(SHARE_MEDIA.WEIXIN);
// break;
// case R.id.iv_qq:
// umLogin(SHARE_MEDIA.QQ);
// break;
// case R.id.tv_forget_pwd:
// startActivity(RegisteredActivity.getIntent(mActivity, 1));
// finish();
// break;
// }
}
/**
* 获得手机号
*
* @return
*/
private
String
getPhone
()
{
return
etPhone
.
getText
().
toString
().
trim
();
}
/**
* 获得验证码
*
* @return
*/
private
String
getPwd
()
{
return
etPwd
.
getText
().
toString
().
trim
();
}
/**
* 清除编辑数据
*/
private
void
clearEditData
(
EditText
text
)
{
text
.
setText
(
""
);
}
/**
* 登录成功回调
*
* @param share_media
* @param i
* @param map
*/
@Override
public
void
onComplete
(
SHARE_MEDIA
share_media
,
int
i
,
Map
<
String
,
String
>
map
)
{
if
(
dialog
!=
null
)
{
SocializeUtils
.
safeCloseDialog
(
dialog
);
}
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_login_success
));
}
/**
* 文本输入监听
*
* @param editText
*/
private
void
editListener
(
final
EditText
editText
)
{
editText
.
addTextChangedListener
(
new
TextChangedListener
()
{
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
if
(
editText
.
getId
()
==
R
.
id
.
et_phone
)
{
ivClearPhone
.
setVisibility
(
getPhone
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_phone_code
)
{
}
// switch (editText.getId()) {
// case R.id.et_phone:
// ivClearPhone.setVisibility(getPhone().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// case R.id.et_phone_code:
//
// break;
// }
if
(
etPhone
.
length
()
>
0
&&
etPwd
.
length
()
>
0
)
{
tvLogin
.
setEnabled
(
true
);
tvLogin
.
setSelected
(
true
);
}
else
{
tvLogin
.
setEnabled
(
false
);
tvLogin
.
setSelected
(
false
);
}
}
});
}
/**
* 验证码登录
*/
private
void
pwdLogin
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"password"
,
getPwd
());
map
.
put
(
"type"
,
1
);
map
.
put
(
"code"
,
AppCookie
.
getStringValue
(
"code"
));
mPresenter
.
postData
(
0
,
ApiConfig
.
HTTP_URL_PWD_LOGIN
,
RegisteredBean
.
class
,
map
,
true
);
}
public
class
PwdLoginBean
{
private
String
username
;
private
String
password
;
public
PwdLoginBean
(
String
username
,
String
password
)
{
this
.
username
=
username
;
this
.
password
=
password
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
}
}
plugin_login/src/main/java/com/rv/login/RegisteredActivity.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.text.Editable
;
import
android.text.SpannableStringBuilder
;
import
android.text.TextPaint
;
import
android.text.TextUtils
;
import
android.text.method.HideReturnsTransformationMethod
;
import
android.text.method.LinkMovementMethod
;
import
android.text.method.PasswordTransformationMethod
;
import
android.text.style.ClickableSpan
;
import
android.view.View
;
import
android.widget.CheckBox
;
import
android.widget.EditText
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
android.widget.Toast
;
import
com.alibaba.android.arouter.facade.annotation.Autowired
;
import
com.alibaba.android.arouter.facade.annotation.Route
;
import
com.alibaba.android.arouter.launcher.ARouter
;
import
com.frame.base.url.Constance
;
import
com.frame.rv.InviteCodeUtil
;
import
com.frame.rv.config.ApiConfig
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.presenter.CommonPresenter
;
import
com.ruiwenliu.wrapper.bean.BeanUserInfo
;
import
com.ruiwenliu.wrapper.bean.SendCodeBean
;
import
com.ruiwenliu.wrapper.util.RxJavaManager
;
import
com.ruiwenliu.wrapper.util.listener.TextChangedListener
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.rv.component.utils.AppCookie
;
import
com.rv.login.bean.RegisteredBean
;
import
com.rv.login.bean.VerifyDataBean
;
import
com.rv.login.bean.VerifyResultBean
;
import
com.umeng.socialize.bean.SHARE_MEDIA
;
import
java.util.LinkedHashMap
;
import
java.util.Map
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
import
butterknife.OnClick
;
import
io.reactivex.Observer
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.functions.Consumer
;
@Route
(
path
=
Constance
.
ACTIVITY_URL_REGISTER
)
public
class
RegisteredActivity
extends
BaseLoginActivity
<
CommonPresenter
>
{
@BindView
(
R2
.
id
.
et_phone
)
EditText
etPhone
;
@BindView
(
R2
.
id
.
iv_clear_phone
)
ImageView
ivClearPhone
;
@BindView
(
R2
.
id
.
et_phone_code
)
EditText
etPhoneCode
;
@BindView
(
R2
.
id
.
iv_clear_code
)
ImageView
ivClearCode
;
@BindView
(
R2
.
id
.
tv_get_code
)
TextView
tvGetCode
;
@BindView
(
R2
.
id
.
et_pwd
)
EditText
etPwd
;
@BindView
(
R2
.
id
.
iv_clear_pwd
)
ImageView
ivClearPwd
;
@BindView
(
R2
.
id
.
et_invite_code
)
EditText
etInviteCode
;
@BindView
(
R2
.
id
.
cb_annotations
)
CheckBox
cbAnnotations
;
@BindView
(
R2
.
id
.
tv_registered
)
TextView
tvRegistered
;
@BindView
(
R2
.
id
.
tv_agreement
)
TextView
tvAgreement
;
private
Disposable
mDisposable
;
private
boolean
pwdShow
;
//密码
private
boolean
confirmShow
;
//确认密码
@Autowired
(
name
=
"type"
)
int
mType
;
@Autowired
(
name
=
"jumptype"
)
int
jumptype
;
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
}
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
rv_act_registered
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
// mType = intent.getIntExtra("type", 0);
// jumptype = intent.getIntExtra("jumptype", 0);
titleView
.
setTitle
(
mActivity
.
getString
(
mType
==
0
?
R
.
string
.
rv_phone_registered
:
R
.
string
.
rv_forget_pwd
));
tvRegistered
.
setText
(
mActivity
.
getString
(
mType
==
0
?
R
.
string
.
rv_registered
:
R
.
string
.
rv_reset_pwd
));
cbAnnotations
.
setVisibility
(
mType
==
0
?
View
.
VISIBLE
:
View
.
GONE
);
tvAgreement
.
setVisibility
(
mType
==
0
?
View
.
VISIBLE
:
View
.
GONE
);
((
View
)
etInviteCode
.
getParent
()).
setVisibility
(
mType
==
0
?
View
.
VISIBLE
:
View
.
GONE
);
if
(
mType
==
0
)
{
String
inviteCode
=
AppCookie
.
getStringValue
(
"code"
);
if
(!
TextUtils
.
isEmpty
(
inviteCode
))
{
if
(
inviteCode
.
contains
(
"_"
))
{
String
[]
split
=
inviteCode
.
split
(
"_"
);
if
(
split
!=
null
&&
split
.
length
>
0
)
{
etInviteCode
.
setText
(
split
[
0
]);
}
}
else
{
etInviteCode
.
setText
(
inviteCode
);
}
etInviteCode
.
setEnabled
(
false
);
}
}
editListener
(
etPhone
);
editListener
(
etPhoneCode
);
editListener
(
etPwd
);
editListener
(
etInviteCode
);
initData
();
if
(
mType
==
0
)
privacyAgree
();
}
private
void
privacyAgree
()
{
new
PrivacyTipsDialog
.
Builder
(
this
,
new
PrivacyTipsDialog
.
PrivacyListener
()
{
@Override
public
void
agree
()
{
cbAnnotations
.
setChecked
(
true
);
}
@Override
public
void
disAgree
()
{
finish
();
}
}).
show
();
}
private
void
initData
()
{
String
str
=
"注册即表示同意滴房车《用户协议》和《隐私政策》"
;
SpannableStringBuilder
ssb
=
new
SpannableStringBuilder
();
ssb
.
append
(
str
);
final
int
start
=
str
.
indexOf
(
"《"
);
//第一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"用户协议"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
15
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
start
,
start
+
6
,
0
);
final
int
end
=
str
.
lastIndexOf
(
"《"
);
//最后一个出现的位置
ssb
.
setSpan
(
new
ClickableSpan
()
{
@Override
public
void
onClick
(
View
widget
)
{
avoidHintColor
(
widget
);
ARouter
.
getInstance
().
build
(
Constance
.
ACTIVITY_URL_WEBVIEW
)
.
withString
(
"title"
,
"隐私政策"
)
.
withString
(
"url"
,
ApiConfig
.
HTTP_URL_CAR_TYPE_NOTICE
)
.
withInt
(
"type"
,
19
)
.
navigation
();
}
@Override
public
void
updateDrawState
(
TextPaint
ds
)
{
super
.
updateDrawState
(
ds
);
ds
.
setColor
(
getResources
().
getColor
(
R
.
color
.
gray_FFB74B
));
//设置文件颜色
// 去掉下划线
ds
.
setUnderlineText
(
false
);
}
},
end
,
end
+
6
,
0
);
tvAgreement
.
setMovementMethod
(
LinkMovementMethod
.
getInstance
());
tvAgreement
.
setText
(
ssb
,
TextView
.
BufferType
.
SPANNABLE
);
}
private
void
avoidHintColor
(
View
view
)
{
if
(
view
instanceof
TextView
)
((
TextView
)
view
).
setHighlightColor
(
getResources
().
getColor
(
android
.
R
.
color
.
transparent
));
}
private
VerifyDialog
.
Builder
builder
;
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
switch
(
requestType
)
{
case
0
:
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_code_toast
));
sendCode
(
60
);
break
;
case
1
:
processLoginData
((
RegisteredBean
)
result
);
if
(
jumptype
==
1
)
{
mPresenter
.
saveOnclick
(
"4"
,
""
);
}
break
;
case
10
:
setDataUser
((
BeanUserInfo
)
result
);
break
;
case
11
:
VerifyDataBean
bean
=
(
VerifyDataBean
)
result
;
if
(
bean
!=
null
&&
bean
.
isRel
()
&&
bean
.
getData
()
!=
null
)
{
if
(
builder
==
null
&&
!
isVerifyCancel
)
{
builder
=
new
VerifyDialog
.
Builder
(
this
,
bean
.
getData
());
builder
.
setListener
(
verifyListener
);
builder
.
create
().
show
();
}
else
{
builder
.
change
(
bean
.
getData
());
}
}
break
;
case
12
:
VerifyResultBean
resultBean
=
(
VerifyResultBean
)
result
;
if
(
resultBean
!=
null
&&
resultBean
.
isData
())
{
if
(
builder
!=
null
)
{
builder
.
dismiss
();
builder
=
null
;
}
showToast
(
"验证成功"
);
sendCode
();
}
else
{
showToast
(
"点击错误,将为您重新生成图片"
);
sendVerifyCode
();
}
break
;
default
:
break
;
}
}
@Override
public
void
onShowError
(
String
errorMsg
,
int
errorType
)
{
super
.
onShowError
(
errorMsg
,
errorType
);
Toast
.
makeText
(
this
,
errorMsg
,
Toast
.
LENGTH_LONG
).
show
();
}
@OnClick
({
R2
.
id
.
iv_clear_phone
,
R2
.
id
.
iv_clear_code
,
R2
.
id
.
tv_get_code
,
R2
.
id
.
iv_clear_pwd
,
R2
.
id
.
tv_agreement
,
R2
.
id
.
tv_registered
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_phone
)
{
clearEditData
(
etPhone
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_code
)
{
clearEditData
(
etPhoneCode
);
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_get_code
)
{
if
(
TextUtils
.
isEmpty
(
getPhone
()))
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_phone_hint
));
return
;
}
if
(
getPhone
().
length
()
!=
11
)
{
showToast
(
"请输入正确手机号"
);
return
;
}
isVerifyCancel
=
false
;
if
(
mType
==
0
)
{
sendVerifyCode
();
}
else
{
sendCode
();
}
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_code
)
{
pwdShow
=
!
pwdShow
;
ivClearPwd
.
setSelected
(
pwdShow
);
etPwd
.
setTransformationMethod
(
pwdShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
else
if
(
view
.
getId
()
==
R
.
id
.
iv_clear_pwd
)
{
confirmShow
=
!
confirmShow
;
ivClearPwd
.
setSelected
(
confirmShow
);
etPwd
.
setTransformationMethod
(
confirmShow
?
HideReturnsTransformationMethod
.
getInstance
()
:
PasswordTransformationMethod
.
getInstance
());
}
// else if (view.getId() == R.id.iv_clear_again_pwd) {
// confirmShow = !confirmShow;
// ivClearAgainPwd.setSelected(confirmShow);
// etAgainPwd.setTransformationMethod(confirmShow ? HideReturnsTransformationMethod.getInstance() : PasswordTransformationMethod.getInstance());
// }
// else if (view.getId() == R.id.tv_agreement) {
// ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
// .withString("title", "用户协议")
// .withString("url", ApiConfig.HTTP_URL_CAR_TYPE_NOTICE)
// .withInt("type", 15)
// .navigation();
// }
else
if
(
view
.
getId
()
==
R
.
id
.
tv_registered
)
{
if
(
getPwd
().
length
()
<
8
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_pwd_length
));
return
;
}
// if (!getPwd().equals(getAgainPwd())) {
// showToast(mActivity.getString(R.string.rv_pwd_same));
// return;
// }
if
(
mType
==
1
)
{
resetPwd
();
return
;
}
if
(
cbAnnotations
.
isChecked
()
==
false
)
{
showToast
(
mActivity
.
getString
(
R
.
string
.
rv_confirm_agreement
));
return
;
}
userRegister
();
}
}
private
void
sendVerifyCode
()
{
mPresenter
.
getData
(
11
,
String
.
format
(
ApiConfig
.
HTTP_URL_PIC_VERIFY
,
new
String
[]{
getPhone
()}),
VerifyDataBean
.
class
,
true
);
}
private
void
verifyCode
(
int
x
,
int
y
)
{
//
// Point point = new Point(x, y);
// List<Point> pointList = new ArrayList<>();
// pointList.add(point);
//// String pointListString = null;
//// try {
//// pointListString = URLEncoder.encode(new Gson().toJson(pointList),"UTF-8") ;
//// } catch (UnsupportedEncodingException e) {
//// e.printStackTrace();
//// }
//
//// JsonArray array = new JsonArray();
//// array.addAll(pointList);
// String pointListString = JSONArray.toJSONString(pointList);
// Map<String, String> params = new HashMap<>();
// params.put("phone", getPhone());
// params.put("pointList", dealString(x,y));
dealString
(
x
,
y
);
mPresenter
.
getData
(
12
,
String
.
format
(
ApiConfig
.
HTTP_URL_CLICK_VERIFY
,
new
String
[]{
getPhone
(),
pointList
}),
VerifyResultBean
.
class
,
true
);
}
private
String
pointList
;
private
void
dealString
(
int
x
,
int
y
)
{
pointList
=
"%5B%7B%22x%22:"
+
x
+
",%22y%22:"
+
y
+
"%7D%5D"
;
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
stopCarousel
();
}
/**
* 发送验证码
*/
private
void
sendCode
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
if
(
mType
==
0
)
{
map
.
put
(
"type"
,
0
);
map
.
put
(
"pointList"
,
pointList
);
}
else
{
map
.
put
(
"type"
,
4
);
}
mPresenter
.
postData
(
0
,
ApiConfig
.
HTTP_URL_SEND_CODE
,
SendCodeBean
.
class
,
map
,
true
);
}
/**
* 注册
*/
private
void
userRegister
()
{
Map
<
String
,
Object
>
headMap
=
new
LinkedHashMap
<>();
headMap
.
put
(
"dataType"
,
"json"
);
headMap
.
put
(
"contentType"
,
"application/json;charset-UTF-8"
);
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"mobilecode"
,
getCode
());
map
.
put
(
"password"
,
getPwd
());
String
inviteCode
=
AppCookie
.
getStringValue
(
"code"
);
if
(!
TextUtils
.
isEmpty
(
inviteCode
))
{
map
.
put
(
"code"
,
inviteCode
);
}
else
{
map
.
put
(
"code"
,
InviteCodeUtil
.
getInviteCode
(
etInviteCode
));
}
mPresenter
.
postData
(
RvFrameConfig
.
AUTH_POST
,
1
,
ApiConfig
.
HTTP_URL_USER_REGISTER
,
RegisteredBean
.
class
,
map
,
headMap
,
true
);
}
/**
* 重置密码
*/
private
void
resetPwd
()
{
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<>();
map
.
put
(
"username"
,
getPhone
());
map
.
put
(
"mobilecode"
,
getCode
());
map
.
put
(
"password"
,
getPwd
());
mPresenter
.
postData
(
1
,
ApiConfig
.
HTTP_URL_PWD_RESET
,
RegisteredBean
.
class
,
map
,
true
);
}
/**
* 获得手机号
*
* @return
*/
private
String
getPhone
()
{
return
etPhone
.
getText
().
toString
().
trim
();
}
/**
* 获得验证码
*
* @return
*/
private
String
getCode
()
{
return
etPhoneCode
.
getText
().
toString
().
trim
();
}
/**
* 获得输入密码
*
* @return
*/
private
String
getPwd
()
{
return
etPwd
.
getText
().
toString
().
trim
();
}
/**
* 清除编辑数据
*/
private
void
clearEditData
(
EditText
text
)
{
text
.
setText
(
""
);
}
/**
* 文本输入监听
*
* @param editText
*/
private
void
editListener
(
final
EditText
editText
)
{
editText
.
addTextChangedListener
(
new
TextChangedListener
()
{
@Override
public
void
afterTextChanged
(
Editable
s
)
{
super
.
afterTextChanged
(
s
);
if
(
editText
.
getId
()
==
R
.
id
.
et_phone
)
{
ivClearPhone
.
setVisibility
(
getPhone
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_phone_code
)
{
ivClearCode
.
setVisibility
(
getCode
().
length
()
>
0
?
View
.
VISIBLE
:
View
.
GONE
);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_pwd
)
{
// ivClearPwd.setVisibility(getPwd().length() > 0 ? View.VISIBLE : View.GONE);
}
else
if
(
editText
.
getId
()
==
R
.
id
.
et_invite_code
)
{
// ivClearAgainPwd.setVisibility(getAgainPwd().length() > 0 ? View.VISIBLE : View.GONE);
}
// switch (editText.getId()) {
// case R.id.et_phone:
// ivClearPhone.setVisibility(getPhone().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// case R.id.et_phone_code:
// ivClearCode.setVisibility(getCode().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// case R.id.et_pwd:
// ivClearPwd.setVisibility(getPwd().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// case R.id.et_again_pwd:
// ivClearAgainPwd.setVisibility(getAgainPwd().length() > 0 ? View.VISIBLE : View.GONE);
// break;
// }
if
(
etPhone
.
length
()
>
0
&&
etPhoneCode
.
length
()
>
0
&&
etPwd
.
length
()
>
0
)
{
tvRegistered
.
setEnabled
(
true
);
tvRegistered
.
setSelected
(
true
);
}
else
{
tvRegistered
.
setEnabled
(
false
);
tvRegistered
.
setSelected
(
false
);
}
}
});
}
/**
* 发送验证码
*
* @param timeLong 验证码时长
*/
private
void
sendCode
(
final
int
timeLong
)
{
RxJavaManager
.
getInstance
().
sendCode
(
timeLong
,
new
Consumer
<
Disposable
>()
{
@Override
public
void
accept
(
Disposable
disposable
)
throws
Exception
{
tvGetCode
.
setEnabled
(
false
);
}
},
new
Observer
<
Long
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
mDisposable
=
d
;
}
@Override
public
void
onNext
(
Long
aLong
)
{
tvGetCode
.
setText
(
""
+
aLong
+
"s"
);
}
@Override
public
void
onError
(
Throwable
e
)
{
}
@Override
public
void
onComplete
()
{
tvGetCode
.
setEnabled
(
true
);
tvGetCode
.
setText
(
mActivity
.
getString
(
R
.
string
.
rv_login_rest
));
}
});
}
/**
* 停止计时
*/
public
void
stopCarousel
()
{
if
(
mDisposable
!=
null
&&
!
mDisposable
.
isDisposed
())
{
mDisposable
.
dispose
();
}
}
@Override
public
void
onComplete
(
SHARE_MEDIA
share_media
,
int
i
,
Map
<
String
,
String
>
map
)
{
}
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
// TODO: add setContentView(...) invocation
ButterKnife
.
bind
(
this
);
}
private
boolean
isVerifyCancel
=
false
;
private
boolean
isVerifySucess
=
false
;
private
VerifyDialog
.
VerifyListener
verifyListener
=
new
VerifyDialog
.
VerifyListener
()
{
@Override
public
void
cancel
()
{
isVerifyCancel
=
true
;
builder
=
null
;
}
@Override
public
void
verify
(
int
x
,
int
y
)
{
verifyCode
(
x
,
y
);
}
@Override
public
void
freshen
()
{
if
(!
isVerifyCancel
)
sendVerifyCode
();
}
};
}
plugin_login/src/main/java/com/rv/login/VerifyDialog.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
;
import
android.annotation.SuppressLint
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.BitmapFactory
;
import
android.graphics.Color
;
import
android.support.annotation.NonNull
;
import
android.text.SpannableString
;
import
android.text.Spanned
;
import
android.text.TextUtils
;
import
android.text.style.ForegroundColorSpan
;
import
android.util.Base64
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.WindowManager
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
com.bumptech.glide.Glide
;
import
com.ruiwenliu.wrapper.dialog.BaseDialog
;
import
com.ruiwenliu.wrapper.util.TransformationUtils
;
import
com.ruiwenliu.wrapper.util.glide.GlideOptions
;
import
com.rv.login.bean.VerifyDataBean
;
import
com.rv.login.view.VerifyImageView
;
public
class
VerifyDialog
extends
BaseDialog
{
public
VerifyDialog
(
@NonNull
Context
context
)
{
super
(
context
);
}
public
VerifyDialog
(
@NonNull
Context
context
,
int
themeResId
)
{
super
(
context
,
themeResId
);
setDialogParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
Gravity
.
CENTER
);
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
dialog_verfy
;
}
public
static
class
Builder
{
private
Context
mContext
;
VerifyImageView
verifyView
;
LinearLayout
llControl
;
VerifyListener
listener
;
TextView
tvHint
;
VerifyDataBean
.
VerifyData
verifyData
;
VerifyDialog
dialog
;
public
Builder
(
Context
context
,
VerifyDataBean
.
VerifyData
verifyData
)
{
this
.
mContext
=
context
;
this
.
verifyData
=
verifyData
;
}
public
void
setListener
(
VerifyListener
listener
)
{
this
.
listener
=
listener
;
}
public
void
change
(
VerifyDataBean
.
VerifyData
verifyData
)
{
this
.
verifyData
=
verifyData
;
showPic
();
}
public
void
dismiss
()
{
if
(
dialog
!=
null
)
{
dialog
.
dismiss
();
}
}
/**
* 创建定制的对话框
*/
@SuppressLint
(
"ClickableViewAccessibility"
)
public
VerifyDialog
create
()
{
LayoutInflater
inflater
=
(
LayoutInflater
)
mContext
.
getSystemService
(
Context
.
LAYOUT_INFLATER_SERVICE
);
dialog
=
new
VerifyDialog
(
mContext
,
R
.
style
.
DialogActivityTheme
);
// 获取对话框的布局
View
layout
=
inflater
.
inflate
(
R
.
layout
.
dialog_verfy
,
null
);
// 为对话框添加布局和设置大小
dialog
.
addContentView
(
layout
,
new
WindowManager
.
LayoutParams
(
WindowManager
.
LayoutParams
.
MATCH_PARENT
,
WindowManager
.
LayoutParams
.
WRAP_CONTENT
));
this
.
verifyView
=
layout
.
findViewById
(
R
.
id
.
verfyview
);
this
.
verifyView
.
setVerifyListenter
(
verifyListenter
);
this
.
llControl
=
layout
.
findViewById
(
R
.
id
.
ll_control
);
this
.
tvHint
=
layout
.
findViewById
(
R
.
id
.
tv_hint
);
showPic
();
layout
.
findViewById
(
R
.
id
.
ll_change_pic
).
setOnClickListener
(
v
->
{
if
(
listener
!=
null
)
{
listener
.
freshen
();
}
});
layout
.
findViewById
(
R
.
id
.
tv_cancel
).
setOnClickListener
(
v
->
{
if
(
listener
!=
null
)
{
listener
.
cancel
();
}
dialog
.
dismiss
();
});
//默认不能点击对话框其他区域退出 和按返回键退出
dialog
.
setCancelable
(
true
);
dialog
.
setContentView
(
layout
);
return
dialog
;
}
public
void
showPic
()
{
if
(
this
.
tvHint
!=
null
&&
this
.
verifyData
!=
null
&&
this
.
verifyData
.
getWordList
()
!=
null
&&
this
.
verifyData
.
getWordList
().
size
()
>
0
)
{
SpannableString
spannableString
=
new
SpannableString
(
"请点击图片中的 “"
+
this
.
verifyData
.
getWordList
().
get
(
0
)
+
"” 字"
);
spannableString
.
setSpan
(
new
ForegroundColorSpan
(
Color
.
parseColor
(
"#f64747"
)),
9
,
10
,
Spanned
.
SPAN_EXCLUSIVE_EXCLUSIVE
);
this
.
tvHint
.
setText
(
spannableString
);
}
Bitmap
bitmap
=
stringToBitmap
(
this
.
verifyData
.
getOriginalImageBase64
());
GlideOptions
options
=
GlideOptions
.
placeholderOf
(
com
.
ruiwenliu
.
wrapper
.
R
.
drawable
.
glide_icon_placeholder
).
error
(
com
.
ruiwenliu
.
wrapper
.
R
.
drawable
.
glide_icon_error
);
Glide
.
with
(
mContext
)
.
asBitmap
()
.
load
(
bitmap
)
.
apply
(
options
)
.
into
(
new
TransformationUtils
(
this
.
verifyView
,
transforationListener
));
}
private
float
sy
=
1.0f
;
public
VerifyImageView
.
TouchVerifyListenter
verifyListenter
=
(
x
,
y
)
->
{
if
(
listener
!=
null
)
{
float
relX
=
x
/
sy
;
float
relY
=
y
/
sy
;
listener
.
verify
((
int
)
relX
,
(
int
)
relY
);
}
};
public
Bitmap
stringToBitmap
(
String
base64Data
)
{
if
(
TextUtils
.
isEmpty
(
base64Data
))
return
null
;
byte
[]
bytes
=
Base64
.
decode
(
base64Data
,
Base64
.
DEFAULT
);
return
BitmapFactory
.
decodeByteArray
(
bytes
,
0
,
bytes
.
length
);
}
private
TransformationUtils
.
TransforationListener
transforationListener
=
s
->
sy
=
s
;
}
public
interface
VerifyListener
{
void
cancel
();
void
verify
(
int
x
,
int
y
);
void
freshen
();
}
}
plugin_login/src/main/java/com/rv/login/bean/CheckLoginBean.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
.
bean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
/**
* Created :Auser
* Date: 2019/5/21.
* Desc:检查手机号是否绑定第三方
*/
public
class
CheckLoginBean
extends
BaseBean
{
/**
* data : {"type":1}
* message : 操作成功
*/
private
DataBean
data
;
public
DataBean
getData
()
{
return
data
;
}
public
void
setData
(
DataBean
data
)
{
this
.
data
=
data
;
}
public
static
class
DataBean
{
/**
* type : 1
*/
private
int
type
;
public
int
getType
()
{
return
type
;
}
public
void
setType
(
int
type
)
{
this
.
type
=
type
;
}
}
}
plugin_login/src/main/java/com/rv/login/bean/RegisteredBean.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
.
bean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
/**
* Created :Auser
* Date: 2019/5/20.
* Desc:注册
*/
public
class
RegisteredBean
extends
BaseBean
{
/**
* data : {"nickname":"XX_614105","headerurl":"https://retail.xiaochengxucms.com/images/12/2018/11/fDK7kkrmkMReK50l4r1Le740Kmra8.jpg","userid":5,"username":"13612688539"}
* message : 操作成功
* status : 200
* token : eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxMzYxMjY4ODUzOSIsInVzZXJJZCI6IjUiLCJyZXF1ZXN0VHlwZSI6IkFQUCIsImV4cCI6MTU1ODM0Njg4Nn0.aZfsQ6ZTGkFN9p0p01ICrjAKCHNtFm5q3tA98q8aQrzXV6WylgFEioe_M4daT1TLyKTGc7vMt5-sSxTXNlaYnU7Li7ochG40rvnL8CIrvBDayVEcCRCAe0XG6J0iVR678EJqacqEROUSZOhnuw3fE44HfvI3Aek8Y4f59nnSFCI
*/
private
DataBean
data
;
private
String
token
;
public
DataBean
getData
()
{
return
data
;
}
public
void
setData
(
DataBean
data
)
{
this
.
data
=
data
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getToken
()
{
return
token
;
}
public
void
setToken
(
String
token
)
{
this
.
token
=
token
;
}
public
static
class
DataBean
{
/**
* nickname : XX_614105
* headerurl : https://retail.xiaochengxucms.com/images/12/2018/11/fDK7kkrmkMReK50l4r1Le740Kmra8.jpg
* userid : 5
* username : 13612688539
*/
private
String
nickname
;
private
String
headerurl
;
private
String
userId
;
private
String
username
;
private
String
imUserId
;
private
String
imToken
;
//实名认证状态:0-未认证,1-已认证
private
String
certificationStatus
;
private
String
code
;
public
String
getNickname
()
{
return
nickname
;
}
public
void
setNickname
(
String
nickname
)
{
this
.
nickname
=
nickname
;
}
public
String
getHeaderurl
()
{
return
headerurl
;
}
public
void
setHeaderurl
(
String
headerurl
)
{
this
.
headerurl
=
headerurl
;
}
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getImUserId
()
{
return
imUserId
;
}
public
void
setImUserId
(
String
imUserId
)
{
this
.
imUserId
=
imUserId
;
}
public
String
getImToken
()
{
return
imToken
;
}
public
void
setImToken
(
String
imToken
)
{
this
.
imToken
=
imToken
;
}
public
String
getCertificationStatus
()
{
return
certificationStatus
;
}
public
void
setCertificationStatus
(
String
certificationStatus
)
{
this
.
certificationStatus
=
certificationStatus
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
}
}
plugin_login/src/main/java/com/rv/login/bean/VerifyDataBean.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
.
bean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
java.util.List
;
public
class
VerifyDataBean
extends
BaseBean
{
private
VerifyData
data
;
private
boolean
rel
;
public
VerifyData
getData
()
{
return
data
;
}
public
void
setData
(
VerifyData
data
)
{
this
.
data
=
data
;
}
public
boolean
isRel
()
{
return
rel
;
}
public
void
setRel
(
boolean
rel
)
{
this
.
rel
=
rel
;
}
public
class
VerifyData
{
private
String
originalImageBase64
;
private
List
<
String
>
wordList
;
private
double
width
;
private
double
height
;
public
String
getOriginalImageBase64
()
{
return
originalImageBase64
;
}
public
void
setOriginalImageBase64
(
String
originalImageBase64
)
{
this
.
originalImageBase64
=
originalImageBase64
;
}
public
List
<
String
>
getWordList
()
{
return
wordList
;
}
public
void
setWordList
(
List
<
String
>
wordList
)
{
this
.
wordList
=
wordList
;
}
public
double
getWidth
()
{
return
width
;
}
public
void
setWidth
(
double
width
)
{
this
.
width
=
width
;
}
public
double
getHeight
()
{
return
height
;
}
public
void
setHeight
(
double
height
)
{
this
.
height
=
height
;
}
}
}
plugin_login/src/main/java/com/rv/login/bean/VerifyResultBean.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
.
bean
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
public
class
VerifyResultBean
extends
BaseBean
{
private
boolean
data
;
private
boolean
rel
;
public
boolean
isData
()
{
return
data
;
}
public
void
setData
(
boolean
data
)
{
this
.
data
=
data
;
}
public
boolean
isRel
()
{
return
rel
;
}
public
void
setRel
(
boolean
rel
)
{
this
.
rel
=
rel
;
}
}
plugin_login/src/main/java/com/rv/login/view/VerifyImageView.java
0 → 100644
View file @
421a1fbb
package
com
.
rv
.
login
.
view
;
import
android.content.Context
;
import
android.util.AttributeSet
;
import
android.view.MotionEvent
;
public
class
VerifyImageView
extends
android
.
support
.
v7
.
widget
.
AppCompatImageView
{
private
TouchVerifyListenter
verifyListenter
;
public
VerifyImageView
(
Context
context
)
{
super
(
context
);
}
public
VerifyImageView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
}
public
void
setVerifyListenter
(
TouchVerifyListenter
listenter
)
{
this
.
verifyListenter
=
listenter
;
}
@Override
public
boolean
onTouchEvent
(
MotionEvent
event
)
{
super
.
onTouchEvent
(
event
);
switch
(
event
.
getAction
())
{
case
MotionEvent
.
ACTION_DOWN
:
int
x
=
(
int
)
event
.
getX
();
int
y
=
(
int
)
event
.
getY
();
if
(
verifyListenter
!=
null
)
{
verifyListenter
.
verify
(
x
,
y
);
}
break
;
}
return
true
;
}
public
interface
TouchVerifyListenter
{
void
verify
(
int
x
,
int
y
);
}
}
plugin_login/src/main/res/drawable-xhdpi/rv_pwd_watch.png
0 → 100644
View file @
421a1fbb
1.19 KB
plugin_login/src/main/res/drawable-xhdpi/rv_pwd_watch_no.png
0 → 100644
View file @
421a1fbb
1.07 KB
plugin_login/src/main/res/drawable/selector_rv_pwd.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:drawable=
"@drawable/rv_pwd_watch"
android:state_selected=
"true"
/>
<item
android:drawable=
"@drawable/rv_pwd_watch_no"
android:state_selected=
"false"
/>
</selector>
\ No newline at end of file
plugin_login/src/main/res/layout/dialog_privacy_tips.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_25"
android:layout_marginBottom=
"@dimen/size_25"
android:layout_marginLeft=
"@dimen/size_25"
android:layout_marginRight=
"@dimen/size_25"
android:background=
"@color/white"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<TextView
android:layout_marginLeft=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_15"
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:text=
"注册协议及隐私政策"
android:textColor=
"#323232"
android:textSize=
"@dimen/sp_16"
/>
<TextView
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:id=
"@+id/tv_tips_content"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_marginTop=
"@dimen/size_20"
android:layout_weight=
"1"
android:gravity=
"left"
android:text=
" 在您注册成为滴房车用户的过程中,您需要完成我们的注册流程并通过点击同意的形式在线签署以下协议,请您务必仔细阅读、充分理解协议中的条款内容后再点击同意(尤其是以粗体并下划线标识的条款,因为这些条款可能会明确您应履行的义务或对您的权利有所限制):\n\n
《用户协议》\n
《隐私政策》\n\n
【请您注意】如果您不同意以上协议或其中任何条款约定、请您停止注册。您停止注册后将仅可以浏览我们的商品信息但无法享受我们产品或服务。如您按照注册流程提示填写信息、阅读并点击同意上述协议且完成全部注册流程后,即表示您已充分阅读、理解并接受协议的全部内容;并表明您也同意滴房车可以依据以上的隐私政策内容来处理您的个人信息。如您对以上协议内容有任何疑问,您可随时与滴房车客服联系。
\n\n\n
点击同意即表示您已阅读并同意《用户协议》《隐私政策》"
android:singleLine=
"false"
android:textColor=
"#666666"
android:textSize=
"14sp"
/>
<View
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"match_parent"
android:layout_height=
"1px"
android:background=
"@color/colorYellow"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:orientation=
"horizontal"
>
<Button
android:textSize=
"@dimen/size_16"
android:background=
"@color/white"
android:text=
"不同意"
android:gravity=
"center"
android:id=
"@+id/btn_disagree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
<Button
android:textSize=
"@dimen/size_16"
android:textColor=
"@color/white"
android:text=
"同意"
android:background=
"#FF9900"
android:gravity=
"center"
android:id=
"@+id/btn_agree"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
plugin_login/src/main/res/layout/dialog_verfy.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:orientation=
"vertical"
android:paddingLeft=
"@dimen/size_20"
android:paddingRight=
"@dimen/size_20"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<android.support.v7.widget.CardView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:cardCornerRadius=
"@dimen/size_5"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<!--<com.rv.login.view.TouchVerifyView-->
<!--android:id="@+id/verfyview"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content" />-->
<com.rv.login.view.VerifyImageView
android:id=
"@+id/verfyview"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
<TextView
android:id=
"@+id/tv_hint"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_40"
android:background=
"@color/white"
android:gravity=
"center"
android:textColor=
"@color/textGray"
android:textSize=
"@dimen/sp_14"
/>
</LinearLayout>
</android.support.v7.widget.CardView>
<LinearLayout
android:id=
"@+id/ll_control"
android:layout_width=
"match_parent"
android:layout_height=
"43dp"
android:layout_marginTop=
"@dimen/dp_10"
android:background=
"@drawable/shape_rv_button_white"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<LinearLayout
android:id=
"@+id/ll_change_pic"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:gravity=
"center"
android:orientation=
"horizontal"
>
<ImageView
android:layout_width=
"@dimen/size_25"
android:layout_height=
"@dimen/size_25"
android:src=
"@drawable/icon_change_verify_code"
/>
<TextView
android:id=
"@+id/tv_change"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_3"
android:gravity=
"center"
android:text=
"换张图片"
android:textColor=
"@color/colorMain"
android:textSize=
"@dimen/sp_16"
/>
</LinearLayout>
<View
android:layout_width=
"1px"
android:layout_height=
"match_parent"
android:layout_marginTop=
"@dimen/size_5"
android:layout_marginBottom=
"@dimen/size_5"
android:background=
"@color/colorLine"
/>
<TextView
android:id=
"@+id/tv_cancel"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:drawablePadding=
"@dimen/dp_10"
android:gravity=
"center"
android:text=
"取消"
android:textColor=
"@color/colorMain"
android:textSize=
"@dimen/sp_16"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
plugin_login/src/main/res/layout/rv_act_bing_phone.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"com.rv.login.BingPhoneActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"手机号"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_phone"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_hint"
android:inputType=
"phone"
android:maxLength=
"11"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_phone"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
android:visibility=
"gone"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"13dp"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"验证码"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_phone_code"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_15"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_code"
android:inputType=
"number"
android:maxLength=
"6"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_code"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
android:visibility=
"gone"
/>
<View
android:layout_marginBottom=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_width=
"@dimen/size_half"
android:layout_height=
"wrap_content"
android:background=
"@color/textGray"
/>
<TextView
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:id=
"@+id/tv_get_code"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_centerVertical=
"true"
android:gravity=
"center"
android:text=
"@string/rv_get_code"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_bind"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginTop=
"27dp"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@drawable/selector_rv_button"
android:enabled=
"false"
android:gravity=
"center"
android:text=
"@string/rv_bind"
android:textColor=
"@color/colorWrite"
android:textSize=
"@dimen/size_16"
/>
</LinearLayout>
plugin_login/src/main/res/layout/rv_act_confirm_pwd.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"com.rv.login.ConfirmPwdActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"密码 "
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_pwd"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_pwd_hint"
android:inputType=
"textPassword"
android:maxLength=
"16"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_pwd"
android:layout_width=
"41dp"
android:layout_height=
"wrap_content"
android:paddingLeft=
"@dimen/dp_10"
android:paddingTop=
"@dimen/dp_10"
android:paddingRight=
"@dimen/size_18"
android:paddingBottom=
"@dimen/dp_10"
android:src=
"@drawable/selector_rv_pwd"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"13dp"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"invisible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"邀请码"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:digits=
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:id=
"@+id/et_invite_code"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"请输入邀请码(选填)"
android:maxLength=
"16"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"13dp"
android:layout_marginRight=
"@dimen/size_20"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<CheckBox
android:id=
"@+id/cb_annotations"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/textGray"
android:textSize=
"@dimen/text_14"
/>
<TextView
android:id=
"@+id/tv_agreement"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/textGray"
android:textSize=
"@dimen/text_14"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_registered"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginTop=
"27dp"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@drawable/selector_rv_button"
android:enabled=
"false"
android:gravity=
"center"
android:text=
"@string/rv_registered"
android:textColor=
"@color/colorWrite"
android:textSize=
"@dimen/size_16"
/>
</LinearLayout>
plugin_login/src/main/res/layout/rv_act_login.xml
0 → 100644
View file @
421a1fbb
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:context=
"com.rv.login.LoginRvActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_50"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/size_15"
android:textColor=
"@color/text_Main"
android:text=
"@string/rv_phone_type"
android:textSize=
"@dimen/text_16"
/>
<View
android:layout_width=
"@dimen/size_half"
android:layout_height=
"@dimen/size_30"
android:layout_marginLeft=
"@dimen/size_8"
android:background=
"@color/colorMain"
/>
<EditText
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@null"
android:layout_marginLeft=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_hint"
android:maxLength=
"11"
android:inputType=
"number"
android:id=
"@+id/et_phone"
android:layout_weight=
"1"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:id=
"@+id/iv_clear_phone"
android:visibility=
"gone"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_30"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<EditText
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@null"
android:layout_marginLeft=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_code"
android:maxLength=
"6"
android:id=
"@+id/et_phone_code"
android:inputType=
"number"
android:layout_weight=
"1"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:id=
"@+id/iv_clear_code"
android:padding=
"@dimen/size_15"
android:visibility=
"gone"
android:src=
"@drawable/comment_publisher_clear"
/>
<View
android:layout_width=
"@dimen/size_half"
android:layout_height=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_8"
android:background=
"@color/colorMain"
/>
<TextView
android:layout_width=
"@dimen/size_100"
android:layout_height=
"match_parent"
android:id=
"@+id/tv_get_code"
android:layout_centerVertical=
"true"
android:gravity=
"center"
android:text=
"@string/rv_get_code"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
</LinearLayout>
<TextView
android:layout_width=
"match_parent"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_height=
"@dimen/size_50"
android:textColor=
"@color/colorWrite"
android:text=
"@string/rv_login"
android:textSize=
"@dimen/size_16"
android:id=
"@+id/tv_login"
android:gravity=
"center"
android:enabled=
"false"
android:background=
"@drawable/selector_rv_button"
android:layout_marginTop=
"@dimen/size_40"
/>
<LinearLayout
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:orientation=
"horizontal"
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:layout_weight=
"1"
android:text=
"@string/rv_pwd_login"
android:textColor=
"@color/textMain"
android:id=
"@+id/tv_pwd_login"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_14"
android:text=
"@string/rv_login_toast"
android:textColor=
"@color/colorGray"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:text=
"@string/rv_registered_toast"
android:textColor=
"@color/colorAuxiliaryYellow"
android:id=
"@+id/tv_registered"
/>
</LinearLayout>
<LinearLayout
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_100"
android:orientation=
"horizontal"
android:layout_width=
"match_parent"
android:gravity=
"center_vertical"
android:layout_height=
"wrap_content"
>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_half"
android:layout_weight=
"1"
android:background=
"@color/colorGray"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:textColor=
"@color/colorGray"
android:text=
"@string/rv_other_login"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_half"
android:layout_weight=
"1"
android:background=
"@color/colorGray"
/>
</LinearLayout>
<LinearLayout
android:layout_marginLeft=
"@dimen/size_45"
android:layout_marginRight=
"@dimen/size_45"
android:layout_marginTop=
"@dimen/size_20"
android:orientation=
"horizontal"
android:gravity=
"center"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<ImageView
android:adjustViewBounds=
"true"
android:id=
"@+id/iv_weixin"
android:layout_marginRight=
"@dimen/size_15"
android:src=
"@drawable/umeng_socialize_wechat"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
/>
<ImageView
android:adjustViewBounds=
"true"
android:id=
"@+id/iv_qq"
android:layout_marginLeft=
"@dimen/size_15"
android:src=
"@drawable/umeng_socialize_qq"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
/>
</LinearLayout>
</LinearLayout>
plugin_login/src/main/res/layout/rv_act_pwd_login.xml
0 → 100644
View file @
421a1fbb
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
tools:context=
"com.rv.login.LoginRvActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_50"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/size_15"
android:textColor=
"@color/text_Main"
android:text=
"@string/rv_phone_type"
android:textSize=
"@dimen/text_16"
/>
<View
android:layout_width=
"@dimen/size_half"
android:layout_height=
"@dimen/size_30"
android:layout_marginLeft=
"@dimen/size_8"
android:background=
"@color/colorMain"
/>
<EditText
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@null"
android:layout_marginLeft=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_hint"
android:maxLength=
"11"
android:inputType=
"number"
android:id=
"@+id/et_phone"
android:layout_weight=
"1"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:id=
"@+id/iv_clear_phone"
android:visibility=
"gone"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_30"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<EditText
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@null"
android:layout_marginLeft=
"@dimen/size_15"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_pwd_hint"
android:maxLength=
"16"
android:id=
"@+id/et_pwd"
android:layout_weight=
"1"
android:inputType=
"textPassword"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:id=
"@+id/iv_clear_pwd"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/selector_rv_pwd"
/>
</LinearLayout>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_10"
android:layout_gravity=
"right"
android:textColor=
"@color/colorGray"
android:id=
"@+id/tv_forget_pwd"
android:layout_marginRight=
"@dimen/size_35"
android:text=
"@string/rv_forget_pwd"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_height=
"@dimen/size_50"
android:textColor=
"@color/colorWrite"
android:text=
"@string/rv_login"
android:textSize=
"@dimen/size_16"
android:id=
"@+id/tv_login"
android:gravity=
"center"
android:enabled=
"false"
android:background=
"@drawable/selector_rv_button"
android:layout_marginTop=
"@dimen/size_30"
/>
<LinearLayout
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:orientation=
"horizontal"
android:layout_marginTop=
"@dimen/size_20"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:layout_weight=
"1"
android:text=
"@string/rv_phone_login"
android:textColor=
"@color/textMain"
android:id=
"@+id/tv_phone_login"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_14"
android:text=
"@string/rv_login_toast"
android:textColor=
"@color/colorGray"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:text=
"@string/rv_registered_toast"
android:textColor=
"@color/colorAuxiliaryYellow"
android:id=
"@+id/tv_registered"
/>
</LinearLayout>
<LinearLayout
android:visibility=
"gone"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_100"
android:orientation=
"horizontal"
android:layout_width=
"match_parent"
android:gravity=
"center_vertical"
android:layout_height=
"wrap_content"
>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_half"
android:layout_weight=
"1"
android:background=
"@color/colorGray"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textSize=
"@dimen/text_16"
android:textColor=
"@color/colorGray"
android:text=
"@string/rv_other_login"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_half"
android:layout_weight=
"1"
android:background=
"@color/colorGray"
/>
</LinearLayout>
<LinearLayout
android:visibility=
"gone"
android:layout_marginLeft=
"@dimen/size_45"
android:layout_marginRight=
"@dimen/size_45"
android:layout_marginTop=
"@dimen/size_20"
android:orientation=
"horizontal"
android:gravity=
"center"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<ImageView
android:adjustViewBounds=
"true"
android:id=
"@+id/iv_weixin"
android:layout_marginRight=
"@dimen/size_15"
android:src=
"@drawable/umeng_socialize_wechat"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
/>
<ImageView
android:adjustViewBounds=
"true"
android:id=
"@+id/iv_qq"
android:layout_marginLeft=
"@dimen/size_15"
android:src=
"@drawable/umeng_socialize_qq"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
/>
</LinearLayout>
</LinearLayout>
plugin_login/src/main/res/layout/rv_act_registered.xml
0 → 100644
View file @
421a1fbb
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
"com.rv.login.RegisteredActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_50"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"手机号"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_phone"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_hint"
android:inputType=
"number"
android:maxLength=
"11"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_phone"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
android:visibility=
"gone"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"验证码"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_phone_code"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_phone_code"
android:inputType=
"number"
android:maxLength=
"6"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_code"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:padding=
"@dimen/size_15"
android:src=
"@drawable/comment_publisher_clear"
android:visibility=
"gone"
/>
<View
android:layout_marginBottom=
"@dimen/dp_10"
android:layout_marginTop=
"@dimen/dp_10"
android:layout_width=
"@dimen/size_half"
android:layout_height=
"wrap_content"
android:background=
"@color/textGray"
/>
<TextView
android:layout_marginLeft=
"@dimen/dp_10"
android:layout_marginRight=
"@dimen/dp_10"
android:id=
"@+id/tv_get_code"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:layout_centerVertical=
"true"
android:gravity=
"center"
android:text=
"@string/rv_get_code"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"visible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"密码 "
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:id=
"@+id/et_pwd"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"@string/rv_pwd_hint"
android:inputType=
"textPassword"
android:maxLength=
"16"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
<ImageView
android:id=
"@+id/iv_clear_pwd"
android:layout_width=
"33dp"
android:layout_height=
"wrap_content"
android:paddingLeft=
"@dimen/dp_10"
android:paddingTop=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:paddingBottom=
"@dimen/dp_10"
android:src=
"@drawable/selector_rv_pwd"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_20"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_input"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/dp_10"
android:text=
"*"
android:textColor=
"@color/colorAuxiliaryRed"
android:textSize=
"@dimen/text_14"
android:visibility=
"invisible"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_centerVertical=
"true"
android:text=
"邀请码"
android:textColor=
"@color/text_Main"
android:textSize=
"@dimen/text_16"
/>
<EditText
android:digits=
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:id=
"@+id/et_invite_code"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"13dp"
android:layout_weight=
"1"
android:background=
"@null"
android:gravity=
"center_vertical"
android:hint=
"请输入邀请码(非必填)"
android:maxLength=
"16"
android:maxLines=
"1"
android:textColorHint=
"@color/colorGray"
android:textSize=
"@dimen/text_16"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_20"
android:layout_marginTop=
"@dimen/size_15"
android:layout_marginRight=
"@dimen/size_20"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<CheckBox
android:id=
"@+id/cb_annotations"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/textGray"
android:textSize=
"@dimen/text_14"
/>
<TextView
android:id=
"@+id/tv_agreement"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/textGray"
android:textSize=
"@dimen/text_14"
/>
<!--
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/rv_registered_agreement"
android:textColor="@color/gray_FFB74B"
android:textSize="@dimen/text_16" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="和"
android:textColor="@color/textGray"
android:textSize="@dimen/text_16" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="《隐私政策》"
android:textColor="@color/gray_FFB74B"
android:textSize="@dimen/text_16" />-->
</LinearLayout>
<TextView
android:id=
"@+id/tv_registered"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_50"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginTop=
"@dimen/size_40"
android:layout_marginRight=
"@dimen/size_30"
android:background=
"@drawable/selector_rv_button"
android:enabled=
"false"
android:gravity=
"center"
android:text=
"@string/rv_registered"
android:textColor=
"@color/colorWrite"
android:textSize=
"@dimen/size_16"
/>
</LinearLayout>
plugin_login/src/main/res/values/strings.xml
0 → 100644
View file @
421a1fbb
<resources>
<string
name=
"app_name"
>
plugin_login
</string>
<string
name=
"rv_phone_login"
>
手机登录
</string>
<string
name=
"rv_phone_hint"
>
请输入11数字的手机号码
</string>
<string
name=
"rv_phone_code"
>
请输入短信验证码
</string>
<string
name=
"rv_phone_type"
>
+86
</string>
<string
name=
"rv_get_code"
>
获取验证码
</string>
<string
name=
"rv_login"
>
登录
</string>
<string
name=
"rv_pwd_login"
>
密码登录
</string>
<string
name=
"rv_login_toast"
>
还没有注册帐号?
</string>
<string
name=
"rv_registered_toast"
>
立即注册
</string>
<string
name=
"rv_other_login"
>
第三方帐户登录
</string>
<string
name=
"rv_login_rest"
>
重新获取
</string>
<string
name=
"rv_login_authorization_failure"
>
第三方登录失败
</string>
<string
name=
"rv_login_success"
>
登录成功
</string>
<string
name=
"rv_pwd_hint"
>
至少8位数字或字母
</string>
<string
name=
"rv_pwd_again_hint"
>
请再次输入密码
</string>
<string
name=
"rv_registered"
>
注册
</string>
<string
name=
"rv_registered_annotations"
>
注册即表示同意滴房车
</string>
<string
name=
"rv_registered_agreement"
>
《用户协议》
</string>
<string
name=
"rv_phone_registered"
>
手机注册
</string>
<string
name=
"rv_phone_bind"
>
绑定手机
</string>
<string
name=
"rv_bind"
>
绑定
</string>
<string
name=
"rv_phone_code_toast"
>
验证码发送成功
</string>
<string
name=
"rv_edit_pwd"
>
设置密码
</string>
<string
name=
"rv_pwd_length"
>
密码长度不能小于8位
</string>
<string
name=
"rv_confirm_agreement"
>
请确定App协议
</string>
<string
name=
"rv_forget_pwd"
>
忘记密码
</string>
<string
name=
"rv_reset_pwd"
>
重置密码
</string>
</resources>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment