Commit fc01f5e6 authored by yinjiacheng's avatar yinjiacheng

Merge remote-tracking branch 'origin/dev_commodity' into feature_towerpro

parents 0001530b f2dddfe5
......@@ -15,3 +15,4 @@
.cxx
local.properties
app/debug
app/release
[submodule "Components/commodity/src/main/assets/www"]
path = Components/commodity/src/main/assets/www
url = https://git.yidian-inc.com:8021/bp/shenghuoquanb-app-hybrid-release.git
branch = master
package com.yidian.common
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import com.amap.api.services.core.PoiItem
/**
* Author: sym
* Date: 2021/6/27 3:35 PM
* Describe:
*/
class PoiListAdapter : BaseAdapter() {
private lateinit var data: List<PoiItem>
override fun getCount(): Int {
return if (::data.isInitialized) {
data.size
} else {
0
}
}
override fun getItem(position: Int): Any {
return position
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view: View?
var holder: ViewHolder
if (convertView == null) {
holder = ViewHolder()
view = LayoutInflater.from(parent!!.context).inflate(R.layout.list_view_item, null)
holder.titleTextView = view.findViewById(R.id.list_view_title_text)
holder.areaTextView = view.findViewById(R.id.list_view_area_text)
view.tag = holder
} else {
view = convertView
holder = view.tag as ViewHolder
}
//填充数据
holder.titleTextView!!.text = data[position].title
holder.areaTextView!!.text = data[position].provinceName + data[position].cityName + data[position].adName
return view!!
}
internal class ViewHolder {
var titleTextView: TextView? = null
var areaTextView: TextView? = null
}
fun setData(data: List<PoiItem>) {
this.data = data
notifyDataSetChanged()
}
}
package com.yidian.common
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import com.amap.api.services.core.PoiItem
/**
* Author: sym
* Date: 2021/6/27 3:35 PM
* Describe:
*/
class PoiSearchAdapter : BaseAdapter() {
private lateinit var data: List<PoiItem>
override fun getCount(): Int {
return if (::data.isInitialized) {
data.size
} else {
0
}
}
override fun getItem(position: Int): Any {
return position
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view: View?
var holder: ViewHolder
if (convertView == null) {
holder = ViewHolder()
view = LayoutInflater.from(parent!!.context).inflate(R.layout.list_view_item, null)
holder.titleTextView = view.findViewById(R.id.list_view_title_text)
holder.areaTextView = view.findViewById(R.id.list_view_area_text)
view.tag = holder
} else {
view = convertView
holder = view.tag as ViewHolder
}
//填充数据
holder.titleTextView!!.text = data[position].title
holder.areaTextView!!.text = data[position].provinceName + data[position].cityName + data[position].adName
return view!!
}
internal class ViewHolder {
var titleTextView: TextView? = null
var areaTextView: TextView? = null
}
fun setData(data: List<PoiItem>) {
this.data = data
notifyDataSetChanged()
}
}
package com.yidian.common.bean
/**
* author: yinjiacheng
* date: 7/13/21 3:51 PM
* description: selectImage操作传递的业务参数
*/
data class ActionSelectImageParamsBean(val maxCount: Int, val selectedImages: List<SelectedImage>)
data class SelectedImage(val id: String)
package com.yidian.common.bean
import com.luck.picture.lib.entity.LocalMedia
/**
* author: yinjiacheng
* date: 7/13/21 3:50 PM
* description: 已选择的图片数据结构
*/
data class LocalSelectedImageBean(val uuid: String, val data: LocalMedia)
package com.yidian.common.bean
/**
* author: yinjiacheng
* date: 7/13/21 3:51 PM
* description: 已选择的图片数据结构 回传H5结果使用
*/
data class SelectedImageBean(val id: String, val photo_base64_str: String)
package com.yidian.common.bean
/**
* author: yinjiacheng
* date: 7/13/21 3:51 PM
* description: 已上传的图片数据结构 回传H5结果使用
*/
data class UploadImageBean(val id: String, val image_uploaded_key: String)
......@@ -10,6 +10,10 @@ import com.luck.picture.lib.entity.LocalMedia
import com.luck.picture.lib.listener.OnResultCallbackListener
import com.luck.picture.lib.manager.PictureCacheManager
import com.yidian.common.YdBaseApplication
import com.yidian.common.bean.ActionSelectImageParamsBean
import com.yidian.common.bean.LocalSelectedImageBean
import com.yidian.common.bean.SelectedImageBean
import com.yidian.common.bean.UploadImageBean
import com.yidian.common.utils.GlideEngine
import com.yidian.common.utils.KS3Core
import com.yidian.xarc.xrouter.ResultResolver
......@@ -66,7 +70,6 @@ class ImageService : ZapService() {
}
private val gson by lazy { Gson() }
private lateinit var resolver: ResultResolver
/**
* 当前栈顶Activity实例
......@@ -88,19 +91,21 @@ class ImageService : ZapService() {
*/
private val picOriginalPath by lazy { YdBaseApplication.context.externalCacheDir?.absolutePath + "/picture_selector_original/" }
/**
* @param resolver 此参数建议作为具体能力的方法入参 避免使用全局变量(异步回传H5结果时seq顺序错乱)
*/
override fun onAction(path: String, action: String, params: Any, options: Any, resolver: ResultResolver) {
this.resolver = resolver
curTopActivity = DStackActivityManager.getInstance().topActivity
val resolveParams = params as JSONObject
when (action) {
ACTION_SELECT_PIC -> {
selectPic(gson.fromJson(resolveParams.toString(), ActionSelectImageParamsBean::class.java))
selectPic(resolver, gson.fromJson(resolveParams.toString(), ActionSelectImageParamsBean::class.java))
}
ACTION_TAKE_PIC -> {
takePic()
takePic(resolver)
}
ACTION_UPLOAD_PIC -> {
uploadPic(resolveParams.optString("id"))
uploadPic(resolver, resolveParams.optString("id"))
}
ACTION_PREVIEW_PIC -> {
// 本期不做
......@@ -128,8 +133,9 @@ class ImageService : ZapService() {
/**
* 选择图片
* @param params selectImage操作业务参数
* @param resolver 结果回传
*/
private fun selectPic(params: ActionSelectImageParamsBean) {
private fun selectPic(resolver: ResultResolver, params: ActionSelectImageParamsBean) {
PictureSelector.create(curTopActivity)
.openGallery(PictureMimeType.ofImage())
.imageEngine(GlideEngine.createGlideEngine())
......@@ -173,8 +179,9 @@ class ImageService : ZapService() {
/**
* 拍摄图片
* @param resolver 结果回传
*/
private fun takePic() {
private fun takePic(resolver: ResultResolver) {
PictureSelector.create(curTopActivity)
.openCamera(PictureMimeType.ofImage())
.imageEngine(GlideEngine.createGlideEngine())
......@@ -217,8 +224,9 @@ class ImageService : ZapService() {
/**
* 上传图片
* @param id 需要上传的图片id
* @param resolver 结果回传
*/
private fun uploadPic(id: String) {
private fun uploadPic(resolver: ResultResolver, id: String) {
var uploadPic: LocalSelectedImageBean? = null
localSelectedImages.forEach {
// 遍历寻找指定图片
......@@ -284,30 +292,4 @@ class ImageService : ZapService() {
File(picOriginalPath).delete()
}
/**
* 已选择的图片数据结构
*/
data class LocalSelectedImageBean(val uuid: String, val data: LocalMedia)
/**
* 已选择的图片数据结构 回传H5结果使用
*/
data class SelectedImageBean(val id: String, val photo_base64_str: String)
/**
* 已上传的图片数据结构 回传H5结果使用
*/
data class UploadImageBean(val id: String, val image_uploaded_key: String)
/**
* selectImage操作传递的业务参数
*/
data class ActionSelectImageParamsBean(
val maxCount: Int,
val selectedImages: List<SelectedImage>
)
data class SelectedImage(
val id: String
)
}
......@@ -21,4 +21,20 @@ object DialogUtils {
.build(activity)
dialog?.show()
}
/**
* 权限提示弹框
*/
fun showPermissionDialog(activity: Activity, permission: String) {
var dialog: DialogBuilder.CommonDialog? = null
dialog = DialogBuilder()
.showTitle(true, permission + "权限,请到 “应用信息 -> 权限” 中授予!")
.showPositive(true) {
SystemSettingUtils.openAppSettingDetail(activity)
dialog?.dismiss()
}
.showNavigate(true)
.build(activity)
dialog?.show()
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#C2C4C6" />
<padding
android:bottom="2dp"
android:left="8dp"
android:right="8dp"
android:top="2dp" />
</shape>
\ No newline at end of file
......@@ -18,7 +18,6 @@
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="50dp"
android:paddingStart="@dimen/dp15"
......@@ -33,6 +32,7 @@
android:layout_gravity="center"
android:textColor="#FF333333"
android:textSize="18sp"
android:textStyle="bold"
tools:text="标题" />
</androidx.appcompat.widget.Toolbar>
......
<?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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/list_view_title_text"
android:layout_width="match_parent"
android:layout_marginLeft="15dp"
android:layout_height="25dp"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/list_view_area_text"
android:layout_width="match_parent"
android:layout_marginLeft="15dp"
android:layout_height="25dp"
tools:ignore="MissingConstraints" />
</LinearLayout>
\ No newline at end of file
www @ 28a5700a
Subproject commit 28a5700a3ca7d0db6209be09858dac8ae05483bd
{"x_resource_version":"0.0.16","routers":[{"name":"xbrid_coupon_publish","local_path":"pages/coupon_publish/index.html","remote_url":"","operation_url":""},{"name":"xbrid_user1","local_path":"pages/user1/index.html","remote_url":"","operation_url":""}]}
body[data-v-9fd89d4e]{font-size:14px;color:#333;font-family:PingFangSC,PingFangSC-Medium}.title[data-v-9fd89d4e]{color:#333;font-size:14px;font-weight:900;padding:20px;display:flex;align-items:center}.publicBox[data-v-9fd89d4e] .van-cell{height:80px;padding:0 20px}.publicBox[data-v-9fd89d4e] .van-cell:after{border:none}.publicBox[data-v-9fd89d4e] .van-cell .van-field__label{height:61px;border-bottom:1px solid #f0f1f4;display:flex;align-items:center;margin-right:0}.publicBox[data-v-9fd89d4e] .van-field__label>span{width:66px;height:24px;font-size:16px}.timerStyle[data-v-9fd89d4e] .van-field__label>span{width:100px}.publicBox[data-v-9fd89d4e] .van-cell .van-field__value{height:60px;border-bottom:1px solid #f0f1f4;display:flex;align-items:center}.couponPage[data-v-9fd89d4e] .van-field--error .van-field__label,.couponPage[data-v-9fd89d4e] .van-field--error .van-field__value{border-bottom:1px solid red}.couponPage[data-v-9fd89d4e] .van-field__error-message{position:absolute;left:-86px;bottom:-26px}.publicBox[data-v-9fd89d4e] .van-cell__right-icon{font-size:24px;color:#979797;position:absolute;right:20px;top:18px}.tradeName[data-v-9fd89d4e] input{width:215px}.price[data-v-9fd89d4e] input{width:247px}.stepper[data-v-9fd89d4e] button{width:24px;height:24px;border-radius:50%}.stepper[data-v-9fd89d4e] input{width:50px;height:24px;margin:0 12px;background:#fff}.stepper[data-v-9fd89d4e] .van-field__label>span{width:100%}.pictureUpload[data-v-9fd89d4e] .van-uploader__preview,.uploadFile[data-v-9fd89d4e]{width:106px;height:80px;border-radius:8px}.pictureUpload[data-v-9fd89d4e] .van-uploader__preview .van-image{width:100%;height:100%;border-radius:8px}.pictureUpload[data-v-9fd89d4e] .van-uploader__preview .van-uploader__preview-delete{width:13px;height:13px;border-radius:50%;background:rgba(0,0,0,.4);margin:5px}.uploadFile[data-v-9fd89d4e]{background:#f6f7f7;text-align:center;padding:10px 0;box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center}.uploadFile .icoPlus[data-v-9fd89d4e]{width:100%;font-size:24px;font-weight:900;margin-bottom:6px;color:#999}.uploadFile .num[data-v-9fd89d4e]{width:100%;margin:0;color:#999;font-size:12px}.singPurLimit[data-v-9fd89d4e] .van-field__value{padding-left:24px;box-sizing:border-box;border-radius:1px solid}.moreSetIcoDown[data-v-9fd89d4e],.moreSetIcoUp[data-v-9fd89d4e]{font-size:18px;font-weight:900;margin-right:7.5px}.moreSetTitle[data-v-9fd89d4e]{font-size:16px;color:#333;padding:13px 24px;box-sizing:border-box}.moreSetTxt[data-v-9fd89d4e]{width:91%;height:142.5px!important;background:#f5f6f7;border-radius:8px;margin:0 auto}.moreSetBox[data-v-9fd89d4e]{height:auto}.draw-enter-active[data-v-9fd89d4e],.draw-leave-active[data-v-9fd89d4e]{transition:all .1s ease}.draw-enter[data-v-9fd89d4e],.draw-leave-to[data-v-9fd89d4e]{height:0}.submitBtn[data-v-9fd89d4e]{margin:112px 30px 34px 30px}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0;"><title>发布优惠卷</title><link href="css/app.a576a948.css" rel="preload" as="style"><link href="css/chunk-vendors.8717c8a6.css" rel="preload" as="style"><link href="js/app.d90e8362.js" rel="preload" as="script"><link href="js/chunk-vendors.5537d445.js" rel="preload" as="script"><link href="css/chunk-vendors.8717c8a6.css" rel="stylesheet"><link href="css/app.a576a948.css" rel="stylesheet"></head><script>// 禁止IOS页面缩放
document.documentElement.addEventListener(
"touchstart",
function (event) {
if (event.touches.length > 1) {
event.preventDefault();
}
},
false
);
var lastTouchEnd = 0;
document.documentElement.addEventListener(
"touchend",
function (event) {
var now = Date.now();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
},
false
);
document.addEventListener("gesturestart", function (event) {
event.preventDefault();
});</script><body><div id="app"></div><script src="js/chunk-vendors.5537d445.js"></script><script src="js/app.d90e8362.js"></script></body></html>
\ No newline at end of file
h3[data-v-d597d288]{margin:40px 0 0}ul[data-v-d597d288]{list-style-type:none;padding:0}li[data-v-d597d288]{display:inline-block;margin:0 10px}a[data-v-d597d288]{color:#42b983}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}
\ No newline at end of file
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>vue2.x</title><link href="css/app.e1405110.css" rel="preload" as="style"><link href="js/app.095b967d.js" rel="preload" as="script"><link href="js/chunk-vendors.c5cf1606.js" rel="preload" as="script"><link href="css/app.e1405110.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but vue2.x doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.c5cf1606.js"></script><script src="js/app.095b967d.js"></script></body></html>
\ No newline at end of file
(function(e){function t(t){for(var n,a,u=t[0],s=t[1],i=t[2],p=0,v=[];p<u.length;p++)a=u[p],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&v.push(o[a][0]),o[a]=0;for(n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n]);c&&c(t);while(v.length)v.shift()();return l.push.apply(l,i||[]),r()}function r(){for(var e,t=0;t<l.length;t++){for(var r=l[t],n=!0,u=1;u<r.length;u++){var s=r[u];0!==o[s]&&(n=!1)}n&&(l.splice(t--,1),e=a(a.s=r[0]))}return e}var n={},o={app:0},l=[];function a(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}a.m=e,a.c=n,a.d=function(e,t,r){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(a.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)a.d(r,n,function(t){return e[t]}.bind(null,n));return r},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="";var u=window["webpackJsonp"]=window["webpackJsonp"]||[],s=u.push.bind(u);u.push=t,u=u.slice();for(var i=0;i<u.length;i++)t(u[i]);var c=s;l.push([0,"chunk-vendors"]),r()})({0:function(e,t,r){e.exports=r("56d7")},"1eab":function(e,t,r){},2395:function(e,t,r){},"56d7":function(e,t,r){"use strict";r.r(t);r("e260"),r("e6cf"),r("cca6"),r("a79d");var n=r("2b0e"),o=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("img",{attrs:{alt:"Vue logo",src:r("cf05")}}),n("HelloWorld",{attrs:{msg:"Welcome to Your Vue.js App"}})],1)},l=[],a=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"hello"},[r("h1",[e._v(e._s(e.msg))]),e._m(0),r("h3",[e._v("Installed CLI Plugins")]),e._m(1),r("h3",[e._v("Essential Links")]),e._m(2),r("h3",[e._v("Ecosystem")]),e._m(3)])},u=[function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("p",[e._v(" For a guide and recipes on how to configure / customize this project,"),r("br"),e._v(" check out the "),r("a",{attrs:{href:"https://cli.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-cli documentation")]),e._v(". ")])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ul",[r("li",[r("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel",target:"_blank",rel:"noopener"}},[e._v("babel")])]),r("li",[r("a",{attrs:{href:"https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint",target:"_blank",rel:"noopener"}},[e._v("eslint")])])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ul",[r("li",[r("a",{attrs:{href:"https://vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Core Docs")])]),r("li",[r("a",{attrs:{href:"https://forum.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Forum")])]),r("li",[r("a",{attrs:{href:"https://chat.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("Community Chat")])]),r("li",[r("a",{attrs:{href:"https://twitter.com/vuejs",target:"_blank",rel:"noopener"}},[e._v("Twitter")])]),r("li",[r("a",{attrs:{href:"https://news.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("News")])])])},function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("ul",[r("li",[r("a",{attrs:{href:"https://router.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-router")])]),r("li",[r("a",{attrs:{href:"https://vuex.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vuex")])]),r("li",[r("a",{attrs:{href:"https://github.com/vuejs/vue-devtools#vue-devtools",target:"_blank",rel:"noopener"}},[e._v("vue-devtools")])]),r("li",[r("a",{attrs:{href:"https://vue-loader.vuejs.org",target:"_blank",rel:"noopener"}},[e._v("vue-loader")])]),r("li",[r("a",{attrs:{href:"https://github.com/vuejs/awesome-vue",target:"_blank",rel:"noopener"}},[e._v("awesome-vue")])])])}],s={name:"HelloWorld",props:{msg:String}},i=s,c=(r("623d"),r("2877")),p=Object(c["a"])(i,a,u,!1,null,"d597d288",null),v=p.exports,f={name:"App",components:{HelloWorld:v}},h=f,_=(r("7c55"),Object(c["a"])(h,o,l,!1,null,null,null)),g=_.exports;n["a"].config.productionTip=!1,new n["a"]({render:function(e){return e(g)}}).$mount("#app")},"623d":function(e,t,r){"use strict";r("1eab")},"7c55":function(e,t,r){"use strict";r("2395")},cf05:function(e,t,r){e.exports=r.p+"img/logo.82b9c7a5.png"}});
\ No newline at end of file
......@@ -12,7 +12,7 @@ import com.yidian.shenghuoquan.commodity.http.callback.ICategoryListCallback
class CategorySearchViewModel : BaseViewModel() {
var searchKeyword = MutableLiveData<String?>()
var searchKeyword = MutableLiveData("")
/**
* 清空输入框
......
......@@ -32,7 +32,7 @@ class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsB
}
override fun initView() {
initTitleBar(binding.include.toolbar, binding.include.tvTitle, "发布优惠券")
initTitleBar(binding.include.toolbar, binding.include.tvTitle, "发布商品")
val serializableExtra = intent.getSerializableExtra(XRouterPathConstants.ParamsKey)
if (serializableExtra == null) {
initWebView()
......@@ -72,7 +72,7 @@ class PublishCouponsActivity : BaseMvvmActivity<CommodityActivityPublishCouponsB
}
override fun onBackPressed() {
DialogUtils.showConfirmDialog(this, "退出发布优惠券?")
DialogUtils.showConfirmDialog(this, "返回后商品将不保存?")
}
companion object {
......
......@@ -37,8 +37,8 @@
<ImageView
android:id="@+id/iv_search"
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp10"
android:src="@drawable/icon_search"
app:layout_constraintBottom_toBottomOf="parent"
......@@ -49,6 +49,7 @@
android:id="@+id/et_search_keyword"
android:layout_width="0dp"
android:layout_height="@dimen/dp40"
android:layout_marginStart="@dimen/dp5"
android:background="@null"
android:hint="请输入关键词搜索商品类目"
android:imeOptions="actionSearch"
......
......@@ -20,7 +20,7 @@
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<TextView
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp40"
android:layout_marginStart="@dimen/dp20"
......@@ -28,13 +28,26 @@
android:layout_marginEnd="@dimen/dp20"
android:layout_marginBottom="@dimen/dp10"
android:background="@drawable/shape_gray_bg"
android:drawableStart="@drawable/icon_search"
android:gravity="center_vertical"
android:onClick="@{() -> vm.gotoSearch()}"
android:paddingStart="@dimen/dp10"
android:text="请输入关键词搜索商品类目"
android:textColor="@color/color_C2C2C2"
android:textSize="@dimen/sp16" />
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp10"
android:src="@drawable/icon_search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp5"
android:text="请输入关键词搜索商品类目"
android:textColor="@color/color_C2C2C2"
android:textSize="@dimen/sp16" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
......
......@@ -12,6 +12,7 @@ import com.yidian.common.base.BaseActivity
import com.yidian.common.utils.SystemSettingUtils
import com.yidian.common.widget.DialogBuilder
import com.yidian.common.services.AppUpgradeService
import com.yidian.common.utils.DialogUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityFlashBinding
import com.yidian.shenghuoquan.newscontent.http.ApiService
import com.yidian.shenghuoquan.newscontent.http.callback.IGetLifeAccountListCallback
......@@ -116,22 +117,9 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC
if (it) {
launcher()
} else {
showPermissionDialog("需要电话、存储、位置")
DialogUtils.showPermissionDialog(this, "需要电话、存储、位置")
}
}
}
private fun showPermissionDialog(permission: String) {
var dialog: DialogBuilder.CommonDialog? = null
dialog = DialogBuilder()
.showTitle(true, permission + "权限,请到 “应用信息 -> 权限” 中授予!")
.showPositive(true) {
SystemSettingUtils.openAppSettingDetail(this)
dialog?.dismiss()
}
.showNavigate(true)
.build(this)
dialog?.show()
}
}
......@@ -8,6 +8,8 @@ import com.yidian.common.XEventConfig
import com.yidian.common.XRouterPathConstants
import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.clickAntiShake
import com.yidian.common.extensions.hide
import com.yidian.common.extensions.show
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.adapter.ChooseStoreApter
import com.yidian.shenghuoquan.newscontent.databinding.ActivityChooseStoreBinding
......@@ -56,12 +58,12 @@ class ChooseStoreActivity : BaseActivity<ActivityChooseStoreBinding>() {
requestParams["life_account_id"] = StorageUtil.getLifeAccountId()
ApiService.getShopList(requestParams) { shopList ->
if (shopList.isNullOrEmpty()) {
viewBind.rvStore.isVisible = false
viewBind.pvEmptyPage.isVisible = true
viewBind.rvStore.hide()
viewBind.pvEmptyPage.show()
return@getShopList
} else {
viewBind.rvStore.isVisible = true
viewBind.pvEmptyPage.isVisible = false
viewBind.rvStore.show()
viewBind.pvEmptyPage.hide()
}
// 勾选上次选中的门店的
if (!lastSelectStoreList.isNullOrEmpty()) {
......
package com.yidian.shenghuoquan.newscontent.ui.store
import android.Manifest
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import com.tbruyelle.rxpermissions3.RxPermissions
import com.yidian.common.base.BaseActivity
import com.yidian.common.utils.ToastUtils
import com.yidian.shenghuoquan.newscontent.databinding.ActivityStoreEditBinding
......@@ -64,7 +66,19 @@ class EditStoreActivity : BaseActivity<ActivityStoreEditBinding>(), CommonTopBar
private fun initClick() {
viewBind.bvTopBar.setOnCommonTopBarCallback(null, this)
viewBind.addressLayout.setOnClickListener {
startActivityForResult(Intent(this@EditStoreActivity, SelectAddressActivity::class.java), 200)
val rxPermissions = RxPermissions(this)
rxPermissions.request(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
)
.subscribe {
if (it) {
startActivityForResult(Intent(this@EditStoreActivity, SelectAddressActivity::class.java), 200)
} else {
ToastUtils.showShort("需要授予位置权限才能使用该功能")
}
}
}
}
......
......@@ -2,27 +2,32 @@ package com.yidian.shenghuoquan.newscontent.ui.store
import android.content.Intent
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.KeyEvent
import android.widget.AdapterView
import com.amap.api.services.core.AMapException
import com.amap.api.services.core.PoiItem
import com.amap.api.services.poisearch.PoiResult
import com.amap.api.services.poisearch.PoiSearch
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener
import com.yidian.common.PoiSearchAdapter
import com.yidian.shenghuoquan.newscontent.ui.store.adapter.PoiSearchAdapter
import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.hide
import com.yidian.common.extensions.initTitleBar
import com.yidian.common.extensions.show
import com.yidian.shenghuoquan.newscontent.databinding.LayoutActivityServiceProductAddrSearchBinding
import com.yidian.shenghuoquan.newscontent.utils.TextWatcherAdapter
/**
* Author: sym
* Date: 2021/6/28 2:55 PM
* Describe:
* 搜索门店地址
*/
class SearchAddActivity : BaseActivity<LayoutActivityServiceProductAddrSearchBinding>(), OnPoiSearchListener {
private var adapter = PoiSearchAdapter()
private var resultIntent = Intent()
private var key = ""
private lateinit var data: List<PoiItem>
private var data: List<PoiItem>? = null
override fun createViewBinding(): LayoutActivityServiceProductAddrSearchBinding {
return LayoutActivityServiceProductAddrSearchBinding.inflate(layoutInflater)
}
......@@ -33,35 +38,63 @@ class SearchAddActivity : BaseActivity<LayoutActivityServiceProductAddrSearchBin
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
viewBind.poiSearchList.adapter = adapter
viewBind.poiSearchList.onItemClickListener = AdapterView.OnItemClickListener { _, _, position, _ ->
resultIntent.putExtra("title", data[position].title)
resultIntent.putExtra("cityName", data[position].cityName)
resultIntent.putExtra("adName", data[position].adName)
resultIntent.putExtra("latitude", data[position].latLonPoint.latitude.toString())
resultIntent.putExtra("longitude", data[position].latLonPoint.longitude.toString())
setResult(100, resultIntent)
finish()
}
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, "选择门店地址")
initList()
initClick()
}
private fun initClick() {
viewBind.btnHeaderRight.setOnClickListener {
finish()
}
viewBind.etLaspasSearchKey.setOnKeyListener { p0, keyCode, event ->
viewBind.etSearchKey.setOnKeyListener { _, keyCode, event ->
if (event!!.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
queryPoi()
}
false
}
viewBind.etSearchKey.addTextChangedListener(object : TextWatcherAdapter() {
override fun afterTextChanged(s: Editable?) {
if (s?.length ?: 0 > 0) {
viewBind.ivClear.show()
} else {
viewBind.ivClear.hide()
}
}
})
viewBind.ivClear.setOnClickListener {
viewBind.etSearchKey.setText("")
adapter.setList(null)
viewBind.poiSearchList.hide()
viewBind.pvEmptyPage.show()
}
}
private fun initList() {
viewBind.poiSearchList.adapter = adapter
adapter.setOnItemClickListener { _, _, position ->
data?.let {
resultIntent.putExtra("title", it[position].title)
resultIntent.putExtra("cityName", it[position].cityName)
resultIntent.putExtra("adName", it[position].adName)
resultIntent.putExtra("latitude", it[position].latLonPoint.latitude.toString())
resultIntent.putExtra("longitude", it[position].latLonPoint.longitude.toString())
setResult(100, resultIntent)
finish()
}
}
}
override fun onPoiSearched(poiResult: PoiResult?, rCode: Int) {
if (rCode == AMapException.CODE_AMAP_SUCCESS) {
if (poiResult?.query != null) {
val poiItems: List<PoiItem> = poiResult.pois // 取得第一页的poiitem数据,页数从数字0开始
if (poiItems != null && poiItems.isNotEmpty()) {
adapter.setData(poiItems)
if (poiItems.isNotEmpty()) {
viewBind.pvEmptyPage.hide()
viewBind.poiSearchList.show()
adapter.setList(poiItems)
data = poiItems
}
}
......@@ -69,7 +102,6 @@ class SearchAddActivity : BaseActivity<LayoutActivityServiceProductAddrSearchBin
}
override fun onPoiItemSearched(p0: PoiItem?, p1: Int) {
TODO("Not yet implemented")
}
//poi搜索
......@@ -78,7 +110,7 @@ class SearchAddActivity : BaseActivity<LayoutActivityServiceProductAddrSearchBin
"汽车维修|摩托车服务|餐饮服务|购物服务|生活服务|体育休闲服务|医疗保健服务|" +
"住宿服务|风景名胜|商务住宅|政府机构及社会团体|科教文化服务|交通设施服务|" +
"金融保险服务|公司企业|道路附属设施|地名地址信息|公共设施"
key = viewBind.etLaspasSearchKey.text.toString()
key = viewBind.etSearchKey.text.toString()
val query = PoiSearch.Query(key, typeRange, "北京")
query.pageSize = 1000 // 设置每页最多返回多少条poiitem
query.pageNum = 1 //设置查第一页
......
......@@ -4,7 +4,6 @@ import android.content.Intent
import android.location.Location
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import com.amap.api.maps.AMap
import com.amap.api.maps.AMap.OnMyLocationChangeListener
import com.amap.api.maps.MapView
......@@ -15,10 +14,11 @@ import com.amap.api.services.core.PoiItem
import com.amap.api.services.poisearch.PoiResult
import com.amap.api.services.poisearch.PoiSearch
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener
import com.yidian.common.PoiListAdapter
import com.yidian.common.base.BaseActivity
import com.yidian.common.extensions.initTitleBar
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivitySelectAddressBinding
import com.yidian.shenghuoquan.newscontent.ui.store.adapter.PioListAdapter
import timber.log.Timber
......@@ -29,9 +29,9 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
OnPoiSearchListener {
private lateinit var mapView: MapView
private var adapter = PoiListAdapter()
private var adapter = PioListAdapter()
private var resultIntent = Intent()
private lateinit var data: List<PoiItem>
private var data: List<PoiItem>? = null
private var myLocationStyle: MyLocationStyle? = null
private var bitmapDescriptor: BitmapDescriptor? = null
private var markerView: View? = null
......@@ -49,35 +49,44 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
mapView = viewBind.map
viewBind.poiList.adapter = adapter
viewBind.poiList.onItemClickListener = AdapterView.OnItemClickListener { _, _, position, _ ->
resultIntent.putExtra("title", data[position].title)
resultIntent.putExtra("cityName", data[position].cityName)
resultIntent.putExtra("adName", data[position].adName)
resultIntent.putExtra("latitude", data[position].latLonPoint.latitude.toString())
resultIntent.putExtra("longitude", data[position].latLonPoint.longitude.toString())
setResult(200, resultIntent)
finish()
}
initTitleBar(viewBind.include.toolbar, viewBind.include.tvTitle, "选择门店地址")
initAmap(savedInstanceState)
initList()
initClick()
}
private fun initAmap(savedInstanceState: Bundle?) {
mapView = viewBind.map
mapView.onCreate(savedInstanceState)
markerView = layoutInflater.inflate(R.layout.layout_service_addr_map_marker, null)
bitmapDescriptor = BitmapDescriptorFactory.fromView(markerView)
boundsBuilder = LatLngBounds.Builder()
if (aMap == null) {
aMap = mapView.map
setUpMap()
}
//设置SDK 自带定位消息监听
aMap?.setOnMyLocationChangeListener(this)
aMap?.myLocationStyle = myLocationStyle?.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE)
viewBind.selectAddBackBtn.setOnClickListener {
finish()
}
private fun initList() {
viewBind.poiList.adapter = adapter
adapter.setOnItemClickListener { _, _, position ->
data?.let {
resultIntent.putExtra("title", it[position].title)
resultIntent.putExtra("cityName", it[position].cityName)
resultIntent.putExtra("adName", it[position].adName)
resultIntent.putExtra("latitude", it[position].latLonPoint.latitude.toString())
resultIntent.putExtra("longitude", it[position].latLonPoint.longitude.toString())
setResult(200, resultIntent)
finish()
}
}
}
private fun SelectAddressActivity.initClick() {
viewBind.selectAddSearchText.setOnClickListener {
startActivityForResult(Intent(this@SelectAddressActivity, SearchAddActivity::class.java), 100)
}
......@@ -128,7 +137,7 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
aMap?.isMyLocationEnabled = false // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
updataCurrentMarker(LatLng(location.latitude, location.longitude))
updateCurrentMarker(LatLng(location.latitude, location.longitude))
Timber.tag("amap").e("定位信息, code: $errorCode errorInfo: $errorInfo locationType: $locationType")
} else {
......@@ -138,11 +147,11 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
//点击
override fun onMapClick(latLng: LatLng?) {
updataCurrentMarker(latLng)
updateCurrentMarker(latLng)
}
//更新当前坐标
private fun updataCurrentMarker(latLng: LatLng?) {
private fun updateCurrentMarker(latLng: LatLng?) {
val markerOption = MarkerOptions()
markerOption.position(latLng)
markerOption.icon(bitmapDescriptor)
......@@ -184,7 +193,7 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
val poiItems: List<PoiItem> = poiResult.pois // 取得第一页的poiitem数据,页数从数字0开始
if (poiItems.isNotEmpty()) {
data = poiItems
adapter.setData(poiItems)
adapter.setList(poiItems)
}
}
}
......
package com.yidian.shenghuoquan.newscontent.ui.store.adapter
import android.annotation.SuppressLint
import android.widget.TextView
import com.amap.api.services.core.PoiItem
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.yidian.common.extensions.hide
import com.yidian.common.extensions.show
import com.yidian.shenghuoquan.newscontent.R
/**
* 附近pio适配器
*/
class PioListAdapter : BaseQuickAdapter<PoiItem, BaseViewHolder>(R.layout.item_store_address) {
@SuppressLint("SetTextI18n")
override fun convert(holder: BaseViewHolder, item: PoiItem) {
holder.getView<TextView>(R.id.list_view_title_text).text = item.title
holder.getView<TextView>(R.id.list_view_area_text).text = item.provinceName + item.cityName + item.adName
if (holder.layoutPosition == 0) {
holder.getView<TextView>(R.id.tv_current_location).show()
} else {
holder.getView<TextView>(R.id.tv_current_location).hide()
}
}
}
package com.yidian.shenghuoquan.newscontent.ui.store.adapter
import android.annotation.SuppressLint
import android.widget.TextView
import com.amap.api.services.core.PoiItem
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.yidian.common.extensions.hide
import com.yidian.shenghuoquan.newscontent.R
/**
* pio搜索列表适配器
*/
class PoiSearchAdapter : BaseQuickAdapter<PoiItem, BaseViewHolder>(R.layout.item_store_address) {
@SuppressLint("SetTextI18n")
override fun convert(holder: BaseViewHolder, item: PoiItem) {
holder.getView<TextView>(R.id.tv_current_location).hide()
holder.getView<TextView>(R.id.list_view_title_text).text = item.title
holder.getView<TextView>(R.id.list_view_area_text).text = item.provinceName + item.cityName + item.adName
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="20dp" />
<solid android:color="#FFF5F6F7" />
<padding
android:bottom="8dp"
android:left="12dp"
android:right="12dp"
android:top="8dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="7.5dp" />
<solid android:color="#b2ffffff" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
android:topLeftRadius="12dp"
android:topRightRadius="12dp" />
</shape>
\ No newline at end of file
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff3498DB"
android:background="@color/white"
android:fitsSystemWindows="true"
android:orientation="vertical">
<include
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<LinearLayout
android:id="@+id/select_add_search_text"
android:layout_width="match_parent"
android:layout_height="44dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/select_add_back_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="15dp"
android:background="@mipmap/article_back_ios7__blue" />
android:layout_height="60dp"
android:orientation="horizontal"
android:paddingStart="@dimen/dp20"
android:paddingEnd="@dimen/dp20">
<LinearLayout
android:id="@+id/select_add_search_text"
<TextView
android:layout_width="match_parent"
android:layout_height="35dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:layout_marginRight="30dp"
android:background="@drawable/et_search_bg"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:background="@drawable/icon_search" />
android:background="@drawable/bg_store_search"
android:drawableStart="@drawable/icon_search"
android:drawablePadding="@dimen/dp5"
android:text="输入街道、小区、大厦名称"
android:textColor="#c2c2c2"
android:textSize="@dimen/sp16" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:text="输入街道、小区、大厦名称"
android:textColor="@color/gray" />
</LinearLayout>
</LinearLayout>
<com.amap.api.maps.MapView
......@@ -52,10 +39,11 @@
android:layout_height="0dp"
android:layout_weight="1" />
<ListView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/poi_list"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="250dp" />
android:layout_height="250dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_store_address" />
</LinearLayout>
\ No newline at end of file
......@@ -40,10 +40,10 @@
android:layout_width="match_parent"
android:layout_height="24dp"
android:background="@null"
android:hint="请输入店名"
android:maxLength="20"
android:textColor="#333333"
android:textSize="16sp"
android:textStyle="bold"
tools:text="们递单但是放你剪短发短发短发上次的速度v都是vv" />
</LinearLayout>
......@@ -73,10 +73,10 @@
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:ellipsize="end"
android:hint="请选择地址"
android:maxLines="2"
android:textColor="#FF333333"
android:textSize="16sp"
android:textStyle="bold" />
android:textSize="16sp" />
<View
android:layout_width="0dp"
......@@ -115,11 +115,11 @@
android:layout_height="24dp"
android:layout_gravity="center_vertical|start"
android:background="@null"
android:hint="请输入联系电话"
android:inputType="number"
android:maxLength="11"
android:textColor="#333333"
android:textSize="16sp"
android:textStyle="bold" />
android:textSize="16sp" />
</LinearLayout>
......
<?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="wrap_content"
android:orientation="vertical"
android:paddingStart="@dimen/dp20"
android:paddingTop="@dimen/dp12"
android:paddingEnd="@dimen/dp20"
android:paddingBottom="@dimen/dp12">
<TextView
android:id="@+id/tv_current_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp8"
android:background="@drawable/bg_current_location"
android:drawableStart="@drawable/icon_location"
android:drawablePadding="@dimen/dp4"
android:text="当前位置"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp12"
android:visibility="gone" />
<TextView
android:id="@+id/list_view_title_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/color_333333"
android:textSize="@dimen/sp16"
tools:text="恒通国际创新园C7帮宝教育机器人创客孵化基地(酒仙桥店)" />
<TextView
android:id="@+id/list_view_area_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp4"
android:textColor="@color/color_999999"
android:textSize="@dimen/sp12"
tools:text="北京市朝阳区恒通国际创新园C7帮宝教育机器人创客孵化基地(酒仙桥店)" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:layout_height="match_parent"
>
android:background="@color/white"
android:fitsSystemWindows="true"
android:orientation="vertical">
<include
android:id="@+id/include"
layout="@layout/layout_common_toolbar" />
<RelativeLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="48dp"
android:paddingLeft="15dp">
android:layout_height="60dp"
android:paddingStart="20dp"
android:paddingEnd="@dimen/dp20">
<TextView
android:id="@+id/btn_header_right"
android:layout_alignParentRight="true"
android:layout_marginRight="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:textSize="17sp"
android:textStyle="bold"
android:padding="@dimen/dp5"
android:text="取消"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:textSize="14sp" />
<EditText
android:id="@+id/et_laspas_search_key"
android:id="@+id/et_search_key"
android:layout_width="match_parent"
android:layout_height="33dp"
android:layout_height="40dp"
android:layout_centerVertical="true"
android:layout_toLeftOf="@id/btn_header_right"
android:background="@drawable/et_search_bg_home"
android:layout_marginEnd="15dp"
android:layout_toStartOf="@id/btn_header_right"
android:background="@drawable/bg_store_search"
android:drawableStart="@drawable/icon_search"
android:drawablePadding="@dimen/dp5"
android:gravity="center_vertical"
android:hint="输入街道、小区、大厦名称"
android:imeOptions="actionSearch"
android:paddingLeft="30dp"
android:layout_marginRight="15dp"
android:textSize="12sp"
android:singleLine="true"/>
android:singleLine="true"
android:textSize="16sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iv_clear"
android:layout_width="@dimen/dp24"
android:layout_height="@dimen/dp24"
android:layout_alignEnd="@id/et_search_key"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_search" />
android:layout_marginEnd="@dimen/dp10"
android:src="@drawable/icon_clear"
android:visibility="gone" />
</RelativeLayout>
......@@ -52,9 +62,21 @@
android:layout_height="1dp"
android:background="#f2f2f2" />
<ListView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/poi_search_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_store_address" />
<com.yidian.common.widget.CommonEmptyPageView
android:id="@+id/pv_empty_page"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
app:CommonEmptyPageView_empty_content_text="@string/no_stores"
app:CommonEmptyPageView_empty_tips_text="请输入关键字进行搜索"
app:CommonEmptyPageView_place_holder_img="@drawable/img_empty_place_holder" />
</LinearLayout>
\ No newline at end of file
......@@ -5,7 +5,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:minHeight="@dimen/dp120">
android:minHeight="@dimen/dp100">
<ImageView
android:id="@+id/store_edit_icon"
......@@ -34,7 +34,7 @@
android:textColor="#FF333333"
android:textSize="16sp"
android:textStyle="bold"
tools:text="门店名称事多不顺绝大部分是对奋笔疾书多福多寿测试的v是对v都是v是对v是对v是对v是对v是对v是对v是v宿舍的床上的v是对v是对v" />
tools:text="门店名称事多不顺绝" />
<TextView
android:id="@+id/store_address"
......@@ -46,7 +46,7 @@
android:maxLines="2"
android:textColor="#9d9d9d"
android:textSize="12sp"
tools:text="门店地址事多不顺绝大部分是对似懂非懂时尚服饰颠三倒四的收到粉丝颠三倒四的是否是对v是对v奋笔疾书多但是放你电脑发呆福多寿" />
tools:text="门店地址事多不顺绝但是放你电脑发呆福多寿" />
<TextView
android:id="@+id/store_phone"
......@@ -64,7 +64,7 @@
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:layout_marginTop="20dp"
android:layout_marginTop="18dp"
android:background="#f2f2f2" />
</RelativeLayout>
\ No newline at end of file
......@@ -158,11 +158,18 @@ class YdSubwayApplication : YdBaseApplication() {
}
/**
* 初始化XBrid
*
* 注意:
* 1.如果有多个xbrid资源时,请分别进行注册,区分assetRoot名称,否则打包后出现文件丢失加载失败
* 2.更新assert文件后不生效,可以卸载重新安装
*/
private fun initXBridManager() {
XBridManager.init(
XBridApp(applicationContext) {
online = true // 线上、线下
assetRoot = "www"//对应assets目录下存放xbrid资源对应的目录名
assetRoot = "www/src"//对应assets目录下存放xbrid资源对应的目录名
appId = applicationContext.packageName //当前应用包名
platformId = 16 //需要去平台申请
appVersion = AppConfig.cv//当前应用版本号
......
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