18034727885
2026-07-02 eb6124e310ae8875a0150ee5d2edd52d5a579d87
快件订单优化
10个文件已添加
20个文件已修改
1117 ■■■■■ 已修改文件
app/build.gradle 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/bean/OrderBean.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/bean/OrderListBean.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/netUtls/Api.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/drawable/shape_black1_bg_4.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_media_operation.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_mine_income.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_mine_purse.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_over.xml 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_over_small.xml 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_show_picture.xml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/include_order_money.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_media_operation.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/item_show_picture.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/mipmap-xxhdpi/icon_camera_box.png 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values-en/strings.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values-fr/strings.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/colors.xml 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -180,6 +180,7 @@
}
dependencies {
    implementation 'androidx.activity:activity-ktx:1.8.0'
    implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs')
    implementation "com.facebook.soloader:soloader:0.12.1"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.9.0"
app/src/main/AndroidManifest.xml
@@ -52,9 +52,7 @@
        android:name="android.hardware.telephony"
        android:required="false" /> <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> -->
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> -->
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <!-- 诱导悬浮窗 -->
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> <!-- 诱导悬浮窗 -->
    <uses-permission android:name="android.permission.MANAGE_OVERLAY_PERMISSION" />
    <application
@@ -69,6 +67,12 @@
        android:usesCleartextTraffic="true"
        tools:replace="android:allowBackup">
        <activity
            android:name=".ui.main.ShowPictureActivity"
            android:exported="false" />
        <activity
            android:name=".ui.main.MediaOperationActivity"
            android:exported="false" />
        <activity
            android:name=".base.gaode.NaviGoogleActivity"
            android:exported="false" />
        <activity
@@ -77,8 +81,6 @@
        <activity
            android:name=".ui.main.ChangPhoneActivity"
            android:exported="false" />
        <activity
            android:name=".ui.pub.StartActivity"
            android:exported="true">
@@ -88,18 +90,19 @@
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".ui.GetImgActivity"
            android:theme="@style/AppThemegetphoto"
            android:exported="false">
            <!--<intent-filter>
            android:exported="false"
            android:theme="@style/AppThemegetphoto">
            <!--
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>-->
            </intent-filter>
            -->
        </activity>
        <activity
            android:name=".ui.pub.BecomeDriverActivity"
            android:exported="false" />
app/src/main/java/com/driver/igotrip/base/MyBaseActivity.java
@@ -357,6 +357,11 @@
        }
    }
    //设置全屏模式
    public void setFullScreenMode(boolean isFull) {
        rl_header.setVisibility(isFull ? GONE : VISIBLE);
        rl_title.setVisibility(isFull ? GONE : VISIBLE);
    }
    private void init() {
        title_layout = (LinearLayout) findViewById(R.id.title_layout);
app/src/main/java/com/driver/igotrip/base/local/BasePhotoActivity.kt
@@ -105,7 +105,7 @@
                        }
                    }
                } else {
                    showToast("请在应用权限页面开启相机权限")
                    showToast(getString(R.string.请在应用权限页面开启相机权限))
                }
            }
