Commit 617a6db6 authored by shiyl's avatar shiyl

用户协议和隐私政策页面添加title

parent 126cf715
...@@ -85,8 +85,7 @@ dependencies { ...@@ -85,8 +85,7 @@ dependencies {
api "com.yidian.xarc:xevent:0.0.3" api "com.yidian.xarc:xevent:0.0.3"
api "com.yidian.xpage:xpagenative:0.0.1" api "com.yidian.xpage:xpagenative:0.0.1"
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
api "com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4"
implementation('com.yidian.android:CommonComponent:0.0.88') { implementation('com.yidian.android:CommonComponent:0.0.88') {
exclude(group: 'com.yidian.android', module: 'NetworkImageLib') exclude(group: 'com.yidian.android', module: 'NetworkImageLib')
} }
......
package com.yidian.shenghuoquan.newscontent.bean package com.yidian.common.widget.blank
interface IBlankViewLoadAgainCallback { interface IBlankViewLoadAgainCallback {
fun loadAgainCallback() fun loadAgainCallback()
} }
\ No newline at end of file
...@@ -179,16 +179,18 @@ class ManagerChangeActivity : BaseActivity<ActivityManagerChangeBinding>() { ...@@ -179,16 +179,18 @@ class ManagerChangeActivity : BaseActivity<ActivityManagerChangeBinding>() {
it.setSpan(ForegroundColorSpan(Color.parseColor("#1852F1")), 28, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) it.setSpan(ForegroundColorSpan(Color.parseColor("#1852F1")), 28, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
it.setSpan(object : ClickableSpan() { it.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
val urlMap = HashMap<String, String>() val map = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
}, 28, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }, 28, 33, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
it.setSpan(object : ClickableSpan() { it.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
val urlMap = HashMap<String, String>() val map = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
}, 33, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) }, 33, 39, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
} }
......
...@@ -129,15 +129,17 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc ...@@ -129,15 +129,17 @@ class LoginLifeCircleActivity : BaseActivity<ActivityLoginBinding>(), IGetLifeAc
} }
viewBind.tvProtocol.setOnClickListener { viewBind.tvProtocol.setOnClickListener {
val urlMap = HashMap<String, String>() val map = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) map[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
viewBind.tvPrivacy.setOnClickListener { viewBind.tvPrivacy.setOnClickListener {
val urlMap = HashMap<String, String>() val map = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
} }
......
...@@ -14,92 +14,104 @@ import com.orhanobut.hawk.Hawk ...@@ -14,92 +14,104 @@ import com.orhanobut.hawk.Hawk
import com.yidian.common.HawkConfig import com.yidian.common.HawkConfig
import com.yidian.common.XRouterPathConstants.Companion.SUPPORT import com.yidian.common.XRouterPathConstants.Companion.SUPPORT
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding
import com.yidian.xarc.xbrid.XBridManager import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView import com.yidian.xarc.xbrid.XWebView
class ProductSupportActivity: BaseActivity<ActivityProtocolBinding>() { class ProductSupportActivity : BaseActivity<ActivityProtocolBinding>() {
override fun createViewBinding(): ActivityProtocolBinding {
return ActivityProtocolBinding.inflate(layoutInflater)
}
override fun getXPageName(): String { override fun createViewBinding(): ActivityProtocolBinding {
return SUPPORT return ActivityProtocolBinding.inflate(layoutInflater)
} }
private val FILE_CHOOSER_RESULT_CODE = 666 override fun getXPageName(): String {
private var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null return SUPPORT
}
private lateinit var webView: XWebView private val FILE_CHOOSER_RESULT_CODE = 666
private var uploadMessageAboveL: ValueCallback<Array<Uri>>? = null
@SuppressLint("SetJavaScriptEnabled") private lateinit var webView: XWebView
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.settings.javaScriptEnabled = true
val webViewClient: WebViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
super.shouldOverrideUrlLoading(view, url)
view.loadUrl(url)
return true
}
}
webView.webViewClient = webViewClient
webView.webChromeClient = object: WebChromeClient() {
override fun onShowFileChooser(webView: WebView?, filePathCallback: ValueCallback<Array<Uri>>?, fileChooserParams: FileChooserParams?): Boolean {
uploadMessageAboveL = filePathCallback
openImageChooserActivity()
return true
}
}
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
val url = "https://support.qq.com/product/304954"
val nickname = Hawk.get(HawkConfig.Nickname, "")
val profileUrl = Hawk.get(HawkConfig.ProfileUrl, "")
val username = Hawk.get(HawkConfig.Username, "")
val postData = "nickname=$nickname&avatar=$profileUrl&openid=$username"
webView.postUrl(url, postData.toByteArray())
}
private fun openImageChooserActivity() { @SuppressLint("SetJavaScriptEnabled")
val i = Intent(Intent.ACTION_GET_CONTENT) override fun init(savedInstanceState: Bundle?) {
i.addCategory(Intent.CATEGORY_OPENABLE) super.init(savedInstanceState)
i.type = "image/*" initTitle()
startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE) webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.settings.javaScriptEnabled = true
val webViewClient: WebViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String?): Boolean {
super.shouldOverrideUrlLoading(view, url)
view.loadUrl(url)
return true
}
} }
webView.webViewClient = webViewClient
webView.webChromeClient = object : WebChromeClient() {
override fun onShowFileChooser(
webView: WebView?,
filePathCallback: ValueCallback<Array<Uri>>?,
fileChooserParams: FileChooserParams?
): Boolean {
uploadMessageAboveL = filePathCallback
openImageChooserActivity()
return true
}
}
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
val url = "https://support.qq.com/product/304954"
val nickname = Hawk.get(HawkConfig.Nickname, "")
val profileUrl = Hawk.get(HawkConfig.ProfileUrl, "")
val username = Hawk.get(HawkConfig.Username, "")
val postData = "nickname=$nickname&avatar=$profileUrl&openid=$username"
webView.postUrl(url, postData.toByteArray())
}
private fun initTitle() {
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, resources.getString(R.string.my_staff))
}
private fun onActivityResultAboveL(requestCode: Int, resultCode: Int, intent: Intent?) { private fun openImageChooserActivity() {
if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) return val i = Intent(Intent.ACTION_GET_CONTENT)
var results: Array<Uri>? = null i.addCategory(Intent.CATEGORY_OPENABLE)
if (resultCode == Activity.RESULT_OK) { i.type = "image/*"
if (intent != null) { startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE)
val dataString = intent.dataString }
val clipData: ClipData? = intent.clipData
if (clipData != null) { private fun onActivityResultAboveL(requestCode: Int, resultCode: Int, intent: Intent?) {
results = Array(clipData.itemCount){ if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null) return
Uri.EMPTY var results: Array<Uri>? = null
} if (resultCode == Activity.RESULT_OK) {
for (i in 0 until clipData.itemCount) { if (intent != null) {
val item: ClipData.Item = clipData.getItemAt(i) val dataString = intent.dataString
results[i] = item.uri val clipData: ClipData? = intent.clipData
} if (clipData != null) {
} results = Array(clipData.itemCount) {
if (dataString != null) results = arrayOf(Uri.parse(dataString)) Uri.EMPTY
} }
for (i in 0 until clipData.itemCount) {
val item: ClipData.Item = clipData.getItemAt(i)
results[i] = item.uri
}
} }
uploadMessageAboveL?.onReceiveValue(results) if (dataString != null) results = arrayOf(Uri.parse(dataString))
uploadMessageAboveL = null }
} }
uploadMessageAboveL?.onReceiveValue(results)
uploadMessageAboveL = null
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
if (requestCode == FILE_CHOOSER_RESULT_CODE) { if (requestCode == FILE_CHOOSER_RESULT_CODE) {
if (uploadMessageAboveL != null) { if (uploadMessageAboveL != null) {
onActivityResultAboveL(requestCode, resultCode, data) onActivityResultAboveL(requestCode, resultCode, data)
} }
}
} }
}
} }
package com.yidian.shenghuoquan.newscontent.ui package com.yidian.shenghuoquan.newscontent.ui
import android.os.Bundle import android.os.Bundle
import android.util.Log
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.common.XRouterPathConstants.Companion.PROTOCOL import com.yidian.common.XRouterPathConstants.Companion.PROTOCOL
import com.yidian.common.base.BaseActivity import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.initTitleBar
import com.yidian.common.utils.ToastUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding import com.yidian.shenghuoquan.newscontent.databinding.ActivityProtocolBinding
import com.yidian.xarc.xbrid.XBridManager import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView import com.yidian.xarc.xbrid.XWebView
/**
class ProtocolActivity: BaseActivity<ActivityProtocolBinding>() { * 用户协议 & 隐私政策
override fun createViewBinding(): ActivityProtocolBinding { */
return ActivityProtocolBinding.inflate(layoutInflater) class ProtocolActivity : BaseActivity<ActivityProtocolBinding>() {
private lateinit var webView: XWebView
override fun createViewBinding(): ActivityProtocolBinding {
return ActivityProtocolBinding.inflate(layoutInflater)
}
override fun getXPageName(): String {
return PROTOCOL
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
val serializableExtra = intent.getSerializableExtra(XRouterPathConstants.ParamsKey)
serializableExtra?.let {
val paramsMap = serializableExtra as HashMap<*, *>
val protocolTitle = paramsMap[ProtocolTitleKey] as String?
val protocolUrl = paramsMap[ProtocolUrlKey] as String?
initTitle(protocolTitle)
initWebView(protocolUrl)
} }
}
override fun getXPageName(): String { private fun initTitle(protocolTitle: String?) {
return PROTOCOL initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, protocolTitle ?: "协议")
} }
companion object{ private fun initWebView(protocolUrl: String?) {
const val ProtocolUrlKey = "protocol_url" if (protocolUrl.isNullOrBlank()) {
ToastUtils.showShortSafe("链接地址为空")
return
} }
webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.loadUrl(protocolUrl)
}
private lateinit var webView: XWebView companion object {
const val ProtocolTitleKey = "protocol_title"
const val ProtocolUrlKey = "protocol_url"
}
}
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
if(intent.getSerializableExtra(XRouterPathConstants.ParamsKey) !=null){
val paramsMap = intent.getSerializableExtra(XRouterPathConstants.ParamsKey) as HashMap<*, *>
val protocolUrl = paramsMap[ProtocolUrlKey] as String
Log.e("zhb-yd", "protocolUrl:$protocolUrl")
webView = XBridManager.getWebView(this, "testidenfier", viewBind.wvProtocol)
webView.loadUrl(protocolUrl)
}
}
}
\ No newline at end of file
...@@ -25,95 +25,121 @@ import com.yidian.shenghuoquan.newscontent.R ...@@ -25,95 +25,121 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/**
* 用户协议 & 隐私政策 弹框
*/
class ProtocolDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?) :
Dialog(activity, themeResId) {
private lateinit var tvPrivacyPolicyTwo: YdTextView
private lateinit var tvAgree: YdTextView
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
class ProtocolDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?): Dialog(activity, themeResId) { init {
private lateinit var tvPrivacyPolicyTwo: YdTextView setDialog()
private lateinit var tvAgree: YdTextView }
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
init { private fun setDialog() {
setDialog() this.setCanceledOnTouchOutside(false)
} this.setContentView(R.layout.protocol_dialog)
this.setOwnerActivity(activity)
tvPrivacyPolicyTwo = findViewById(R.id.tv_privacyPolicyTwo)
tvAgree = findViewById(R.id.tv_agree)
tvDisagree = findViewById(R.id.tv_disagree)
setSpannableString()
setClickListener()
}
private fun setDialog(){ private fun setSpannableString() {
this.setCanceledOnTouchOutside(false) tvPrivacyPolicyTwo.highlightColor = Color.TRANSPARENT
this.setContentView(R.layout.protocol_dialog) val textSpannedBuilder = SpannableStringBuilder()
this.setOwnerActivity(activity) val textSpanned1 = SpannableString(activity.getString(R.string.privacy_policy_two_first))
tvPrivacyPolicyTwo = findViewById(R.id.tv_privacyPolicyTwo) val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy_statement))
tvAgree = findViewById(R.id.tv_agree) textSpanned2.setSpan(
tvDisagree = findViewById(R.id.tv_disagree) ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
setSpannableString() 0,
setClickListener() textSpanned2.length,
} Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned2.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.getString(R.string.privacy_policy_statement)
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
private fun setSpannableString(){ override fun updateDrawState(ds: TextPaint) {
tvPrivacyPolicyTwo.highlightColor = Color.TRANSPARENT ds.isUnderlineText = false
val textSpannedBuilder = SpannableStringBuilder() }
val textSpanned1 = SpannableString(activity.getString(R.string.privacy_policy_two_first)) }, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy_statement)) val textSpanned3 = SpannableString(activity.getString(R.string.and))
textSpanned2.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)), 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) textSpanned3.setSpan(
textSpanned2.setSpan(object: ClickableSpan(){ ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
override fun onClick(view: View) { 0,
val currentClickTime = System.currentTimeMillis() textSpanned3.length,
if(currentClickTime - lastClickTime < 1000) return Spanned.SPAN_INCLUSIVE_EXCLUSIVE
lastClickTime = currentClickTime )
val urlMap = HashMap<String, String>() val textSpanned4 = SpannableString(activity.getString(R.string.user_protocol))
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement textSpanned4.setSpan(
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
} 0,
textSpanned4.length,
Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned4.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.getString(R.string.user_protocol)
urlMap[ProtocolActivity.ProtocolUrlKey] = userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
override fun updateDrawState(ds: TextPaint) { override fun updateDrawState(ds: TextPaint) {
ds.isUnderlineText = false ds.isUnderlineText = false
} }
}, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) }, 0, textSpanned4.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned3 = SpannableString(activity.getString(R.string.and)) val textSpanned5 = SpannableString(activity.getString(R.string.privacy_policy_two_second))
textSpanned3.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)), 0, textSpanned3.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) textSpanned5.setSpan(
val textSpanned4 = SpannableString(activity.getString(R.string.user_protocol)) ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
textSpanned4.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)), 0, textSpanned4.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) 0,
textSpanned4.setSpan(object: ClickableSpan(){ textSpanned5.length,
override fun onClick(view: View) { Spanned.SPAN_INCLUSIVE_EXCLUSIVE
val currentClickTime = System.currentTimeMillis() )
if(currentClickTime - lastClickTime < 1000) return tvPrivacyPolicyTwo.movementMethod = LinkMovementMethod.getInstance()
lastClickTime = currentClickTime tvPrivacyPolicyTwo.text =
val urlMap = HashMap<String, String>() textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3).append(textSpanned4).append(textSpanned5)
urlMap[ProtocolActivity.ProtocolUrlKey] = userProtocol }
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
override fun updateDrawState(ds: TextPaint) { private fun setClickListener() {
ds.isUnderlineText = false tvAgree.setOnClickListener {
} Hawk.put(HawkConfig.ProtocolIsAgree, true)
}, 0, textSpanned4.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) dismiss()
val textSpanned5 = SpannableString(activity.getString(R.string.privacy_policy_two_second)) Handler().postDelayed({
textSpanned5.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)), 0, textSpanned5.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
tvPrivacyPolicyTwo.movementMethod = LinkMovementMethod.getInstance() activity.finish()
tvPrivacyPolicyTwo.text = textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3).append(textSpanned4).append(textSpanned5) }, 1000)
} }
private fun setClickListener(){ tvDisagree.setOnClickListener {
tvAgree.setOnClickListener{ dismiss()
Hawk.put(HawkConfig.ProtocolIsAgree, true) val protocolHintDialog = ProtocolHintDialog(activity, R.style.normal_dialog, paramsMap)
dismiss() protocolHintDialog.show()
Handler().postDelayed({
XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
activity.finish()
}, 1000)
}
tvDisagree.setOnClickListener{
dismiss()
val protocolHintDialog = ProtocolHintDialog(activity, R.style.normal_dialog, paramsMap)
protocolHintDialog.show()
}
} }
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val params: WindowManager.LayoutParams? = window?.attributes val params: WindowManager.LayoutParams? = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT params?.height = WindowManager.LayoutParams.WRAP_CONTENT
window?.attributes = params window?.attributes = params
window?.attributes?.gravity = Gravity.BOTTOM window?.attributes?.gravity = Gravity.BOTTOM
} }
} }
\ No newline at end of file
...@@ -24,78 +24,92 @@ import com.yidian.shenghuoquan.newscontent.R ...@@ -24,78 +24,92 @@ import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity import com.yidian.shenghuoquan.newscontent.ui.ProtocolActivity
import com.yidian.xpage.XPageManager import com.yidian.xpage.XPageManager
/**
* 用户协议 & 隐私政策的 详细内容提示弹框
*/
class ProtocolHintDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?) :
Dialog(activity, themeResId) {
private lateinit var tvContent: YdTextView
private lateinit var tvAgree: YdTextView
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
class ProtocolHintDialog(private val activity: Activity, themeResId: Int, private val paramsMap: HashMap<String, Any?>?): Dialog(activity, themeResId) { init {
private lateinit var tvContent: YdTextView setDialog()
private lateinit var tvAgree: YdTextView }
private lateinit var tvDisagree: YdTextView
private var lastClickTime = 0L
init { private fun setDialog() {
setDialog() this.setCanceledOnTouchOutside(false)
} this.setContentView(R.layout.protocol_hint_dialog)
this.setOwnerActivity(activity)
tvContent = findViewById(R.id.tv_content)
tvAgree = findViewById(R.id.tv_agree)
tvDisagree = findViewById(R.id.tv_disagree)
setSpannableString()
setClickListener()
}
private fun setDialog(){ private fun setSpannableString() {
this.setCanceledOnTouchOutside(false) tvContent.highlightColor = Color.TRANSPARENT
this.setContentView(R.layout.protocol_hint_dialog) val textSpannedBuilder = SpannableStringBuilder()
this.setOwnerActivity(activity) val textSpanned1 = SpannableString(activity.getString(R.string.protocol_hint_content_one))
tvContent = findViewById(R.id.tv_content) val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy))
tvAgree = findViewById(R.id.tv_agree) textSpanned2.setSpan(
tvDisagree = findViewById(R.id.tv_disagree) ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)),
setSpannableString() 0,
setClickListener() textSpanned2.length,
} Spanned.SPAN_INCLUSIVE_EXCLUSIVE
)
textSpanned2.setSpan(object : ClickableSpan() {
override fun onClick(view: View) {
val currentClickTime = System.currentTimeMillis()
if (currentClickTime - lastClickTime < 1000) return
lastClickTime = currentClickTime
val urlMap = HashMap<String, String>()
urlMap[ProtocolActivity.ProtocolTitleKey] = activity.resources.getString(R.string.privacy_policy_statement)
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap)
}
private fun setSpannableString(){ override fun updateDrawState(ds: TextPaint) {
tvContent.highlightColor = Color.TRANSPARENT ds.isUnderlineText = false
val textSpannedBuilder = SpannableStringBuilder() }
val textSpanned1 = SpannableString(activity.getString(R.string.protocol_hint_content_one)) }, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
val textSpanned2 = SpannableString(activity.getString(R.string.privacy_policy)) val textSpanned3 = SpannableString(activity.getString(R.string.protocol_hint_content_two))
textSpanned2.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.lightBlueColor)), 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) textSpanned3.setSpan(
textSpanned2.setSpan(object: ClickableSpan(){ ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)),
override fun onClick(view: View) { 0,
val currentClickTime = System.currentTimeMillis() textSpanned3.length,
if(currentClickTime - lastClickTime < 1000) return Spanned.SPAN_INCLUSIVE_EXCLUSIVE
lastClickTime = currentClickTime )
val urlMap = HashMap<String, String>() tvContent.movementMethod = LinkMovementMethod.getInstance()
urlMap[ProtocolActivity.ProtocolUrlKey] = privacyPolicyStatement tvContent.text = textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3)
XPageManager.push(XRouterPathConstants.PROTOCOL, urlMap) }
}
override fun updateDrawState(ds: TextPaint) { private fun setClickListener() {
ds.isUnderlineText = false tvAgree.setOnClickListener {
} Hawk.put(HawkConfig.ProtocolIsAgree, true)
}, 0, textSpanned2.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) dismiss()
val textSpanned3 = SpannableString(activity.getString(R.string.protocol_hint_content_two)) Handler().postDelayed({
textSpanned3.setSpan(ForegroundColorSpan(activity.resources.getColor(R.color.mainBlackColor)), 0, textSpanned3.length, Spanned.SPAN_INCLUSIVE_EXCLUSIVE) XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
tvContent.movementMethod = LinkMovementMethod.getInstance() activity.finish()
tvContent.text = textSpannedBuilder.append(textSpanned1).append(textSpanned2).append(textSpanned3) }, 1000)
} }
private fun setClickListener(){ tvDisagree.setOnClickListener {
tvAgree.setOnClickListener{ dismiss()
Hawk.put(HawkConfig.ProtocolIsAgree, true) Handler().postDelayed({
dismiss() activity.finish()
Handler().postDelayed({ }, 200)
XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
activity.finish()
}, 1000)
}
tvDisagree.setOnClickListener{
dismiss()
Handler().postDelayed({
activity.finish()
}, 200)
}
} }
}
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val params: WindowManager.LayoutParams? = window?.attributes val params: WindowManager.LayoutParams? = window?.attributes
params?.width = WindowManager.LayoutParams.MATCH_PARENT params?.width = WindowManager.LayoutParams.MATCH_PARENT
params?.height = WindowManager.LayoutParams.WRAP_CONTENT params?.height = WindowManager.LayoutParams.WRAP_CONTENT
window?.attributes = params window?.attributes = params
window?.attributes?.gravity = Gravity.BOTTOM window?.attributes?.gravity = Gravity.BOTTOM
} }
} }
\ No newline at end of file
...@@ -44,10 +44,16 @@ class PrivacyAgreementView @JvmOverloads constructor( ...@@ -44,10 +44,16 @@ class PrivacyAgreementView @JvmOverloads constructor(
val id = v?.id val id = v?.id
if (id == R.id.tv_privacy_policy) { if (id == R.id.tv_privacy_policy) {
// 隐私政策 // 隐私政策
XPageManager.push(XRouterPathConstants.PROTOCOL, hashMapOf(Pair(ProtocolActivity.ProtocolUrlKey, AppConfig.privacyPolicyStatement))) val map = HashMap<String, String>()
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.privacy_policy_statement)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.privacyPolicyStatement
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} else if (id == R.id.tv_user_agreement) { } else if (id == R.id.tv_user_agreement) {
// 用户协议 // 用户协议
XPageManager.push(XRouterPathConstants.PROTOCOL, hashMapOf(Pair(ProtocolActivity.ProtocolUrlKey, AppConfig.userProtocol))) val map = HashMap<String, String>()
map[ProtocolActivity.ProtocolTitleKey] = resources.getString(R.string.user_protocol)
map[ProtocolActivity.ProtocolUrlKey] = AppConfig.userProtocol
XPageManager.push(XRouterPathConstants.PROTOCOL, map)
} }
} }
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
</com.yidian.nightmode.widget.YdRelativeLayout> </com.yidian.nightmode.widget.YdRelativeLayout>
<com.yidian.shenghuoquan.newscontent.widget.BlankPageView <com.yidian.common.widget.blank.BlankPageView
android:id="@+id/fly_blank" android:id="@+id/fly_blank"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/lly_root" android:id="@+id/lly_root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
tools:context="com.yidian.subway.newscontent.ui.NewsContentActivity">
<FrameLayout <FrameLayout
android:id="@+id/fly_webContainer" android:id="@+id/fly_webContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<com.yidian.nightmode.widget.YdFrameLayout <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/mainBgColor" android:background="@color/mainBgColor"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
tools:ignore="MissingDefaultResource"> android:orientation="vertical">
<com.yidian.shenghuoquan.newscontent.ui.webview.YiDianWebView <include
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<com.yidian.common.webview.YiDianWebView
android:id="@+id/wv_protocol" android:id="@+id/wv_protocol"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="0dp"
android:scrollbars="none"/> android:layout_weight="1"
android:scrollbars="none" />
</com.yidian.nightmode.widget.YdFrameLayout> </LinearLayout>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/mainBgColor"> android:background="@color/mainBgColor">
<com.yidian.shenghuoquan.newscontent.widget.BlankPageView <com.yidian.common.widget.blank.BlankPageView
android:id="@+id/fly_blank" android:id="@+id/fly_blank"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/mainBgColor"> android:background="@color/mainBgColor">
<com.yidian.shenghuoquan.newscontent.widget.BlankPageView <com.yidian.common.widget.blank.BlankPageView
android:id="@+id/fly_blank" android:id="@+id/fly_blank"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/white"> android:background="@color/white">
<com.yidian.shenghuoquan.newscontent.widget.BlankPageView <com.yidian.common.widget.blank.BlankPageView
android:id="@+id/fly_blank" android:id="@+id/fly_blank"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
android:orientation="vertical"> android:orientation="vertical">
<com.yidian.shenghuoquan.newscontent.widget.BlankPageView <com.yidian.common.widget.blank.BlankPageView
android:id="@+id/fly_blank" android:id="@+id/fly_blank"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<com.yidian.shenghuoquan.newscontent.ui.webview.YiDianWebView <com.yidian.common.webview.YiDianWebView
android:id="@+id/comment_web" android:id="@+id/comment_web"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment