diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f2feead..1faf6c8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -225,6 +225,12 @@ android:configChanges="keyboardHidden|orientation|locale" android:screenOrientation="portrait" android:windowSoftInputMode="adjustPan|stateHidden" /> + + () { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: BusinessActivity.Model?) { + holder.run { + setText(R.id.type_name, item?.type_name) + ImageLoader.getInstance().loadImage(context,item?.type_img,getView(R.id.type_icon)) + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_business_type, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/adapter/BusinessListAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/BusinessListAdapter.kt new file mode 100644 index 0000000..e66b092 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/BusinessListAdapter.kt @@ -0,0 +1,38 @@ +package com.dahe.gldriver.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.ImageView +import com.amap.api.services.core.PoiItem +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.R +import com.dahe.mylibrary.utils.ImageLoader + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/1/23 16:27 + * @Description TODO + */ +class BusinessListAdapter : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: PoiItem?) { + holder.run { + setText(R.id.name, item?.title) + setText(R.id.address, item?.snippet) + setText(R.id.taste, item?.tel) + ImageLoader.getInstance() + .loadRoundImage(context, item?.photos?.get(0)?.url, 10, getView(R.id.photoUrl)) + } + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_business_list, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/base/WebActivity.kt b/app/src/main/java/com/dahe/gldriver/base/WebActivity.kt index 31fa045..c2a6125 100644 --- a/app/src/main/java/com/dahe/gldriver/base/WebActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/base/WebActivity.kt @@ -1,24 +1,20 @@ package com.dahe.gldriver.base -import android.content.Context -import android.content.Intent -import android.graphics.Bitmap import android.os.Bundle import android.text.TextUtils import android.view.View -import android.webkit.JavascriptInterface import android.webkit.WebResourceRequest import android.webkit.WebView import android.widget.FrameLayout import android.widget.TextView import com.dahe.gldriver.databinding.ActivityWebBinding -import com.dahe.gldriver.ui.HomeActivity +import com.dahe.gldriver.utils.SPUtils +import com.dahe.glex.bean.UserBean import com.dahe.mylibrary.R import com.dahe.mylibrary.base.BaseActivity import com.just.agentweb.AgentWeb import com.just.agentweb.AgentWebUIControllerImplBase import com.just.agentweb.WebChromeClient -import com.just.agentweb.WebViewClient /** * @ClassName WebActivity @@ -51,7 +47,6 @@ class WebActivity : BaseActivity() { .ready() .go(mUrl) - // mAgentWeb?.jsInterfaceHolder?.addJavaObject("phone", AndroidInterfaceWeb()) } @@ -59,6 +54,41 @@ class WebActivity : BaseActivity() { } + fun initOpinion() { + binding.run { +// val ub: UserBean? = SPUtils.instance.getUserInfo(mContext) +// wv.getSettings().setJavaScriptEnabled(true) +// wv.getSettings().setDomStorageEnabled(true) // 这个要加上 +// val openid: String = ub.getData().getUname() // 用户的openid +// val nickname: String = StringUtil.isNull(ub.getData().getRname(), "游客") // 用户的nickname +// val headimgurl: String = +// StringUtil.isNull(ub.getData().getHeadportraitUrl(), "") // 用户的头像url +// +// /* 获得 webview url,请注意url单词是product而不是products,products是旧版本的参数,用错地址将不能成功提交 */ +// val url = "https://support.qq.com/products/335639" // 把1221数字换成你的产品ID,否则会不成功 +// /* 准备post参数 */ +// val postData = +// "nickname=$nickname&avatar=$headimgurl&openid=$openid" +// wv.postUrl(url, postData.toByteArray()) +// wv.setWebChromeClient(chromeClient) +// wv.setWebViewClient(object : android.webkit.WebViewClient() { +// override fun shouldOverrideUrlLoading( +// view: WebView, +// request: WebResourceRequest +// ): Boolean { +// return super.shouldOverrideUrlLoading(view, request) +// } +// +// override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { +// //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器 +// view.loadUrl(url) +// return true +// } +// }) + } + + } + private val mWebChromeClient: WebChromeClient = object : WebChromeClient() { override fun onProgressChanged(view: WebView, newProgress: Int) { super.onProgressChanged(view, newProgress) diff --git a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt index ea27c64..9a7ad31 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/home/HomeFragment.kt @@ -1,21 +1,24 @@ package com.dahe.gldriver.ui.home +import android.Manifest +import android.content.Intent import android.graphics.Color import android.os.Bundle import android.widget.LinearLayout +import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.dahe.gldriver.R import com.dahe.gldriver.adapter.GridItemAdapter import com.dahe.gldriver.adapter.WaybillAdapter -import com.dahe.gldriver.adapter.WaybillListAdapter import com.dahe.gldriver.base.AppConfig -import com.dahe.gldriver.bean.CarBean +import com.dahe.gldriver.base.WebActivity import com.dahe.gldriver.bean.GridBean import com.dahe.gldriver.databinding.FragmentHomeBinding import com.dahe.gldriver.net.BaseObserver import com.dahe.gldriver.net.DataManager import com.dahe.gldriver.net.RxHttpCallBack +import com.dahe.gldriver.ui.home.activity.BusinessActivity import com.dahe.gldriver.ui.waybill.activity.WaybillDetailActivity import com.dahe.gldriver.utils.OrderUtils import com.dahe.glex.bean.OrderBean @@ -25,10 +28,9 @@ import com.dahe.mylibrary.net.CommonResponseBean import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ConvertUtils +import com.permissionx.guolindev.PermissionX import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers -import org.greenrobot.eventbus.EventBus -import org.greenrobot.eventbus.Subscribe /** * @ClassName HomeFragment @@ -68,6 +70,53 @@ class HomeFragment : BaseFragment(), RefreshCallBack { gridView.run { adapter = activity?.let { GridItemAdapter(it, gridDatas) } setOnItemClickListener { adapterView, view, i, l -> + when (i) { + 0 -> { + //startActivity(new Intent(con, OrderListActivity.class)); + PermissionX.init(requireActivity()) + .permissions(Manifest.permission.ACCESS_FINE_LOCATION) + .request { allGranted: Boolean, grantedList: List?, deniedList: List? -> + if (allGranted) { + ActivityUtils.startActivity(mContext,BusinessActivity::class.java) + } else { + showToast("请先开启定位权限") + } + } + } + + 1 -> { + ActivityUtils.startActivity( + mContext, + WebActivity::class.java, + Bundle().apply { + putString( + "url", + "https://www.v5kf.com/public/chat/chat?sid=187123&entry=5&ref=link&accountid=2daf303016ed4" + ) + putString("title", gridDatas[i].title) + }) + } + + 2 -> { + ActivityUtils.startActivity( + mContext, + WebActivity::class.java, + Bundle().apply { + putString("url", "https://www.wjx.cn/vm/mKciqMo.aspx") + putString("title", gridDatas[i].title) + }) + } + + 3 -> { + ActivityUtils.startActivity( + mContext, + WebActivity::class.java, + Bundle().apply { + putString("url", "https://ks.wjx.top/vm/h6Jqu8A.aspx") + putString("title", gridDatas[i].title) + }) + } + } } } tvMar.isSelected = true @@ -76,6 +125,9 @@ class HomeFragment : BaseFragment(), RefreshCallBack { if (this@HomeFragment.mListener != null) this@HomeFragment?.mListener?.invoke(2) } + ivAllWaybill.setOnClickListener { + showToast("敬请期待") + } } initData() } @@ -132,8 +184,8 @@ class HomeFragment : BaseFragment(), RefreshCallBack { Bundle().apply { putString(AppConfig.ORDER_ID, items[position].orderId) }) } addOnItemChildClickListener(R.id.btnOk) { adapter, view, position -> - OrderUtils.getInstance().goReceWaybill(mContext, items[position].orderId){ - if (it){ + OrderUtils.getInstance().goReceWaybill(mContext, items[position].orderId) { + if (it) { initData() } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/home/activity/BusinessActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/home/activity/BusinessActivity.kt new file mode 100644 index 0000000..c15f9b4 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/home/activity/BusinessActivity.kt @@ -0,0 +1,154 @@ +package com.dahe.gldriver.ui.home.activity + +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.amap.api.maps.AMap +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.core.PoiItem +import com.amap.api.services.poisearch.PoiResult +import com.amap.api.services.poisearch.PoiSearch +import com.dahe.gldriver.R +import com.dahe.gldriver.adapter.BusinessAdapter +import com.dahe.gldriver.adapter.BusinessListAdapter +import com.dahe.gldriver.databinding.ActivityBusinessBinding +import com.dahe.gldriver.utils.GDLocationUtils +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils +import com.dahe.mylibrary.utils.LoadingUtils +import com.dahe.mylibrary.utils.ToastUtils +import com.dahe.mylibrary.weight.FullyGridLayoutManager +import com.luck.picture.lib.decoration.GridSpacingItemDecoration +import com.luck.picture.lib.utils.DensityUtil + +/** + * @ClassName BusinessActivity + * @Author john + * @Date 2024/3/25 11:24 + * @Description TODO + */ +class BusinessActivity : BaseActivity(), PoiSearch.OnPoiSearchListener { + var listType: List = arrayListOf( + Model("餐饮", R.drawable.icon_canguan), + Model("住宿", R.drawable.icon_jiudian), + Model("商店", R.drawable.icon_shangdian), + Model("加油站", R.drawable.icon_jiayouzhan), + Model("汽车维修", R.drawable.icon_xiuche) + ) + + private val type = listType[0].type_name + + private var mAMap: AMap? = null + private var query: PoiSearch.Query? = null + private var currLoca: LatLonPoint? = null + var adapterList: BusinessListAdapter? = null + + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("司机之家", true) + + binding.run { + businessType.run { + layoutManager = + FullyGridLayoutManager(mContext, 4, GridLayoutManager.VERTICAL, false) + addItemDecoration( + GridSpacingItemDecoration( + 4, + DensityUtil.dip2px(mContext, 8f), false + ) + ) + adapter = BusinessAdapter().apply { + submitList(listType) + setOnItemClickListener { _, _, postion -> + changeType(listType[postion].type_name) + } + } + + } + + adapterList = businessList.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(10.0f), + Color.TRANSPARENT + ) + ) + + adapter = BusinessListAdapter() + adapter as BusinessListAdapter + } + + } + + LoadingUtils.instance.showLoading(this, "定位中...") + GDLocationUtils.instance.getLocation(mContext) { + runOnUiThread { + LoadingUtils.instance.dissLoading() + if (it.getErrorCode() == 0) { + try { + binding.address.text = it.address + currLoca = LatLonPoint(it.getLatitude(), it.getLongitude()) + val poiSearch = PoiSearch(this, query) + poiSearch.setOnPoiSearchListener(this) + poiSearch.bound = PoiSearch.SearchBound(currLoca, 5000, true) // + // 设置搜索区域为以lp点为圆心,其周围5000米范围 + poiSearch.searchPOIAsyn() // 异步搜索 + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + + } else { + showToast("定位失败,请检查定位权限是否开启") + } + } + } + changeType(type) + } + + override fun initDate() { + } + + private fun changeType(type: String) { + query = PoiSearch.Query(type, "", "") + query?.setExtensions("all") + query?.setPageSize(20) // 设置每页最多返回多少条poiitem + query?.setPageNum(0) // 设置查第一页 + if (currLoca != null) { + try { + val poiSearch = PoiSearch(this, query) + poiSearch.setOnPoiSearchListener(this) + poiSearch.bound = PoiSearch.SearchBound(currLoca, 5000, true) // + // 设置搜索区域为以lp点为圆心,其周围5000米范围 + poiSearch.searchPOIAsyn() // 异步搜索 + } catch (e: Exception) { + e.printStackTrace() + } + } + } + + class Model(var type_name: String, var type_img: Int) + + override fun onPoiSearched(p0: PoiResult?, p1: Int) { + if (p0 != null && p0.getQuery() != null) { // 搜索poi的结果 + var poiItems = p0.getPois() // 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息 + if (poiItems != null && poiItems.size > 0) { + adapterList?.submitList(poiItems) + } else { + ToastUtils.showToast(mContext, "对不起,没有搜索到相关数据!") + } + } else { + ToastUtils.showToast(mContext, "对不起,没有搜索到相关数据!") + } + } + + override fun onPoiItemSearched(p0: PoiItem?, p1: Int) { + } + + +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/icon_canguan.png b/app/src/main/res/drawable-xxhdpi/icon_canguan.png new file mode 100644 index 0000000..26d84cb Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_canguan.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_jiayouzhan.png b/app/src/main/res/drawable-xxhdpi/icon_jiayouzhan.png new file mode 100644 index 0000000..4712d80 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_jiayouzhan.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_jiudian.png b/app/src/main/res/drawable-xxhdpi/icon_jiudian.png new file mode 100644 index 0000000..d59487c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_jiudian.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_shangdian.png b/app/src/main/res/drawable-xxhdpi/icon_shangdian.png new file mode 100644 index 0000000..3dab606 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_shangdian.png differ diff --git a/app/src/main/res/drawable/icon_xiuche.png b/app/src/main/res/drawable/icon_xiuche.png new file mode 100644 index 0000000..c607abc Binary files /dev/null and b/app/src/main/res/drawable/icon_xiuche.png differ diff --git a/app/src/main/res/drawable/img.png b/app/src/main/res/drawable/img.png new file mode 100644 index 0000000..4aba9d5 Binary files /dev/null and b/app/src/main/res/drawable/img.png differ diff --git a/app/src/main/res/layout/activity_business.xml b/app/src/main/res/layout/activity_business.xml new file mode 100644 index 0000000..75dd85d --- /dev/null +++ b/app/src/main/res/layout/activity_business.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 42b0cc4..dd629a8 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -105,6 +105,7 @@ android:paddingRight="@dimen/dp_14"> diff --git a/app/src/main/res/layout/item_business_list.xml b/app/src/main/res/layout/item_business_list.xml new file mode 100644 index 0000000..a27e929 --- /dev/null +++ b/app/src/main/res/layout/item_business_list.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_business_type.xml b/app/src/main/res/layout/item_business_type.xml new file mode 100644 index 0000000..9903a1d --- /dev/null +++ b/app/src/main/res/layout/item_business_type.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file