app/src/main/java/com/driver/igotrip/bean/OrderBean.java
@@ -200,6 +200,8 @@
        public String audioUrl; // 接单时间 yyyy-MM-dd HH:mm:ss
        public String userPhone; // 包裹下单人的电话
        public int isFrozen; // 2已冻结
        public String platformServerMoney; // 平台服务费
        public String driverServerMoney; // 实际收入
        public String getSnatchOrderTime() {
            return snatchOrderTime;
app/src/main/java/com/driver/igotrip/bean/OrderListBean.java
@@ -49,8 +49,10 @@
        private String name;
        private double redMoney;
        private String startAddress;
        //1=待接单,2=待出发,3=待到达预约地点,4=待取货,5=送货中,6=已送达,7=待支付,8=需补差价,9=已取货,10=已取消,11=改派中,12=已支付差价
        private int state;
        private String time;
        //1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车
        private int type;
        private String remark;
        private String peopleNumber;
app/src/main/java/com/driver/igotrip/netUtls/Api.java
@@ -7,13 +7,13 @@
 */
public class Api {
   // public static final String BASE_URL = "https://igo.i-go.group/driver-server/";
   public static final String BASE_URL = "https://gopost.ci/driver-server/";
//    public static final String BASE_URL = "http://221.182.45.100:5000/driver-server/";
    public static final String SOCKET_SERVER = "34.155.170.245";
//    public static final String SOCKET_SERVER = "221.182.45.100";
    public static final int SOCKET_PORT = 8888;
    public static final boolean isTest = false;
    public static final String BASE_URL_TEST = "http://192.168.110.111:5000/driver-server/";
    public static final String SOCKET_SERVER_TEST = "192.168.110.111";
    public static final int SOCKET_PORT_TEST = 9991;
    public static final String BASE_URL = isTest ? BASE_URL_TEST : "https://gopost.ci/driver-server/";
    public static final String SOCKET_SERVER = isTest ? SOCKET_SERVER_TEST : "34.155.170.245";
    public static final int SOCKET_PORT = isTest ? SOCKET_PORT_TEST : 8888;
    public static final int SUCCESS = 200;
//    http://182.160.16.251:81/share/share/shareIndex.html?type=2&uid=2&language=1
    public static final String strShare = "https://igo.i-go.group/share/share/shareIndex%d.html?language=%d_2_%s"                                                                                                                                                                                                                                                                                                                                                      ;
app/src/main/java/com/driver/igotrip/ui/adapter/MediaOperationAdapter.kt
New file
@@ -0,0 +1,35 @@
package com.driver.igotrip.ui.adapter
import android.view.View
import android.widget.ImageView
import androidx.core.view.isVisible
import com.driver.igotrip.R
import com.driver.igotrip.base.BaseRvAdapter
import com.driver.igotrip.base.BaseViewHolder
import com.driver.igotrip.utils.glide.GlideUtil
//多媒体操作适配器
class MediaOperationAdapter : BaseRvAdapter<String>() {
    private var onItemDeleteClickListener: ((position: Int, item: String) -> Unit)? = null
    override fun getLayoutResId(viewType: Int) = R.layout.item_media_operation
    override fun onBindItem(holder: BaseViewHolder, view: View, item: String) {
        view.findViewById<ImageView>(R.id.iv_picture)?.also {
            if (item.isNullOrEmpty()) {
                it.setImageResource(R.mipmap.icon_camera_box)
            } else {
                GlideUtil.load(it, item, 0, 0, 4)
            }
        }
        view.findViewById<ImageView>(R.id.iv_delete)?.also {
            it.isVisible = !item.isNullOrEmpty()
            it.setOnClickListener {
                onItemDeleteClickListener?.invoke(holder.bindingAdapterPosition, item)
            }
        }
    }
    fun setOnItemDeleteClickListener(onItemDeleteClickListener: ((position: Int, item: String) -> Unit)?) {
        this.onItemDeleteClickListener = onItemDeleteClickListener
    }
}
app/src/main/java/com/driver/igotrip/ui/adapter/ShowPictureAdapter.kt
New file
@@ -0,0 +1,34 @@
package com.driver.igotrip.ui.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import com.driver.igotrip.R
import com.driver.igotrip.utils.glide.GlideUtil
//显示图片适配器
class ShowPictureAdapter : RecyclerView.Adapter<ShowPictureAdapter.ShowPictureViewHolder>() {
    private val list = mutableListOf<String>()
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ShowPictureViewHolder {
        val inflate =
            LayoutInflater.from(parent.context).inflate(R.layout.item_show_picture, parent, false)
        return ShowPictureViewHolder(inflate)
    }
    override fun onBindViewHolder(holder: ShowPictureViewHolder, position: Int) {
        GlideUtil.load(holder.ivPicture, list[position], 0, 0, 0)
    }
    override fun getItemCount() = list.size
    fun setData(list: List<String>) {
        this.list.clear()
        this.list.addAll(list)
        notifyItemRangeInserted(0, list.size)
    }
    class ShowPictureViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val ivPicture: ImageView? = itemView.findViewById<ImageView>(R.id.iv_picture)
    }
}
app/src/main/java/com/driver/igotrip/ui/main/MediaOperationActivity.kt
New file
@@ -0,0 +1,234 @@
package com.driver.igotrip.ui.main
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.view.View
import android.widget.TextView
import androidx.activity.ComponentActivity
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.driver.igotrip.R
import com.driver.igotrip.base.MyBaseActivity
import com.driver.igotrip.bean.StringBean
import com.driver.igotrip.netUtls.Api
import com.driver.igotrip.netUtls.BaseBean
import com.driver.igotrip.netUtls.HttpManager
import com.driver.igotrip.netUtls.MyObserver
import com.driver.igotrip.ui.DialogUtil
import com.driver.igotrip.ui.GetImgActivity
import com.driver.igotrip.ui.adapter.MediaOperationAdapter
import com.tbruyelle.rxpermissions2.RxPermissions
import io.reactivex.disposables.Disposable
import org.jetbrains.anko.find
import org.jetbrains.anko.toast
import java.io.File
//多媒体操作页
class MediaOperationActivity : MyBaseActivity() {
    //多媒体资源
    private val mediaMap = mutableMapOf<String, String>()
    private val title by lazy { intent.getStringExtra("title") }
    private val operationLabel by lazy { intent.getStringExtra("operationLabel") }
    private val max by lazy { intent.getIntExtra("max", 0) }
    private val min by lazy { intent.getIntExtra("min", 0) }
    private val pictures = mutableListOf<String>("")
    private val adapter by lazy { MediaOperationAdapter() }
    private val rvList by lazy { findViewById<RecyclerView>(R.id.rv_list) }
    private val tvOperation by lazy { findViewById<TextView>(R.id.tv_operation) }
    companion object {
        //获取跳转此页面intent
        fun getIntent(
            context: Context,
            title: String,
            operationLabel: String,
            max: Int,
            min: Int
        ): Intent {
            return Intent(context, MediaOperationActivity::class.java).apply {
                putExtra("title", title)
                putExtra("operationLabel", operationLabel)
                putExtra("max", max)
                putExtra("min", min)
            }
        }
    }
    override fun setContentView() {
        setContentView(R.layout.activity_media_operation)
    }
    override fun initView() {
        setTitleText("请上传图片")
        tv_title.text = title
        rvList.adapter = adapter
        rvList.layoutManager = GridLayoutManager(this, 4)
        adapter.data = pictures
        tvOperation.text = operationLabel
    }
    override fun setOnclick() {
        adapter.setOnItemClickListener { _, position ->
            if (pictures[position].isEmpty()) {
                mediaOperation("请选择")
            } else {
                val arrayList = ArrayList<String>()
                arrayList.addAll(pictures)
                startActivity(ShowPictureActivity.getIntent(this, "", arrayList, position))
            }
        }
        adapter.setOnItemDeleteClickListener { position, item ->
            removeMedia(position)
        }
        tvOperation.setOnClickListener {
            val data = pictures.toMutableList().apply {
                removeIf { it.isEmpty() }
            }
            if (data.size < min) {
                toast(getString(R.string.请上传图片))
                return@setOnClickListener
            }
            setResult(RESULT_OK, Intent().apply {
                putStringArrayListExtra("result", ArrayList<String>().apply { addAll(data) })
            })
            finish()
        }
    }
    //多媒体的操作
    @SuppressLint("CheckResult")
    private fun mediaOperation(title: String) {
        val rxPermissions = RxPermissions(this)
        rxPermissions.request(Manifest.permission.CAMERA)
            .subscribe { aBoolean ->
                if (aBoolean) {
                    val phoneDialog = DialogUtil.getDialog(mContext, R.layout.dialog_phone)
                    val view = DialogUtil.getView(phoneDialog)
                    if (!title.isEmpty()) {
                        view.find<TextView>(R.id.btn_title).text = title
                    } else {
                        view.find<TextView>(R.id.btn_title).text = getString(R.string.选择照片)
                    }
                    view.find<View>(R.id.button_cancel).setOnClickListener {
                        phoneDialog.dismiss()
                    }
                    view.find<View>(R.id.btn_album).setOnClickListener {
                        openAlbum()
                        phoneDialog.dismiss()
                    }
                    view.find<View>(R.id.btn_phone).setOnClickListener {
                        openCarmra()
                        phoneDialog.dismiss()
                    }
                } else {
                    showToast(getString(R.string.请在应用权限页面开启相机权限))
                }
            }
    }
    //打开相册
    fun openAlbum() {
        startActivityForResult(Intent(this, GetImgActivity::class.java).apply {
            putExtra("type", false)
        }, 321)
    }
    //拍照
    private fun openCarmra() {
        startActivityForResult(Intent(this, GetImgActivity::class.java).apply {
            putExtra("type", true)
        }, 123)
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode == ComponentActivity.RESULT_OK) {
            if (requestCode == 123) {
                data?.let { it ->
                    it.getStringExtra("img")?.also {
                        operationMedia(it)
                    }
                }
            } else {
                data?.let { it ->
                    it.getStringExtra("img")?.also {
                        operationMedia(it)
                    }
                }
            }
        }
    }
    //操作多媒体
    private fun operationMedia(filePath: String) {
        val url = mediaMap[filePath]
        if (url.isNullOrEmpty()) {
            saveMedia(filePath) {
                mediaMap[filePath] = it
                addMedia(it)
            }
            return
        }
        addMedia(url)
    }
    //添加多媒体
    private fun addMedia(url: String) {
        pictures.removeIf { it.isEmpty() }
        pictures.add(url)
        if (pictures.size < max) {
            pictures.add(0, "")
        }
        adapter.data = pictures
    }
    //移除多媒体
    private fun removeMedia(position: Int) {
        pictures.removeAt(position)
        pictures.removeIf { it.isEmpty() }
        if (pictures.size < max) {
            pictures.add(0, "")
        }
        adapter.data = pictures
    }
    /***
     * 保存多媒体,上传oss
     */
    private fun saveMedia(filePath: String, block: (url: String) -> Unit) {
        HttpManager.getInstance()
            .post<BaseBean<String>>(
                Api.upImage,
                File(filePath),
                object : MyObserver(this@MediaOperationActivity) {
                    override fun onSubscribe(d: Disposable) {
                        super.onSubscribe(d)
                        println("上传开始:" + filePath)
                        showDialog()
                    }
                    override fun success(responseString: String?) {
                        dismissDialog()
                        val fromJson = gson.fromJson(responseString, StringBean::class.java)
                        val url = fromJson.data
                        if (!url.isNullOrEmpty()) {
                            println("上传成功:" + url)
                            block.invoke(url)
                        } else {
                            println("上传失败:" + url)
                        }
                    }
                    override fun onError(e: Throwable) {
                        super.onError(e)
                        dismissDialog()
                        println("上传失败:" + e.message)
                    }
                })
    }
}
app/src/main/java/com/driver/igotrip/ui/main/OrderOverActivity.kt
@@ -58,6 +58,12 @@
    private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) }
    private val tv_red_money by lazy { find<TextView>(R.id.tv_red_money) }
    private val remark by lazy { find<TextView>(R.id.remark) }
    private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) }
    private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) }
    private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) }
    private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) }
    private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) }
    private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) }
    private val tv_cancel_to by lazy { find<TextView>(R.id.tv_cancel_to) }
    private val tv_cancel_money by lazy { find<TextView>(R.id.tv_cancel_money) }
    private val tv_cancel_result by lazy { find<TextView>(R.id.tv_cancel_result) }
