Commit 6ec9cc50 authored by shiyl's avatar shiyl

新建发布优惠券WebView

parent 425191e0
...@@ -9,6 +9,7 @@ class XRouterPathConstants { ...@@ -9,6 +9,7 @@ class XRouterPathConstants {
const val NEWS_MAIN = "/MainActivity" const val NEWS_MAIN = "/MainActivity"
const val NEWS_CONTENT = "/news" const val NEWS_CONTENT = "/news"
// 用户协议 & 隐私政策
const val PROTOCOL = "/protocol" const val PROTOCOL = "/protocol"
const val SUPPORT = "/productSupport" const val SUPPORT = "/productSupport"
...@@ -79,6 +80,9 @@ class XRouterPathConstants { ...@@ -79,6 +80,9 @@ class XRouterPathConstants {
// 钱包 —— 常见问题 // 钱包 —— 常见问题
const val COMMON_PROBLEM = "/wallet/CommonProblemActivity" const val COMMON_PROBLEM = "/wallet/CommonProblemActivity"
// 商品 —— 发布优惠券
const val publishCouponsActivity = "/commodity/PublishCouponsActivity"
// 商品 —— 优惠券选择类目 // 商品 —— 优惠券选择类目
const val chooseCategoryActivity = "/commodity/ChooseCategoryActivity" const val chooseCategoryActivity = "/commodity/ChooseCategoryActivity"
} }
......
...@@ -12,7 +12,8 @@ import com.yidian.commoncomponent.BaseFragment ...@@ -12,7 +12,8 @@ import com.yidian.commoncomponent.BaseFragment
* 所有Fragment的基类 * 所有Fragment的基类
*/ */
abstract class BaseFragment<VB : ViewBinding> : BaseFragment() { abstract class BaseFragment<VB : ViewBinding> : BaseFragment() {
private var _binding: VB?=null
private var _binding: VB? = null
protected val viewBinding get() = _binding!! protected val viewBinding get() = _binding!!
override fun onCreateView( override fun onCreateView(
...@@ -20,9 +21,8 @@ abstract class BaseFragment<VB : ViewBinding> : BaseFragment() { ...@@ -20,9 +21,8 @@ abstract class BaseFragment<VB : ViewBinding> : BaseFragment() {
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
_binding = createViewBinding(inflater, container)
_binding = createViewBinding(inflater,container) return _binding?.root
return _binding!!.root
} }
abstract fun createViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB abstract fun createViewBinding(inflater: LayoutInflater, container: ViewGroup?): VB
...@@ -38,7 +38,8 @@ abstract class BaseFragment<VB : ViewBinding> : BaseFragment() { ...@@ -38,7 +38,8 @@ abstract class BaseFragment<VB : ViewBinding> : BaseFragment() {
super.onDestroyView() super.onDestroyView()
_binding = null _binding = null
} }
fun showToast(msg:String){
Toast.makeText(requireContext(),msg,Toast.LENGTH_SHORT).show() fun showToast(msg: String) {
Toast.makeText(requireContext(), msg, Toast.LENGTH_SHORT).show()
} }
} }
package com.yidian.shenghuoquan.newscontent.ui.webview package com.yidian.common.webview
import android.content.Context import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
......
package com.yidian.common.widget.blank
import android.content.Context
import android.util.AttributeSet
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.yidian.common.R
import com.yidian.nightmode.widget.YdLinearLayout
import com.yidian.nightmode.widget.YdTextView
import com.yidian.common.utils.YdUiUtils
/**
* 缺省页面
*/
class BlankPageView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0) :
FrameLayout(context, attrs, defStyle) {
companion object {
const val Error = "error"
const val Blank = "blank"
}
private lateinit var llyError: YdLinearLayout
private lateinit var llyBlank: YdLinearLayout
private lateinit var tvLoadAgain: YdTextView
private lateinit var loadAgainCallback: IBlankViewLoadAgainCallback
init {
inflate(context, R.layout.blank_page_view, this)
}
fun initBlankPageView(loadAgainCallback: IBlankViewLoadAgainCallback, position: Int) {
this.loadAgainCallback = loadAgainCallback
val lp = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
lp.topMargin = YdUiUtils.dip2px(position, context)
lp.gravity = Gravity.CENTER_HORIZONTAL
llyError.layoutParams = lp
llyBlank.layoutParams = lp
}
override fun onFinishInflate() {
super.onFinishInflate()
llyError = findViewById(R.id.lly_error)
llyBlank = findViewById(R.id.lly_blank)
tvLoadAgain = findViewById(R.id.tv_loadAgain)
setClickListener()
}
private fun setClickListener() {
tvLoadAgain.setOnClickListener {
loadAgainCallback.loadAgainCallback()
}
}
fun setBlankStatus(status: String) {
when (status) {
Error -> {
llyError.visibility = View.VISIBLE
llyBlank.visibility = View.GONE
}
Blank -> {
llyError.visibility = View.GONE
llyBlank.visibility = View.VISIBLE
}
}
}
}
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<com.yidian.nightmode.widget.YdImageView <com.yidian.nightmode.widget.YdImageView
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="150dp" android:layout_height="150dp"
android:background="@mipmap/icon_404_wifi"/> android:background="@drawable/icon_404_wifi"/>
<com.yidian.nightmode.widget.YdTextView <com.yidian.nightmode.widget.YdTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<com.yidian.nightmode.widget.YdImageView <com.yidian.nightmode.widget.YdImageView
android:layout_width="150dp" android:layout_width="150dp"
android:layout_height="150dp" android:layout_height="150dp"
android:background="@mipmap/icon_blank_page"/> android:background="@drawable/icon_blank_page"/>
<com.yidian.nightmode.widget.YdTextView <com.yidian.nightmode.widget.YdTextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
......
...@@ -2,6 +2,7 @@ package com.yidian.shenghuoquan.commodity.app ...@@ -2,6 +2,7 @@ package com.yidian.shenghuoquan.commodity.app
import com.yidian.common.XRouterPathConstants import com.yidian.common.XRouterPathConstants
import com.yidian.shenghuoquan.commodity.ui.coupon.ChooseCategoryActivity import com.yidian.shenghuoquan.commodity.ui.coupon.ChooseCategoryActivity
import com.yidian.shenghuoquan.commodity.ui.coupon.PublishCouponsActivity
/** /**
...@@ -10,7 +11,8 @@ import com.yidian.shenghuoquan.commodity.ui.coupon.ChooseCategoryActivity ...@@ -10,7 +11,8 @@ import com.yidian.shenghuoquan.commodity.ui.coupon.ChooseCategoryActivity
object ClassMapUtil { object ClassMapUtil {
val xPageNodeMap = mapOf( val xPageNodeMap = mapOf(
XRouterPathConstants.Companion.chooseCategoryActivity to ChooseCategoryActivity::class.java XRouterPathConstants.Companion.publishCouponsActivity to PublishCouponsActivity::class.java,// 发布优惠券
XRouterPathConstants.Companion.chooseCategoryActivity to ChooseCategoryActivity::class.java,// 优惠券选择类目
) )
} }
package com.yidian.shenghuoquan.commodity.ui.coupon
import android.webkit.WebChromeClient
import android.webkit.WebView
import androidx.activity.viewModels
import com.google.gson.Gson
import com.yidian.common.XRouterPathConstants
import com.yidian.common.extensions.initTitleBar
import com.yidian.common.http.HttpResult
import com.yidian.common.mvvm.BaseMvvmActivity
import com.yidian.shenghuoquan.commodity.R
import com.yidian.shenghuoquan.commodity.databinding.CommodityActivityPublishCouponsBinding
import com.yidian.xarc.xbrid.XBridManager
import com.yidian.xarc.xbrid.XWebView
import com.yidian.xpage.XPageViewProtocol
import org.json.JSONObject
/**
* 发布优惠券
*/
class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsBinding, PublishCouponsViewModel>(), XPageViewProtocol {
private lateinit var webView: XWebView
private var loadDataFinish = false
private var loadWebViewFinish = false
private var data: HttpResult<Any?>? = null
override val layoutId: Int = R.layout.commodity_activity_publish_coupons
override val vm: PublishCouponsViewModel by viewModels()
override fun getXPageName(): String {
return XRouterPathConstants.publishCouponsActivity
}
override fun initView() {
initTitleBar(binding.include.toolbar, binding.include.tvTitle, "发布优惠券")
val serializableExtra = intent.getSerializableExtra(XRouterPathConstants.ParamsKey)
serializableExtra?.let {
val paramsMap = serializableExtra as HashMap<*, *>
val couponId = paramsMap[CouponId] as String
initWebView()
}
}
private fun initWebView() {
webView = XBridManager.getWebView(this, "testidenfier", binding.couponWebView)
webView.loadUrl("xbrid_article")
webView.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if (newProgress == 100) {
loadWebViewFinish = true
postDataToWeb()
}
}
}
WebView.setWebContentsDebuggingEnabled(true)
}
private fun postDataToWeb() {
// if (loadDataFinish && loadWebViewFinish) {
// val contentDetailBean = ContentDetailBean("getArticleData", data)
// val params = Gson().toJson(contentDetailBean)
// XBridManager.postEvent("ArticleService", JSONObject(params), webView)
// }
}
override fun onDestroy() {
super.onDestroy()
if (::webView.isInitialized) {
XBridManager.backWebView(webView)
}
}
companion object {
const val CouponId = "coupon_id"
}
}
package com.yidian.shenghuoquan.commodity.ui.coupon
import com.yidian.common.mvvm.BaseViewModel
class PublishCouponsViewModel : BaseViewModel() {
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="vm"
type="com.yidian.shenghuoquan.commodity.ui.coupon.PublishCouponsViewModel" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/include"
layout="@layout/layout_common_toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.yidian.common.webview.YiDianWebView
android:id="@+id/coupon_web_view"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/include" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
package com.yidian.shenghuoquan.newscontent.widget
import android.content.Context
import android.util.AttributeSet
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.yidian.nightmode.widget.YdLinearLayout
import com.yidian.nightmode.widget.YdTextView
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.bean.IBlankViewLoadAgainCallback
import com.yidian.common.utils.YdUiUtils
class BlankPageView@JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyle: Int = 0): FrameLayout(context, attrs,defStyle) {
companion object{
const val Error = "error"
const val Blank = "blank"
}
private lateinit var llyError: YdLinearLayout
private lateinit var llyBlank: YdLinearLayout
private lateinit var tvLoadAgain: YdTextView
private lateinit var loadAgainCallback: IBlankViewLoadAgainCallback
init {
inflate(context, R.layout.blank_page_view,this)
}
fun initBlankPageView(loadAgainCallback: IBlankViewLoadAgainCallback, position: Int){
this.loadAgainCallback = loadAgainCallback
val lp = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
lp.topMargin = YdUiUtils.dip2px(position, context)
lp.gravity = Gravity.CENTER_HORIZONTAL
llyError.layoutParams = lp
llyBlank.layoutParams = lp
}
override fun onFinishInflate() {
super.onFinishInflate()
llyError = findViewById(R.id.lly_error)
llyBlank = findViewById(R.id.lly_blank)
tvLoadAgain = findViewById(R.id.tv_loadAgain)
setClickListener()
}
private fun setClickListener(){
tvLoadAgain.setOnClickListener {
loadAgainCallback.loadAgainCallback()
}
}
fun setBlankStatus(status: String){
when(status){
Error -> {
llyError.visibility = View.VISIBLE
llyBlank.visibility = View.GONE
}
Blank -> {
llyError.visibility = View.GONE
llyBlank.visibility = View.VISIBLE
}
}
}
}
\ No newline at end of file
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<string name="privacy_policy_title">隐私政策概述</string> <string name="privacy_policy_title">隐私政策概述</string>
<string name="privacy_policy_one">1.我们将会收集设备信息(提供问题诊断服务)、存储(图片下载上传)等权限,您有权拒绝或撤回授权;</string> <string name="privacy_policy_one">1.我们将会收集设备信息(提供问题诊断服务)、存储(图片下载上传)等权限,您有权拒绝或撤回授权;</string>
<string name="privacy_policy_two_first">2.在使用本产品之前,请认真阅读</string> <string name="privacy_policy_two_first">2.在使用本产品之前,请认真阅读</string>
<string name="privacy_policy_statement">&#160;隐私声明&#160;</string> <string name="privacy_policy_statement">&#160;隐私政策&#160;</string>
<string name="and"></string> <string name="and"></string>
<string name="user_protocol">&#160;用户协议&#160;</string> <string name="user_protocol">&#160;用户协议&#160;</string>
<string name="privacy_policy_two_second">,您需要同意并授权全部条款后再开始我们的服务。</string> <string name="privacy_policy_two_second">,您需要同意并授权全部条款后再开始我们的服务。</string>
......
...@@ -97,7 +97,9 @@ ext.dependencies = [ ...@@ -97,7 +97,9 @@ ext.dependencies = [
'com.loopj.android:android-async-http:1.4.9', 'com.loopj.android:android-async-http:1.4.9',
// 屏幕适配 // 屏幕适配
'me.jessyan:autosize:1.2.1' 'me.jessyan:autosize:1.2.1',
//https://github.com/CymChad/BaseRecyclerViewAdapterHelper
'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
], ],
other : [ other : [
':CommonLib:Common' ':CommonLib:Common'
......
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