diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 95c7cd0..502522e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" package="com.dahe.gldriver"> - + @@ -15,6 +15,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt new file mode 100644 index 0000000..13c9d93 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/CarsAdapter.kt @@ -0,0 +1,31 @@ +package com.dahe.gldriver.adapter + +import android.content.Context +import android.view.ViewGroup +import android.widget.Button +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.R +import com.dahe.glex.bean.WayBillBean + +/** + * @ClassName WaybillAdapter + * @Author 用户 + * @Date 2024/1/23 16:27 + * @Description TODO + */ +class CarsAdapter : + BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) { + + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + // 返回一个 ViewHolder + return QuickViewHolder(R.layout.item_cars, parent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/adapter/WalletAdapter.kt b/app/src/main/java/com/dahe/gldriver/adapter/WalletAdapter.kt new file mode 100644 index 0000000..011ca36 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/adapter/WalletAdapter.kt @@ -0,0 +1,27 @@ +package com.dahe.gldriver.adapter + +import android.content.Context +import android.view.ViewGroup +import com.chad.library.adapter4.BaseQuickAdapter +import com.chad.library.adapter4.viewholder.QuickViewHolder +import com.dahe.gldriver.R +import com.dahe.glex.bean.WayBillBean + +/** + * @ClassName WalletAdapter + * @Author john + * @Date 2024/2/1 10:41 + * @Description TODO + */ +class WalletAdapter : BaseQuickAdapter() { + override fun onBindViewHolder(holder: QuickViewHolder, position: Int, item: WayBillBean?) { + } + + override fun onCreateViewHolder( + context: Context, + parent: ViewGroup, + viewType: Int + ): QuickViewHolder { + return QuickViewHolder(R.layout.item_wallet, 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 new file mode 100644 index 0000000..31fa045 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/base/WebActivity.kt @@ -0,0 +1,125 @@ +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.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 + * @Author john + * @Date 2024/2/1 15:08 + * @Description TODO + */ +class WebActivity : BaseActivity() { + + var mTextRight: TextView? = null + private var mAgentWeb: AgentWeb? = null + + private var mTitle = "" + private var mUrl = "" + + override fun initView(savedInstanceState: Bundle?) { + mTitle = intent.extras?.getString("title").toString() + mUrl = intent.extras?.getString("url").toString() + + setStatusBarColor(R.color.colorWhite) + setTitleBar(mTitle) { v: View? -> if (!mAgentWeb!!.back()) finish() } + + mAgentWeb = AgentWeb.with(this) + .setAgentWebParent(binding.WebViewLayout, FrameLayout.LayoutParams(-1, -1)) + .useDefaultIndicator() + .setWebChromeClient(mWebChromeClient) + .setSecurityType(AgentWeb.SecurityType.DEFAULT_CHECK) + .setAgentWebUIController(AgentWebUIControllerImplBase()) + .createAgentWeb() + .ready() + .go(mUrl) + + +// mAgentWeb?.jsInterfaceHolder?.addJavaObject("phone", AndroidInterfaceWeb()) + } + + override fun initDate() { + + } + + private val mWebChromeClient: WebChromeClient = object : WebChromeClient() { + override fun onProgressChanged(view: WebView, newProgress: Int) { + super.onProgressChanged(view, newProgress) + } + + override fun onReceivedTitle(view: WebView, title: String) { + super.onReceivedTitle(view, title) + setTitleBar( + if (TextUtils.isEmpty(mTitle)) title else mTitle + ) { if (!mAgentWeb!!.back()) finish() } + } + } + +// private val mWebViewClient: WebViewClient = object : WebViewClient() { +// override fun onPageStarted(view: WebView, url: String, favicon: Bitmap) { +// super.onPageStarted(view, url, favicon) +// } +// +// override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { +// return super.shouldOverrideUrlLoading(view, request) +// } // @Override +// // public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { +// // //该方法在Build.VERSION_CODES.LOLLIPOP以后有效 +// // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { +// // String url = request.getUrl().toString(); +// // Log.i(TAG, "shouldOverrideUrlLoading: " + url); +// // } +// // return false; +// // } +// } + + + // @OnClick({R.id.common_toolBar_text_right, R.id.common_toolBar_image_right}) + // public void onClick(View view) { + // if (view.getId() == R.id.common_toolBar_text_right) { + // } else if (view.getId() == R.id.common_toolBar_image_right) { + // } + // } + override fun onPause() { + mAgentWeb?.webLifeCycle?.onPause() + super.onPause() + } + + override fun onResume() { + mAgentWeb?.webLifeCycle?.onResume() + super.onResume() + } + + override fun onDestroy() { + mAgentWeb?.webLifeCycle?.onDestroy() + super.onDestroy() + } + + +// internal class AndroidInterfaceWeb { +// @JavascriptInterface +// fun gohome() { +// val intent = Intent(mContext, HomeActivity::class.java) +// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) +// mContext.startActivity(intent) +// } +// } + +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/net/DataManager.kt b/app/src/main/java/com/dahe/gldriver/net/DataManager.kt index 6a383d6..05b19e4 100644 --- a/app/src/main/java/com/dahe/gldriver/net/DataManager.kt +++ b/app/src/main/java/com/dahe/gldriver/net/DataManager.kt @@ -1,7 +1,7 @@ package com.dahe.gldriver.net -import com.dahe.gldriver.utils.BaseSingNoParam import com.dahe.mylibrary.CommonBaseLibrary +import com.dahe.mylibrary.base.BaseSingNoParam import com.dahe.mylibrary.net.JsonInterceptor import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit diff --git a/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPartyActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPartyActivity.kt new file mode 100644 index 0000000..9b4cdd4 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/account/authperson/AuthPartyActivity.kt @@ -0,0 +1,25 @@ +package com.dahe.gldriver.ui.account.authperson + +import android.os.Bundle +import com.dahe.gldriver.R +import com.dahe.gldriver.base.WebActivity + +import com.dahe.gldriver.databinding.ActivityAuthPersonBinding +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.utils.ActivityUtils + +/** + * @ClassName AuthPartyActivity + * @Author john + * @Date 2024/2/1 11:20 + * @Description 党员认证 + */ +class AuthPartyActivity : BaseActivity() { + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("党员认证",true) + } + + override fun initDate() { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt index 8b3e445..91c0996 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/MineFragment.kt @@ -1,12 +1,19 @@ package com.dahe.gldriver.ui.mine +import android.os.Bundle import android.view.View import com.dahe.gldriver.R import com.dahe.gldriver.adapter.GridItemAdapter +import com.dahe.gldriver.base.WebActivity import com.dahe.gldriver.bean.GridBean import com.dahe.gldriver.databinding.FragmentMineBinding +import com.dahe.gldriver.ui.account.authperson.AuthPartyActivity +import com.dahe.gldriver.ui.mine.activity.CarsManActivity +import com.dahe.gldriver.ui.mine.activity.RulesActivity +import com.dahe.gldriver.ui.mine.activity.WalletActivity import com.dahe.gldriver.utils.SPUtils import com.dahe.mylibrary.base.BaseFragment +import com.dahe.mylibrary.utils.ActivityUtils import com.dahe.mylibrary.utils.ToastUtils import com.tencent.bugly.crashreport.CrashReport @@ -42,21 +49,26 @@ class MineFragment : BaseFragment(), View.OnClickListener { // if (null==userInfo) // return - binding.gvTools.run { + binding.run { + //初始化常用工具 + gvTools.run { + adapter = GridItemAdapter(mContext, tools, R.layout.grid_mine_item) + setOnItemClickListener { _, _, i, _ -> + goTools(i) + } + } + //初始化平台规则 + gvPlat.run { + adapter = GridItemAdapter(mContext, plats, R.layout.grid_mine_item) + setOnItemClickListener { _, _, i, _ -> + goPlats(i) + } + } - adapter = GridItemAdapter(mContext, tools, R.layout.grid_mine_item) - setOnItemClickListener { _, _, i, _ -> - goTools(i) + rlMoney.setOnClickListener { + ActivityUtils.startActivity(mContext, WalletActivity::class.java) } } - - binding.gvPlat.run { - adapter = GridItemAdapter(mContext, plats, R.layout.grid_mine_item) - setOnItemClickListener { _, _, i, _ -> - goPlats(i) - } - } - } override fun onClick(v: View) { @@ -76,18 +88,27 @@ class MineFragment : BaseFragment(), View.OnClickListener { // requireActivity().startActivity(intent) } - + /** + * 常用工具跳转逻辑 + */ private fun goTools(pos: Int) { when (pos) { 0 -> { - ToastUtils.showToast(mContext, tools[pos].title) + ActivityUtils.startActivity(mContext, RulesActivity::class.java) } + 1 -> { - ToastUtils.showToast(mContext, tools[pos].title) + ActivityUtils.startActivity(mContext, CarsManActivity::class.java) } + 2 -> { + var bundle = Bundle() + bundle.putString("title","我的百度") + bundle.putString("url","www.baidu.com") + ActivityUtils.startActivity(mContext,WebActivity::class.java,bundle) ToastUtils.showToast(mContext, tools[pos].title) } + 3 -> { ToastUtils.showToast(mContext, tools[pos].title) } @@ -95,8 +116,36 @@ class MineFragment : BaseFragment(), View.OnClickListener { } } + /** + * 平台规则跳转逻辑 + */ private fun goPlats(pos: Int) { - ToastUtils.showToast(mContext, plats[pos].title) + when (pos) { + 0 -> { + ActivityUtils.startActivity(mContext, RulesActivity::class.java) + } + + 1 -> { + ActivityUtils.startActivity(mContext, CarsManActivity::class.java) + } + + 2 -> { + ToastUtils.showToast(mContext, tools[pos].title) + } + + 3 -> { + ToastUtils.showToast(mContext, tools[pos].title) + } + + 4 -> { + ActivityUtils.startActivity(mContext, AuthPartyActivity::class.java) + } + + 5 -> { + ToastUtils.showToast(mContext, tools[pos].title) + } + + } } diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt new file mode 100644 index 0000000..795a14b --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/CarsManActivity.kt @@ -0,0 +1,60 @@ +package com.dahe.gldriver.ui.mine.activity + +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.LayoutManager +import com.dahe.gldriver.R +import com.dahe.gldriver.adapter.CarsAdapter +import com.dahe.gldriver.adapter.WaybillAdapter +import com.dahe.gldriver.databinding.ActivityCarsManBinding +import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils + +/** + * @ClassName CarsManActivity + * @Author john + * @Date 2024/2/1 08:59 + * @Description 车辆管理 + */ +class CarsManActivity : BaseActivity() { + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("车辆管理",true) + + + var datas = mutableListOf( + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean() + ) + + var adapter = binding.recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = CarsAdapter() + adapter as CarsAdapter + } + + adapter.submitList(datas) + } + + override fun initDate() { + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RulesActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RulesActivity.kt new file mode 100644 index 0000000..f4e463e --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/RulesActivity.kt @@ -0,0 +1,22 @@ +package com.dahe.gldriver.ui.mine.activity + +import android.os.Bundle +import com.dahe.gldriver.R +import com.dahe.gldriver.databinding.ActivityRulesBinding +import com.dahe.mylibrary.base.BaseActivity + +/** + * @ClassName RulesActivity + * @Author john + * @Date 2024/2/1 11:06 + * @Description 平台规则 + */ +class RulesActivity : BaseActivity() { + override fun initView(savedInstanceState: Bundle?) { + setStatusBarColor(R.color.white) + setTitleBar("平台规则",true) + } + + override fun initDate() { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/mine/activity/WalletActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/WalletActivity.kt new file mode 100644 index 0000000..07939e0 --- /dev/null +++ b/app/src/main/java/com/dahe/gldriver/ui/mine/activity/WalletActivity.kt @@ -0,0 +1,54 @@ +package com.dahe.gldriver.ui.mine.activity + +import android.graphics.Color +import android.os.Bundle +import android.widget.LinearLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.dahe.gldriver.adapter.CarsAdapter +import com.dahe.gldriver.adapter.WalletAdapter +import com.dahe.gldriver.databinding.ActivityWalletBinding +import com.dahe.glex.bean.WayBillBean +import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.recycleviewswipe.RecycleViewDivider +import com.dahe.mylibrary.utils.ConvertUtils + +/** + * @ClassName WalletActivity + * @Author john + * @Date 2024/2/1 09:41 + * @Description 钱包 + */ +class WalletActivity : BaseActivity() { + override fun initView(savedInstanceState: Bundle?) { + } + + override fun initDate() { + + var datas = mutableListOf( + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean(), + WayBillBean() + ) + + var adapter = binding.recycler.run { + layoutManager = LinearLayoutManager(mContext, RecyclerView.VERTICAL, false) + addItemDecoration( + RecycleViewDivider( + LinearLayout.VERTICAL, + ConvertUtils.dp2px(16.0f), + Color.TRANSPARENT + ) + ) + adapter = WalletAdapter() + adapter as WalletAdapter + } + + adapter.submitList(datas) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt index 5cda270..35a341d 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillDetailActivity.kt @@ -7,6 +7,7 @@ import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.databinding.ActivityWaybillDetailBinding import com.dahe.mylibrary.base.BaseActivity import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.SelectPicUtils /** * @ClassName WaybillDetailActivity @@ -22,5 +23,6 @@ class WaybillDetailActivity :BaseActivity(){ } override fun initDate() { +// SelectPicUtils().getInstance(mContext) } } \ No newline at end of file diff --git a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt index a416515..5cad3a0 100644 --- a/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt +++ b/app/src/main/java/com/dahe/gldriver/ui/waybill/activity/WaybillUpPicActivity.kt @@ -1,10 +1,21 @@ package com.dahe.gldriver.ui.waybill.activity import android.os.Bundle +import android.view.View +import androidx.recyclerview.widget.GridLayoutManager import com.dahe.gldriver.base.AppConfig import com.dahe.gldriver.databinding.ActivityWaybillUppicBinding +import com.dahe.mylibrary.adapter.GridImageAdapter +import com.dahe.mylibrary.adapter.GridImageAdapter.OnItemClickListener import com.dahe.mylibrary.base.BaseActivity +import com.dahe.mylibrary.pop.PopBottomPic import com.dahe.mylibrary.utils.ActivityUtils +import com.dahe.mylibrary.utils.ToastUtils +import com.dahe.mylibrary.weight.FullyGridLayoutManager +import com.luck.picture.lib.decoration.GridSpacingItemDecoration +import com.luck.picture.lib.entity.LocalMedia +import com.luck.picture.lib.utils.DensityUtil +import com.lxj.xpopup.XPopup /** * @ClassName WaybillUpPicActivity @@ -29,7 +40,7 @@ class WaybillUpPicActivity : BaseActivity() { mContext, WaybillSuccActivity::class.java, Bundle().apply { putInt(AppConfig.SUCCESS_TYPE, 1) }) - }else{ + } else { ActivityUtils.startActivity( mContext, WaybillSuccActivity::class.java, @@ -38,6 +49,48 @@ class WaybillUpPicActivity : BaseActivity() { } } + + private val mData: List = ArrayList() override fun initDate() { + + binding.recyclerView.run { + layoutManager = FullyGridLayoutManager(mContext, 4, GridLayoutManager.VERTICAL, false) + addItemDecoration( + GridSpacingItemDecoration( + 4, + DensityUtil.dip2px(mContext, 8f), false + ) + ) + + var myAdapter = GridImageAdapter(mContext, mData) + + myAdapter.setOnItemClickListener(object :OnItemClickListener{ + override fun onItemClick(v: View?, position: Int) { + + } + + override fun openPicture() { + XPopup.Builder(mContext) + .hasShadowBg(true) + .dismissOnBackPressed(true) + .dismissOnTouchOutside(true) + .moveUpToKeyboard(false) //如果不加这个,评论弹窗会移动到软键盘上面 + .isViewMode(true) + .isDestroyOnDismiss(true) //对于只使用一次的弹窗,推荐设置这个 + .asCustom(PopBottomPic(mContext,myAdapter, onPicResultListener = { + ToastUtils.showToast(mContext,it.size.toString()) + myAdapter.data.addAll(it) + myAdapter.notifyDataSetChanged() + })) + .show() + } + }) + +// setHasFixedSize(true) + adapter = myAdapter + } + + + } } \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/icon_add_pic.png b/app/src/main/res/drawable-xxhdpi/icon_add_pic.png new file mode 100644 index 0000000..5823b46 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_add_pic.png differ diff --git a/app/src/main/res/drawable-xxhdpi/money_bg.png b/app/src/main/res/drawable-xxhdpi/money_bg.png new file mode 100644 index 0000000..9b677e9 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/money_bg.png differ diff --git a/app/src/main/res/drawable-xxhdpi/wallet_bg.png b/app/src/main/res/drawable-xxhdpi/wallet_bg.png new file mode 100644 index 0000000..772a65f Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/wallet_bg.png differ diff --git a/app/src/main/res/layout/acitivity_auth_party.xml b/app/src/main/res/layout/acitivity_auth_party.xml new file mode 100644 index 0000000..fadd657 --- /dev/null +++ b/app/src/main/res/layout/acitivity_auth_party.xml @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_cars_man.xml b/app/src/main/res/layout/activity_cars_man.xml new file mode 100644 index 0000000..fd04d71 --- /dev/null +++ b/app/src/main/res/layout/activity_cars_man.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_rules.xml b/app/src/main/res/layout/activity_rules.xml new file mode 100644 index 0000000..e90807a --- /dev/null +++ b/app/src/main/res/layout/activity_rules.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_wallet.xml b/app/src/main/res/layout/activity_wallet.xml new file mode 100644 index 0000000..9c03c32 --- /dev/null +++ b/app/src/main/res/layout/activity_wallet.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_waybill_uppic.xml b/app/src/main/res/layout/activity_waybill_uppic.xml index 1e71783..7ab1766 100644 --- a/app/src/main/res/layout/activity_waybill_uppic.xml +++ b/app/src/main/res/layout/activity_waybill_uppic.xml @@ -12,7 +12,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/dp_240" android:background="@drawable/home_top_bg" - android:paddingTop="@dimen/dp_48"> + android:paddingTop="@dimen/dp_50"> + - + android:overScrollMode="never" /> + @@ -157,9 +160,9 @@ @@ -230,6 +233,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml new file mode 100644 index 0000000..427b3d5 --- /dev/null +++ b/app/src/main/res/layout/activity_web.xml @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a1f0526..efac6ab 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -87,6 +87,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_20" android:horizontalSpacing="@dimen/dp_30" + android:listSelector="@color/color_transparent" android:numColumns="4"> diff --git a/app/src/main/res/layout/fragment_mine.xml b/app/src/main/res/layout/fragment_mine.xml index a02ce25..6a780bf 100644 --- a/app/src/main/res/layout/fragment_mine.xml +++ b/app/src/main/res/layout/fragment_mine.xml @@ -232,6 +232,7 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_wallet.xml b/app/src/main/res/layout/item_wallet.xml new file mode 100644 index 0000000..92a9957 --- /dev/null +++ b/app/src/main/res/layout/item_wallet.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/compile.gradle b/compile.gradle index 3abc639..6dfaf8f 100644 --- a/compile.gradle +++ b/compile.gradle @@ -1,9 +1,9 @@ def CrashActivityVersion = '2.4.0' def StatusBarVersion = '2.3.3' def GsonVersion = '2.10.1' -def PhotoPickerVersion = 'v3.11.1' +def PhotoPickerVersion = 'v3.11.2' def GlideVersion = '4.16.0' -def AgentWebVersion = 'v5.0.6-androidx' +def AgentWebVersion = 'v5.1.1-androidx' def NiceDialogVersion = '1.1.9' def AndPermissionVersion = '2.0.3' def BannerVersion = '2.2.2' @@ -22,7 +22,7 @@ def PickerView = '4.1.9' def Permissionx = '1.7.1' def NiceSpinner = '1.4.4' def Countdownview = '2.1.6' -def Xpopup = '2.9.19' +def Xpopup = '2.10.0' def CheckVersionLib = '2.4.2' def BuglyVersion = 'latest.release' project.ext { @@ -41,7 +41,7 @@ project.ext { "PhotoPicker" : "io.github.lucksiege:pictureselector:${PhotoPickerVersion}", // "PhotoPicker" : "com.github.LuckSiege.PictureSelector:picture_library:${PhotoPickerVersion}", // "PhotoPicker" : "io.github.lucksiege:pictureselector:${PhotoPickerVersion}", - "agentweb" : "com.github.Justson.AgentWeb:agentweb-core:${AgentWebVersion}", + "agentweb" : "io.github.justson:agentweb-core:${AgentWebVersion}", "statusbaruitl" : "com.github.niorgai:StatusBarCompat:${StatusBarVersion}", "glide" : "com.github.bumptech.glide:glide:${GlideVersion}", "glide-compiler" : "com.github.bumptech.glide:compiler:${GlideVersion}", diff --git a/mylibrary/build.gradle b/mylibrary/build.gradle index 177a55d..42cdf36 100644 --- a/mylibrary/build.gradle +++ b/mylibrary/build.gradle @@ -30,6 +30,10 @@ android { kotlinOptions { jvmTarget = '11' } + + buildFeatures { + viewBinding = true + } } dependencies { @@ -77,6 +81,7 @@ dependencies { api rootProject.ext.dependencies["glide-okhttps"] api rootProject.ext.dependencies["Permissionx"] api 'pub.devrel:easypermissions:3.0.0' + api 'io.github.lucksiege:compress:v3.11.2' // api 'com.gyf.cactus:cactus:1.1.3-beta13' diff --git a/mylibrary/src/main/AndroidManifest.xml b/mylibrary/src/main/AndroidManifest.xml index 2f43892..2c1d73e 100644 --- a/mylibrary/src/main/AndroidManifest.xml +++ b/mylibrary/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ + \ No newline at end of file diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/adapter/GridImageAdapter.kt b/mylibrary/src/main/java/com/dahe/mylibrary/adapter/GridImageAdapter.kt new file mode 100644 index 0000000..c342576 --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/adapter/GridImageAdapter.kt @@ -0,0 +1,206 @@ +package com.dahe.mylibrary.adapter + +import android.content.Context +import android.net.Uri +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.dahe.mylibrary.R +import com.dahe.mylibrary.callback.OnItemLongClickListener +import com.luck.picture.lib.config.PictureMimeType +import com.luck.picture.lib.config.SelectMimeType +import com.luck.picture.lib.entity.LocalMedia +import com.luck.picture.lib.utils.DateUtils + +/** + * @author:luck + * @date:2016-7-27 23:02 + * @describe:GridImageAdapter + */ +class GridImageAdapter(context: Context?, result: List?) : + RecyclerView.Adapter() { + private val mInflater: LayoutInflater + val data = ArrayList() + var selectMax = 9 + + /** + * 删除 + */ + fun delete(position: Int) { + try { + if (position != RecyclerView.NO_POSITION && data.size > position) { + data.removeAt(position) + notifyItemRemoved(position) + notifyItemRangeChanged(position, data.size) + } + } catch (e: Exception) { + e.printStackTrace() + } + } + + fun remove(position: Int) { + if (position < data.size) { + data.removeAt(position) + } + } + + class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { + var mImg: ImageView + var mIvDel: ImageView + var tvDuration: TextView + + init { + mImg = view.findViewById(R.id.fiv) + mIvDel = view.findViewById(R.id.iv_del) + tvDuration = view.findViewById(R.id.tv_duration) + } + } + + override fun getItemCount(): Int { + return if (data.size < selectMax) { + data.size + 1 + } else { + data.size + } + } + + override fun getItemViewType(position: Int): Int { + return if (isShowAddItem(position)) { + TYPE_CAMERA + } else { + TYPE_PICTURE + } + } + + /** + * 创建ViewHolder + */ + override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): ViewHolder { + val view = mInflater.inflate(R.layout.gv_filter_image, viewGroup, false) + return ViewHolder(view) + } + + private fun isShowAddItem(position: Int): Boolean { + val size = data.size + return position == size + } + + /** + * 设置值 + */ + override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { + //少于MaxSize张,显示继续添加的图标 + if (getItemViewType(position) == TYPE_CAMERA) { + viewHolder.mImg.setImageResource(R.drawable.ic_add_image) + viewHolder.mImg.setOnClickListener { + if (mItemClickListener != null) { + mItemClickListener!!.openPicture() + } + } + viewHolder.mIvDel.visibility = View.INVISIBLE + } else { + viewHolder.mIvDel.visibility = View.VISIBLE + viewHolder.mIvDel.setOnClickListener { view: View? -> + val index = viewHolder.absoluteAdapterPosition + if (index != RecyclerView.NO_POSITION && data.size > index) { + data.removeAt(index) + notifyItemRemoved(index) + notifyItemRangeChanged(index, data.size) + } + } + val media = data[position] + val chooseModel = media.chooseModel + val path = media.availablePath + val duration = media.duration + viewHolder.tvDuration.visibility = + if (PictureMimeType.isHasVideo(media.mimeType)) View.VISIBLE else View.GONE + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.tvDuration.visibility = View.VISIBLE + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds( + R.drawable.ps_ic_audio, + 0, + 0, + 0 + ) + } else { + viewHolder.tvDuration.setCompoundDrawablesRelativeWithIntrinsicBounds( + R.drawable.ps_ic_video, + 0, + 0, + 0 + ) + } + viewHolder.tvDuration.text = DateUtils.formatDurationTime(duration) + if (chooseModel == SelectMimeType.ofAudio()) { + viewHolder.mImg.setImageResource(R.drawable.ps_audio_placeholder) + } else { + Glide.with(viewHolder.itemView.context) + .load( + if (PictureMimeType.isContent(path) && !media.isCut && !media.isCompressed) Uri.parse( + path + ) else path + ) + .centerCrop() + .placeholder(R.color.app_color_f6) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .into(viewHolder.mImg) + } + //itemView 的点击事件 + if (mItemClickListener != null) { + viewHolder.itemView.setOnClickListener { v: View? -> + val adapterPosition = viewHolder.absoluteAdapterPosition + mItemClickListener!!.onItemClick(v, adapterPosition) + } + } + if (mItemLongClickListener != null) { + viewHolder.itemView.setOnLongClickListener { v: View? -> + val adapterPosition = viewHolder.absoluteAdapterPosition + mItemLongClickListener!!.onItemLongClick(viewHolder, adapterPosition, v) + true + } + } + } + } + + private var mItemClickListener: OnItemClickListener? = null + fun setOnItemClickListener(l: OnItemClickListener?) { + mItemClickListener = l + } + + interface OnItemClickListener { + /** + * Item click event + * + * @param v + * @param position + */ + fun onItemClick(v: View?, position: Int) + + /** + * Open PictureSelector + */ + fun openPicture() + } + + private var mItemLongClickListener: OnItemLongClickListener? = null + + init { + mInflater = LayoutInflater.from(context) + data.addAll(result!!) + } + + fun setItemLongClickListener(l: OnItemLongClickListener?) { + mItemLongClickListener = l + } + + companion object { + const val TAG = "PictureSelector" + const val TYPE_CAMERA = 1 + const val TYPE_PICTURE = 2 + } +} diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java index 0615da2..29ba5a9 100644 --- a/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java +++ b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseActivity.java @@ -46,13 +46,15 @@ public abstract class BaseActivity extends AppCompatActi protected int mRefreshPage = 1; protected int mRefreshCount = 15; + private int statusColor = -1; + public VB binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = createBinding(); - if (binding==null) + if (binding == null) return; setContentView(binding.getRoot()); mContext = this; @@ -95,6 +97,7 @@ public abstract class BaseActivity extends AppCompatActi * 设置沉浸式标题栏 标题栏的颜色 */ public void setStatusBarColor(int color) { + statusColor = color; StatusBarCompat.setStatusBarColor(this, ContextCompat.getColor(mContext, color), DEFAULT_STATUS_BAR_ALPHA); StatusBar.changeToLightStatusBar(this); //黑色 下边白色 // StatusBar.cancelLightStatusBar(this); @@ -155,13 +158,14 @@ public abstract class BaseActivity extends AppCompatActi if (!TextUtils.isEmpty(title)) ((TextView) findViewById(R.id.common_toolBar_title)).setText(title); } + /** * 设置标题 */ - protected void setTitleBar(String title,boolean isBack) { + protected void setTitleBar(String title, boolean isBack) { mToolbar = (Toolbar) findViewById(R.id.common_toolbar); - mToolbar.setBackgroundColor(Color.TRANSPARENT); - if (isBack){ + mToolbar.setBackgroundColor(statusColor == -1 ? Color.TRANSPARENT : ContextCompat.getColor(mContext, statusColor)); + if (isBack) { mToolbar.setNavigationIcon(R.drawable.left_black); mToolbar.setNavigationOnClickListener(view -> finish()); } @@ -169,6 +173,7 @@ public abstract class BaseActivity extends AppCompatActi ((TextView) findViewById(R.id.common_toolBar_title)).setText(title); } + /** * 显示右边标题 * diff --git a/app/src/main/java/com/dahe/gldriver/utils/BaseSingleton.kt b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseSingleton.kt similarity index 96% rename from app/src/main/java/com/dahe/gldriver/utils/BaseSingleton.kt rename to mylibrary/src/main/java/com/dahe/mylibrary/base/BaseSingleton.kt index b866cc4..e110d54 100644 --- a/app/src/main/java/com/dahe/gldriver/utils/BaseSingleton.kt +++ b/mylibrary/src/main/java/com/dahe/mylibrary/base/BaseSingleton.kt @@ -1,4 +1,4 @@ -package com.dahe.gldriver.utils +package com.dahe.mylibrary.base /** * @ClassName BaseSingleton diff --git a/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt new file mode 100644 index 0000000..ae4c015 --- /dev/null +++ b/mylibrary/src/main/java/com/dahe/mylibrary/pop/PopBottomPic.kt @@ -0,0 +1,122 @@ +package com.dahe.mylibrary.pop + +import android.content.Context +import android.widget.Button +import com.dahe.mylibrary.R +import com.dahe.mylibrary.adapter.GridImageAdapter +import com.dahe.mylibrary.utils.SelectPicUtils +import com.dahe.mylibrary.utils.ToastUtils +import com.dahe.mylibrary.weight.GlideEngine +import com.dahe.mylibrary.weight.ImageFileCompressEngine +import com.luck.picture.lib.basic.PictureSelectionCameraModel +import com.luck.picture.lib.basic.PictureSelectionModel +import com.luck.picture.lib.basic.PictureSelector +import com.luck.picture.lib.config.SelectMimeType +import com.luck.picture.lib.entity.LocalMedia +import com.luck.picture.lib.interfaces.OnResultCallbackListener +import com.lxj.xpopup.core.BottomPopupView +import kotlin.math.min + +/** + * @ClassName PopBottomPic + * @Author john + * @Date 2024/1/31 11:11 + * @Description TODO + */ +class PopBottomPic( + context: Context, + myAdapter: GridImageAdapter, + onPicResultListener: onPicResultListener +) : BottomPopupView(context) { + + + private var listener: onPicResultListener + var myAdapter: GridImageAdapter + + init { + this.listener = onPicResultListener + this.myAdapter = myAdapter + } + + override fun getImplLayoutId() = R.layout.choice_car_timg + + override fun onCreate() { + super.onCreate() + var paizhao = findViewById