@@ -108,6 +114,9 @@
            if(orderType == "1"){
                tv_red_money.gone()
            }
            tv_order_money.text = getString(R.string.money) + it.orderMoney
            tv_service_money.text = getString(R.string.money) + it.platformServerMoney
            tv_real_income.text = getString(R.string.money) + it.driverServerMoney
            when (orderBean.orderState) {
                10,12-> {
                    ll_order_cancel.visible()
app/src/main/java/com/driver/igotrip/ui/main/ShowPictureActivity.kt
New file
@@ -0,0 +1,72 @@
package com.driver.igotrip.ui.main
import android.content.Context
import android.content.Intent
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.viewpager2.widget.ViewPager2
import com.driver.igotrip.R
import com.driver.igotrip.base.MyBaseActivity
import com.driver.igotrip.ui.adapter.ShowPictureAdapter
//显示图片页
class ShowPictureActivity : MyBaseActivity() {
    private val title by lazy { intent.getStringExtra("title") }
    private val list by lazy { intent.getStringArrayListExtra("list") }
    private val index by lazy { intent.getIntExtra("index", 0) }
    private val adapter by lazy { ShowPictureAdapter() }
    private val tvBack by lazy { findViewById<TextView>(R.id.tv_back) }
    private val tvTitle by lazy { findViewById<TextView>(R.id.tv_title) }
    private val viewPager by lazy { findViewById<ViewPager2>(R.id.viewPager) }
    private val tvCount by lazy { findViewById<TextView>(R.id.tv_count) }
    companion object {
        //获取跳转此页面intent
        fun getIntent(
            context: Context,
            title: String,
            list: ArrayList<String>,
            index: Int = 0
        ): Intent {
            return Intent(context, ShowPictureActivity::class.java).apply {
                putExtra("title", title)
                putStringArrayListExtra("list", list)
                putExtra("index", index)
            }
        }
    }
    override fun setContentView() {
        setContentView(R.layout.activity_show_picture)
    }
    override fun initView() {
        setBlcakShow(false)
        setFullScreenMode(true)
        tvTitle.text = title
        viewPager.adapter = adapter
        viewPager.offscreenPageLimit = list?.size ?: 1
        viewPager.currentItem = index
        adapter.setData(list ?: emptyList())
        tvCount.isVisible = (list?.size ?: 0) > 1
        runOnUiThread {
            viewPager.currentItem = index
            refreshCount(index)
        }
    }
    override fun setOnclick() {
        tvBack.setOnClickListener { finish() }
        viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                super.onPageSelected(position)
                refreshCount(position)
            }
        })
    }
    //刷新下标
    private fun refreshCount(index: Int) {
        tvCount.text = "${index + 1}/${list?.size ?: 0}"
    }
}
app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallCargoActivity.kt
@@ -1,6 +1,7 @@
package com.driver.igotrip.ui.main.small_cargo
import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import android.os.Looper
@@ -10,6 +11,8 @@
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import cn.sinata.xldutils.utils.*
import com.driver.igotrip.R
import com.driver.igotrip.base.BaseEvent
@@ -27,6 +30,7 @@
import com.driver.igotrip.netUtls.*
import com.driver.igotrip.ui.DialogUtil
import com.driver.igotrip.ui.UiUtil
import com.driver.igotrip.ui.main.MediaOperationActivity
import com.driver.igotrip.ui.main.ReassignActivity
import com.driver.igotrip.utils.DateUtil
import com.driver.igotrip.utils.MyUtils
@@ -81,6 +85,9 @@
    var graylist = arrayListOf<LatLng>() // 灰色轨迹
    var grayline: Polyline? = null
    //业务多媒体类型
    var businessMediaType: Int = 0
    private val tv_name by lazy { find<TextView>(R.id.tv_name) }
    private val tv_car_num by lazy { find<TextView>(R.id.tv_car_num) }
    private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) }
@@ -97,6 +104,9 @@
    private val iv_police by lazy { find<View>(R.id.iv_police) }
    private val iv_to_gd by lazy { find<View>(R.id.iv_to_gd) }
    private val slide_btn by lazy { find<SlidingButton>(R.id.slide_btn) }
    //跳转另一个页面并接收返回结果启动器
    private lateinit var launcherForResult: ActivityResultLauncher<Intent>
    override fun setContentView() {
        setContentView(R.layout.activity_trip_cargo)
@@ -119,7 +129,28 @@
    }
    override fun initView() {
        launcherForResult =
            registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
                when (businessMediaType) {
                    0 -> {
                        if (result.resultCode == RESULT_OK && result.data != null) {
                            val result = result.data!!.getStringArrayListExtra("result")
                            showConfirmPriceDialog(result!!.joinToString(separator = ","))
                        } else {
                        }
                    }
                    1 -> {
                        if (result.resultCode == RESULT_OK && result.data != null) {
                            val result = result.data!!.getStringArrayListExtra("result")
                            showConfirmDeliveryDialog(result!!.joinToString(separator = ","))
                        } else {
                        }
                    }
                }
            }
    }
    private fun addSockectCancel() {
@@ -320,18 +351,14 @@
                    2, 3, 4 -> {
                        if (it.data.orderState == 4) {
                            if (orderType == "4") {
                                DialogUtil.getDelAndSureDialog(
                                businessMediaType = 0
                                launcherForResult.launch(
                                    MediaOperationActivity.getIntent(
                                    this,
                                    getString(R.string.确认现金金额).format(it.data.expressPayAllMoney)
                                        .replace(",", "."),
                                    {},
                                    {
                                        it.data.orderState++
                                        callStatue("1", it.data.orderState) {
                                            iv_to_gd.callOnClick()
                                        }
                                        showStatueMapUI(it)
                                    })
                                        getString(R.string.请上传图片),
                                        getString(R.string.确认取货), 3, 1
                                    )
                                )
                            } else {
                                it.data.orderState++
                                callStatue("1", it.data.orderState) {
@@ -350,49 +377,16 @@
                    }
                    5, 6 -> {
                        sendCode() {
                            it.data.orderState = 6
                            var dialog =
                                DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money)
                            var viewContent = DialogUtil.getView(dialog)
                            val view_hint_close_car =
                                viewContent.find<View>(R.id.view_hint_close_car)
                            val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close)
                            val tv_money = viewContent.find<TextView>(R.id.tv_money)
                            val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num)
                            val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg)
                            view_hint_close_car.setOnClickListener {
                                dialog.dismiss()
                            }
                            tv_car_num_close.setOnClickListener {
                                dialog.dismiss()
                            }
                            if (it.data.driverPay == "1") {
                                tv_money.visible()
                                tv_money.text =
                                    getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney)
                                        .replace(",", ".")
                            }
                            tv_sure_car_num.setOnClickListener {
                                var num = et_num_zg.getContent()
                                if (num.isEmpty()) {
                                    toast(getString(R.string.请输入验证码))
                                    return@setOnClickListener
                                }
                                callStatue(orderBean!!.data.orderState, num) {
                                    dialog.dismiss()
//                                    startActivity<SmallOverActivity>(
//                                        "orderId" to orderId,
//                                        "orderType" to orderType
//                                    )
                                    /* startActivity<MajorSureMoneyActivity>(
                                         "orderId" to orderId,
                                         "orderType" to orderType
                                     )*/
                                    finish()
                                }
                            }
                        }
//                        sendCode() {
                        businessMediaType = 1
                        launcherForResult.launch(
                            MediaOperationActivity.getIntent(
                                this,
                                getString(R.string.请上传图片),
                                getString(R.string.确认送达), 3, 1
                            )
                        )
//                        }
                    }
                    12 -> {
@@ -423,6 +417,62 @@
            }
        }
    }
    //显示确认送达弹窗
    private fun showConfirmDeliveryDialog(url: String) {
        orderBean?.let {
            it.data.orderState = 6
            val dialog = DialogUtil.getDialog(this, R.layout.dialog_show_cargo_money)
            val viewContent = DialogUtil.getView(dialog)
            val view_hint_close_car =
                viewContent.find<View>(R.id.view_hint_close_car)
            val tv_car_num_close = viewContent.find<View>(R.id.tv_car_num_close)
            val tv_money = viewContent.find<TextView>(R.id.tv_money)
            val tv_sure_car_num = viewContent.find<TextView>(R.id.tv_sure_car_num)
            val et_num_zg = viewContent.find<EditText>(R.id.et_num_zg)
            view_hint_close_car.setOnClickListener {
                dialog.dismiss()
            }
            tv_car_num_close.setOnClickListener {
                dialog.dismiss()
            }
            if (it.data.driverPay == "1") {
                tv_money.visible()
                tv_money.text =
                    getString(R.string.确认现金金额).format(if (orderType == "4") it.data.expressPayAllMoney else if (it.data.payMoney == 0.0) it.data.orderMoney else it.data.payMoney)
                        .replace(",", ".")
            }
            tv_sure_car_num.setOnClickListener {
                val num = et_num_zg.getContent()
                if (num.isEmpty()) {
                    toast(getString(R.string.请输入验证码))
                    return@setOnClickListener
                }
                confirmDelivery(6, num, url) {
                    dialog.dismiss()
                    finish()
                }
            }
        }
    }
    //显示确认价格弹窗
    private fun showConfirmPriceDialog(url: String) {
        orderBean?.let {
            DialogUtil.getDelAndSureDialog(
                this,
                getString(R.string.确认现金金额).format(it.data.expressPayAllMoney)
                    .replace(",", "."),
                {},
                {
                    confirmPickUp(url, 5) {
                        it.data.orderState = 5
                        showStatueMapUI(it)
                        iv_to_gd.callOnClick()
                    }
                })
        }
    }
    fun startNavi(startLat: Double, startLon: Double, endLat: Double, endLon: Double) {
@@ -475,6 +525,27 @@
        }
    }
    //确认送达
    private fun confirmDelivery(i: Int, num: String, imgTwo: String, click: () -> Unit) {
        var map = getMapByAny()
        map["orderId"] = orderId
        map["orderType"] = orderType
        map["state"] = i
        if (!num.isNullOrEmpty())
            map["pickUpCode"] = num
        Log.e(
            "定位==============》",
            "${MyApplication.getLocation()?.latitude},${MyApplication.getLocation()?.longitude}"
        )
        map["imgTwo"] = imgTwo
        map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0
        map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0
        callNet(Api.process, map) {
            OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i)
            click()
        }
    }
    private fun callStatue(phone: String, i: Int, click: () -> Unit) {
        var map = getMapByAny()
        map["orderId"] = orderId
@@ -489,6 +560,21 @@
        }
    }
    //确认收获
    private fun confirmPickUp(imgOne: String, i: Int, click: () -> Unit) {
        var map = getMapByAny()
        map["orderId"] = orderId
        map["orderType"] = orderType
        map["imgOne"] = imgOne
        map["state"] = i
        map["lat"] = MyApplication.getLocation()?.latitude ?: 0.0
        map["lon"] = MyApplication.getLocation()?.longitude ?: 0.0
        callNet(Api.process, map) {
            OrderTimeOutManager.instance.checkOrderManager(orderId, orderType, i)
            click()
        }
    }
    private var movedByFinger = false
    /***
app/src/main/java/com/driver/igotrip/ui/main/small_cargo/SmallOverActivity.kt
@@ -43,6 +43,12 @@
    private val tv_end_address by lazy { find<TextView>(R.id.tv_end_address) }
    private val tv_money_cargo by lazy { find<TextView>(R.id.tv_money_cargo) }
    private val tv_remark by lazy { find<TextView>(R.id.tv_remark) }
    private val ll_order_money by lazy { find<LinearLayout>(R.id.ll_order_money) }
    private val tv_order_money by lazy { find<TextView>(R.id.tv_order_money) }
    private val ll_service_money by lazy { find<LinearLayout>(R.id.ll_service_money) }
    private val tv_service_money by lazy { find<TextView>(R.id.tv_service_money) }
    private val ll_real_income by lazy { find<LinearLayout>(R.id.ll_real_income) }
    private val tv_real_income by lazy { find<TextView>(R.id.tv_real_income) }
    private val tv_pay_result_small_money by lazy { find<TextView>(R.id.tv_pay_result_small_money) }
    private val tv_tv_num_cargo by lazy { find<TextView>(R.id.tv_tv_num_cargo) }
    private val tv_people_cargo by lazy { find<TextView>(R.id.tv_people_cargo) }
@@ -100,6 +106,9 @@
                getString(R.string.其中含加急费用) + it.tipMoney.toString()
            setTitleText(getSmallStatue(it.orderState))
            tv_pay_result_title.text = getString(R.string.订单) + getSmallStatue(it.orderState)
            tv_order_money.text = getString(R.string.money) + it.orderMoney
            tv_service_money.text = getString(R.string.money) + it.platformServerMoney
            tv_real_income.text = getString(R.string.money) + it.driverServerMoney
            ll_pay_result.visible()
            if (it.orderState in 6..7) {
                tv_pay_result_title.text = getString(R.string.待乘客支付)
@@ -112,7 +121,8 @@
                iv_phone.gone()
                ll_pay_result.gone()
                tv_cancel_to.text = it.cancelUser
                tv_cancel_money.text = getString(R.string.money) +" "+ doubleOne(it.cancelPayMoney)
                tv_cancel_money.text =
                    getString(R.string.money) + " " + doubleOne(it.cancelPayMoney)
                tv_cancel_result.text = it.cancelReason
                tv_cancel_s.text = it.cancelRemark
                if (it.cancelRemark.isNullOrEmpty()){
@@ -133,8 +143,10 @@
            }
            if (it.isFrozen == 2){
                tv_frozen.visible()
                tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(0,
                    UiUtil.getFrozenBitmap(),0,0)
                tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(
                    0,
                    UiUtil.getFrozenBitmap(), 0, 0
                )
            }
        }
    }
app/src/main/java/com/driver/igotrip/utils/glide/GlideUtil.java
@@ -60,6 +60,19 @@
    /***
     * 加载图片
     */
    @SuppressLint("CheckResult")
    public static void load(ImageView imageView, String url, int placeholder, int error, int radius) {
        Glide.with(imageView)
                .load(url)
                .apply(getRequestOption(radius))
                .placeholder(placeholder)
                .error(error)
                .into(imageView);
    }
    /***
     * 加载图片
     * @param context
     * @param url
     * @param imageView
app/src/main/res/drawable/shape_black1_bg_4.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/black1" />
    <corners android:radius="4dp" />
</shape>
app/src/main/res/layout/activity_media_operation.xml
New file
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.main.MediaOperationActivity">
    <TextView
        android:id="@+id/tv_notice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="14dp"
        android:layout_marginTop="8dp"
        android:text="只支持jpg格式"
        android:textColor="#ff979797"
        android:textSize="14sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/rv_list"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="4dp"
        android:layout_marginHorizontal="9dp"
        app:layout_constraintBottom_toTopOf="@id/tv_operation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tv_notice" />
    <TextView
        android:id="@+id/tv_operation"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_marginHorizontal="14dp"
        android:layout_marginBottom="30dp"
        android:background="@drawable/bg_login"
        android:gravity="center"
        android:text=""
        android:textColor="@color/white"
        android:textSize="16sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/activity_mine_income.xml
@@ -41,7 +41,7 @@
                android:maxWidth="280dp"
                android:maxLines="1"
                android:singleLine="true"
                android:text="@string/我的收入"
                android:text="@string/平台服务费"
                android:textColor="@color/textColor"
                android:textSize="16sp"
                android:textStyle="bold" />
app/src/main/res/layout/activity_mine_purse.xml
@@ -128,7 +128,7 @@
            android:gravity="center_vertical"
            android:paddingStart="14dp"
            android:paddingEnd="14dp"
            android:text="@string/我的收入"
            android:text="@string/平台服务费"
            android:textColor="#ff333333"
            android:textSize="14sp" />
app/src/main/res/layout/activity_order_over.xml
@@ -6,6 +6,126 @@
    <include layout="@layout/include_order_top" />
    <LinearLayout
        android:id="@+id/ll_money_detail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:elevation="3dp"
        android:orientation="vertical"
        android:paddingHorizontal="14dp">
        <LinearLayout
            android:id="@+id/ll_order_money"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/订单金额"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_order_money"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/ll_service_money"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/平台服务费"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_service_money"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/ll_real_income"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/实际收入"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_real_income"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
    <include
        layout="@layout/include_order_money"
        android:layout_width="match_parent"
@@ -20,30 +140,31 @@
    <TextView
        android:id="@+id/tv_show_pay_over"
        android:layout_marginTop="10dp"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="@string/Passengers_have_paid"
        android:textStyle="bold"
        android:textColor="#ff000000"
        android:textSize="18sp" />
        android:textSize="18sp"
        android:textStyle="bold" />
    <include layout="@layout/include_weight_height"/>
    <include layout="@layout/include_pay_bottom"/>
    <TextView
        android:id="@+id/tv_frozen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_frozen"
        android:gravity="center"
        android:layout_marginBottom="50dp"
        android:visibility="gone"
        android:textColor="#FF9803"
        android:textStyle="bold"
        android:textSize="14sp"
        android:layout_marginHorizontal="40dp"
        android:layout_marginBottom="50dp"
        android:drawableTop="@mipmap/yidongjie_cn"
        android:drawablePadding="20dp"
        android:text="@string/被冻结"/>
        android:gravity="center"
        android:text="@string/被冻结"
        android:textColor="#FF9803"
        android:textSize="14sp"
        android:textStyle="bold"
        android:visibility="gone" />
</LinearLayout>
app/src/main/res/layout/activity_order_over_small.xml
@@ -6,6 +6,126 @@
    <include layout="@layout/include_order_top_cargo" />
    <LinearLayout
        android:id="@+id/ll_money_detail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"
        android:elevation="3dp"
        android:orientation="vertical"
        android:paddingHorizontal="14dp">
        <LinearLayout
            android:id="@+id/ll_order_money"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/订单金额"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_order_money"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/ll_service_money"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/平台服务费"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_service_money"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/ll_real_income"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginVertical="11dp"
                android:text="@string/实际收入"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginHorizontal="6dp"
                android:layout_marginVertical="11dp"
                android:text=":"
                android:textColor="#ff27282d"
                android:textSize="14sp"
                android:textStyle="bold" />
            <TextView
                android:id="@+id/tv_real_income"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="@color/color_e72c1c"
                android:textSize="16sp"
                android:textStyle="bold" />
        </LinearLayout>
    </LinearLayout>
    <include
        layout="@layout/include_order_money"
        android:layout_width="match_parent"
@@ -20,26 +140,27 @@
    <TextView
        android:id="@+id/tv_show_pay_over"
        android:layout_marginTop="10dp"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        android:text="@string/Passengers_have_paid"
        android:textColor="#ff000000"
        android:textSize="14sp" />
    <TextView
        android:id="@+id/tv_frozen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv_frozen"
        android:gravity="center"
        android:layout_marginBottom="50dp"
        android:visibility="gone"
        android:textColor="#FF9803"
        android:textStyle="bold"
        android:textSize="14sp"
        android:layout_marginHorizontal="40dp"
        android:layout_marginBottom="50dp"
        android:drawableTop="@mipmap/yidongjie_cn"
        android:drawablePadding="20dp"
        android:text="@string/被冻结"/>
        android:gravity="center"
        android:text="@string/被冻结"
        android:textColor="#FF9803"
        android:textSize="14sp"
        android:textStyle="bold"
        android:visibility="gone" />
</LinearLayout>
app/src/main/res/layout/activity_show_picture.xml
New file
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black"
    tools:context=".ui.main.ShowPictureActivity">
    <androidx.viewpager2.widget.ViewPager2
        android:id="@+id/viewPager"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/tv_back"
        android:layout_width="wrap_content"
        android:layout_marginTop="26dp"
        android:layout_height="50dp"
        android:drawableStart="@mipmap/icon_close"
        android:gravity="center"
        android:paddingStart="@dimen/dp_10"
        android:paddingEnd="@dimen/dp_15"
        android:textColor="@color/white"
        android:textSize="16sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:drawablePadding="3dp"
        android:layout_marginTop="26dp"
        android:gravity="center"
        android:maxWidth="240dp"
        android:maxLines="2"
        android:textColor="#333333"
        android:textSize="17sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/tv_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="30dp"
        android:textColor="@color/white"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/layout/include_order_money.xml
@@ -22,7 +22,7 @@
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        tools:text="FCFA15.12"
        android:textColor="#E72C1C"
        android:textColor="@color/color_e72c1c"
        android:textSize="36sp"
        android:textStyle="bold" />
app/src/main/res/layout/item_media_operation.xml
New file
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingHorizontal="5dp"
    android:paddingVertical="4dp">
    <ImageView
        android:id="@+id/iv_picture"
        android:layout_width="80dp"
        android:layout_height="80dp" />
    <ImageView
        android:id="@+id/iv_delete"
        android:layout_marginTop="2dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/iv_picture"
        android:layout_alignEnd="@id/iv_picture"
        android:background="@drawable/shape_black1_bg_4"
        android:padding="5dp"
        android:src="@mipmap/icon_close" />
</RelativeLayout>
app/src/main/res/layout/item_show_picture.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/iv_picture"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
app/src/main/res/mipmap-xxhdpi/icon_camera_box.png
app/src/main/res/values-en/strings.xml
@@ -823,5 +823,9 @@
    <string name="选择区号">Select Area Code</string>
    <string name="科特迪瓦">Côte d\'Ivoire</string>
    <string name="中国">China</string>
    <string name="确认取货">Confirm pickup</string>
    <string name="请上传图片">please upload images</string>
    <string name="请在应用权限页面开启相机权限">Please enable camera permissions on the app permissions page</string>
    <string name="实际收入">Real income</string>
</resources>
app/src/main/res/values-fr/strings.xml
@@ -827,4 +827,9 @@
    <string name="选择区号">Choisir le code régional</string>
    <string name="科特迪瓦">Côte d\'Ivoire</string>
    <string name="中国">Chine</string>
    <string name="确认取货">Confirmation de retrait</string>
    <string name="请上传图片">Veuillez télécharger une image</string>
    <string name="请在应用权限页面开启相机权限">Veuillez activer les autorisations de la caméra sur la page autorisations de l\'application</string>
    <string name="实际收入">Revenus réels</string>
</resources>
app/src/main/res/values/colors.xml
@@ -111,6 +111,7 @@
    <color name="color_2378D2">#2378D2</color>
    <color name="color_F35646">#F35646</color>
    <color name="color_e72c1c">#E72C1C</color>
app/src/main/res/values/strings.xml
@@ -815,5 +815,9 @@
    <string name="选择区号">选择区号</string>
    <string name="科特迪瓦">科特迪瓦</string>
    <string name="中国">中国</string>
    <string name="确认取货">确认取货</string>
    <string name="请上传图片">请上传图片</string>
    <string name="请在应用权限页面开启相机权限">请在应用权限页面开启相机权限</string>
    <string name="实际收入">实际收入</string>
</resources>