编录点新增4

This commit is contained in:
2025-09-27 23:25:12 +08:00
parent 8839320484
commit c02a2ff08c
33 changed files with 815 additions and 232 deletions
+4 -1
View File
@@ -78,7 +78,7 @@ android {
} }
dependencies { dependencies {
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
api rootProject.ext.androidxLibs api rootProject.ext.androidxLibs
// ViewModel and LiveData // ViewModel and LiveData
api rootProject.ext.jetpackLibs api rootProject.ext.jetpackLibs
@@ -112,4 +112,7 @@ dependencies {
implementation 'androidx.fragment:fragment-ktx:1.6.0' implementation 'androidx.fragment:fragment-ktx:1.6.0'
// implementation 'com.zhihu.android:matisse:0.6.0'
implementation project(':matisse')
implementation 'com.github.hackware1993:MagicIndicator:1.7.0'
} }
@@ -4,6 +4,7 @@
package="com.zmkg.coaloperation"> package="com.zmkg.coaloperation">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
@@ -17,6 +18,7 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.AppTheme" android:theme="@style/Theme.AppTheme"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:requestLegacyExternalStorage="true"
android:networkSecurityConfig="@xml/network_security_config" android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:allowBackup"> tools:replace="android:allowBackup">
@@ -69,6 +71,7 @@
<activity android:name=".ui.wateryield.WaterYieldObserveRecordActivity" /> <activity android:name=".ui.wateryield.WaterYieldObserveRecordActivity" />
<activity android:name=".ui.geologging.GeologicalPointActivity" /> <activity android:name=".ui.geologging.GeologicalPointActivity" />
<activity android:name=".ui.geologging.AddGeologicalPointActivity" /> <activity android:name=".ui.geologging.AddGeologicalPointActivity" />
<activity android:name=".ui.geologging.AddGeoLoggingFaceActivity" />
</application> </application>
</manifest> </manifest>
@@ -73,6 +73,8 @@ class MyApplication : Application(), ViewModelStoreOwner {
} }
fun initLoginStatusListener() { fun initLoginStatusListener() {
// TUILogin.addLoginListener(loginStatusListener) // TUILogin.addLoginListener(loginStatusListener)
} }
@@ -0,0 +1,32 @@
package com.zmkg.coaloperation.adapter
import android.view.LayoutInflater
import android.view.ViewGroup
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.databinding.ItemGeologicalListBinding
import com.zmkg.coaloperation.db.entity.geologging.GeoLoggingFace
class GeoLoggingFaceAdapter(list: MutableList<GeoLoggingFace>):
BaseQuickAdapter<GeoLoggingFace, GeoLoggingFaceAdapter.VH>(
R.layout.item_geological_list, list
){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH {
val binding = ItemGeologicalListBinding.inflate(
LayoutInflater.from(context), parent, false
)
return VH(binding).also {
bindViewClickListener(it, viewType)
}
}
override fun convert(
holder: VH,
item: GeoLoggingFace
) {
holder.binding.tvFaceName.text = item.surfaceName
}
inner class VH(var binding: ItemGeologicalListBinding): BaseViewHolder(binding.root)
}
@@ -7,6 +7,7 @@ import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.bean.GeoPointImage import com.zmkg.coaloperation.bean.GeoPointImage
import com.zmkg.coaloperation.databinding.ListItemPointImageBinding import com.zmkg.coaloperation.databinding.ListItemPointImageBinding
import com.zmkg.coaloperation.utils.load
class GeoPointImageAdapter(list: MutableList<GeoPointImage>): class GeoPointImageAdapter(list: MutableList<GeoPointImage>):
BaseQuickAdapter<GeoPointImage, GeoPointImageAdapter.VH>( BaseQuickAdapter<GeoPointImage, GeoPointImageAdapter.VH>(
@@ -26,7 +27,13 @@ class GeoPointImageAdapter(list: MutableList<GeoPointImage>):
holder: VH, holder: VH,
item: GeoPointImage item: GeoPointImage
) { ) {
holder.binding.ivPointImage.setImageResource(R.drawable.ic_add_image) holder.binding.ivPointImage.let {
if (item.isAddFlag) {
it.load(R.drawable.ic_add_image)
} else {
it.load(item.imagePath)
}
}
} }
inner class VH(var binding: ListItemPointImageBinding): BaseViewHolder(binding.root) inner class VH(var binding: ListItemPointImageBinding): BaseViewHolder(binding.root)
@@ -1,104 +1,123 @@
package com.zmkg.coaloperation.adapter package com.zmkg.coaloperation.adapter
import android.Manifest
import android.app.Activity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.widget.LinearLayout import android.widget.LinearLayout
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter import com.chad.library.adapter.base.BaseMultiItemQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.zmkg.coaloperation.R import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseActivity
import com.zmkg.coaloperation.bean.BaseItem import com.zmkg.coaloperation.bean.BaseItem
import com.zmkg.coaloperation.bean.GeoPointImage import com.zmkg.coaloperation.bean.GeoPointImage
import com.zmkg.coaloperation.bean.GeoPointMultiItem import com.zmkg.coaloperation.bean.GeoPointMultiItem
import com.zmkg.coaloperation.databinding.ListItemPointBaseHorizontalBinding import com.zmkg.coaloperation.databinding.ListItemPointBaseHorizontalBinding
import com.zmkg.coaloperation.databinding.ListItemPointBaseVerticalBinding import com.zmkg.coaloperation.databinding.ListItemPointBaseVerticalBinding
import com.zmkg.coaloperation.ui.geologging.AddGeologicalPointFragment
import com.zmkg.coaloperation.utils.GalleryUtils
import com.zmkg.coaloperation.utils.gone import com.zmkg.coaloperation.utils.gone
import com.zmkg.coaloperation.utils.permission.StorageUtils
import com.zmkg.coaloperation.utils.visible import com.zmkg.coaloperation.utils.visible
class GeoPointMultiAdapter(list: MutableList<GeoPointMultiItem>): class GeoPointMultiAdapter(list: MutableList<GeoPointMultiItem>) :
BaseMultiItemQuickAdapter<GeoPointMultiItem, BaseViewHolder>(list){ BaseMultiItemQuickAdapter<GeoPointMultiItem, BaseViewHolder>(list) {
init { init {
addItemType(GeoPointMultiItem.TYPE_BASE_INFO, R.layout.list_item_point_base_info) addItemType(GeoPointMultiItem.TYPE_BASE_INFO, R.layout.list_item_point_base_info)
addItemType(GeoPointMultiItem.TYPE_LOGGING_INFO, R.layout.list_item_point_logging_info) addItemType(GeoPointMultiItem.TYPE_LOGGING_INFO, R.layout.list_item_point_logging_info)
addItemType(GeoPointMultiItem.TYPE_CALCULATE_INFO, R.layout.list_item_point_calculate_info) addItemType(GeoPointMultiItem.TYPE_CALCULATE_INFO, R.layout.list_item_point_calculate_info)
addItemType(GeoPointMultiItem.TYPE_UPLOAD_IMAGE, R.layout.list_item_point_upload_image) addItemType(GeoPointMultiItem.TYPE_UPLOAD_IMAGE, R.layout.list_item_point_upload_image)
} }
override fun convert( override fun convert(
holder: BaseViewHolder, holder: BaseViewHolder,
item: GeoPointMultiItem item: GeoPointMultiItem
) { ) {
when (holder.itemViewType) { when (holder.itemViewType) {
GeoPointMultiItem.TYPE_BASE_INFO->{ GeoPointMultiItem.TYPE_BASE_INFO -> {
loadBaseInfo(holder, item) loadBaseInfo(holder, item)
} }
GeoPointMultiItem.TYPE_LOGGING_INFO->{
GeoPointMultiItem.TYPE_LOGGING_INFO -> {
loadLoggingInfo(holder, item) loadLoggingInfo(holder, item)
} }
GeoPointMultiItem.TYPE_CALCULATE_INFO->{
GeoPointMultiItem.TYPE_CALCULATE_INFO -> {
loadCalculateInfo(holder, item) loadCalculateInfo(holder, item)
} }
GeoPointMultiItem.TYPE_UPLOAD_IMAGE->{
GeoPointMultiItem.TYPE_UPLOAD_IMAGE -> {
loadUploadImage(holder, item) loadUploadImage(holder, item)
} }
} }
} }
private fun loadUploadImage(holder: BaseViewHolder,item: GeoPointMultiItem) { private fun loadUploadImage(holder: BaseViewHolder, item: GeoPointMultiItem) {
val rvImageList = holder.itemView.findViewById<RecyclerView>(R.id.rvImageList) val rvImageList = holder.itemView.findViewById<RecyclerView>(R.id.rvImageList)
val images = mutableListOf( if (item.images == null) {
GeoPointImage(), item.images = mutableListOf()
GeoPointImage(), }
GeoPointImage(), rvImageList.let { rv ->
GeoPointImage()
)
rvImageList.let {rv->
rv.layoutManager = GridLayoutManager(rv.context, 4, GridLayoutManager.VERTICAL, false) rv.layoutManager = GridLayoutManager(rv.context, 4, GridLayoutManager.VERTICAL, false)
rv.adapter = GeoPointImageAdapter(images).also { rv.adapter = GeoPointImageAdapter(item.images!!).also {
it.setOnItemClickListener { adapter, view, position -> it.setOnItemClickListener { adapter, view, position ->
if (it.data[position].isAddFlag.not()) {
} return@setOnItemClickListener
}
(context as BaseActivity).let { activity ->
StorageUtils.requestPermission(activity) {
GalleryUtils.openGallery(context as Activity, AddGeologicalPointFragment.IMAGE_REQUEST_CODE)
}
} }
} }
} }
} }
private fun loadCalculateInfo(holder: BaseViewHolder,item: GeoPointMultiItem) {} private fun loadCalculateInfo(holder: BaseViewHolder, item: GeoPointMultiItem) {}
private fun loadLoggingInfo(holder: BaseViewHolder,item: GeoPointMultiItem) { private fun loadLoggingInfo(holder: BaseViewHolder, item: GeoPointMultiItem) {
} }
private fun loadBaseInfo(holder: BaseViewHolder,item: GeoPointMultiItem) { private fun loadBaseInfo(holder: BaseViewHolder, item: GeoPointMultiItem) {
val llBaseTop = holder.itemView.findViewById<LinearLayout>(R.id.llBaseTop) val llBaseTop = holder.itemView.findViewById<LinearLayout>(R.id.llBaseTop)
val topList = mutableListOf( val topList = mutableListOf(
BaseItem(name = "点号", value = "1#"), BaseItem(name = "点号", value = ""),
BaseItem(name = "点距", value = "1#"), BaseItem(name = "点距", value = ""),
BaseItem(name = "累距", value = "78.874"), BaseItem(name = "累距", value = ""),
) )
val bottomList = mutableListOf( val bottomList = mutableListOf(
BaseItem(name = "巷高", value = "2.855"), BaseItem(name = "巷高", value = ""),
BaseItem(name = "顶板", value = "1024.491"), BaseItem(name = "顶板", value = ""),
BaseItem(name = "底板", value = "1018.491"), BaseItem(name = "底板", value = ""),
BaseItem(name = "巷顶煤厚", value = "0.15"), BaseItem(name = "巷顶煤厚", value = ""),
) )
topList.forEach { topList.forEach {
val itemBinding = ListItemPointBaseHorizontalBinding.inflate(LayoutInflater.from(context), llBaseTop, false) val itemBinding = ListItemPointBaseHorizontalBinding.inflate(
LayoutInflater.from(context),
llBaseTop,
false
)
itemBinding.run { itemBinding.run {
tvItemName.text = it.name tvItemName.text = it.name
tvItemValue.text = it.value etInputValue.setText(it.value)
} }
llBaseTop.addView(itemBinding.root) llBaseTop.addView(itemBinding.root)
} }
val llBaseBottom = holder.itemView.findViewById<LinearLayout>(R.id.llBaseBottom) val llBaseBottom = holder.itemView.findViewById<LinearLayout>(R.id.llBaseBottom)
bottomList.forEachIndexed {index, it -> bottomList.forEachIndexed { index, it ->
val itemBinding = ListItemPointBaseVerticalBinding.inflate(LayoutInflater.from(context),llBaseBottom, false) val itemBinding = ListItemPointBaseVerticalBinding.inflate(
LayoutInflater.from(context),
llBaseBottom,
false
)
itemBinding.run { itemBinding.run {
tvItemName.text = it.name tvItemName.text = it.name
tvItemValue.text = it.value etInputValue.setText(it.value)
dividerVertical.run { dividerVertical.run {
if (index == bottomList.size - 1) gone() else visible() if (index == bottomList.size - 1) gone() else visible()
} }
@@ -0,0 +1,100 @@
package com.zmkg.coaloperation.base;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import com.zmkg.coaloperation.bean.IActivityResult;
public class BaseActivity extends AppCompatActivity {
// public static final String COLOR_WHITE = "#FFFFFF";
//
// public void whiteStatusBar(boolean isFits) {
// whiteStatusBar(isFits, false);
// }
//
// public void whiteStatusBar(boolean isFits, boolean keyboardEnable) {
// hasColorStatusBar(COLOR_WHITE, isFits, true, keyboardEnable);
// }
//
// public void transparentStatusBar(boolean isFits, boolean isDarkFont) {
// ImmersionBar.with(this)
// .fitsSystemWindows(isFits)
// .statusBarDarkFont(isDarkFont)
// .transparentStatusBar()
// .navigationBarColor(R.color.white)
// .navigationBarDarkIcon(true)
// .init();
// }
//
// public void hasColorStatusBar(String statusBarColor, boolean isFits, boolean isDarkFont) {
// hasColorStatusBar(statusBarColor, isFits, isDarkFont, false);
// }
//
// public void hasColorStatusBar(String statusBarColor, boolean isFits, boolean isDarkFont, boolean keyboardEnable) {
// ImmersionBar.with(this)
// .fitsSystemWindows(isFits)
// .statusBarColor(statusBarColor)
// .statusBarDarkFont(isDarkFont)
// .keyboardEnable(keyboardEnable)
// .navigationBarColor(R.color.white)
// .navigationBarDarkIcon(true)
// .init();
// }
private final ActivityResultLauncher<Intent> activityLauncher =
registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> this.launchActivityCallback.callback(result)
);
private IActivityResult.LaunchActivityCallback launchActivityCallback;
public void launchActivityResult(Intent intent, IActivityResult.LaunchActivityCallback activityCallback) {
this.launchActivityCallback = activityCallback;
activityLauncher.launch(intent);
}
private IActivityResult.LaunchTackPictureCallback launchTackPictureCallback;
private final ActivityResultLauncher<Uri> tackPictureLauncher =
registerForActivityResult(
new ActivityResultContracts.TakePicture(),
result -> this.launchTackPictureCallback.callback(result)
);
public void launchTackPicture(Uri uri, IActivityResult.LaunchTackPictureCallback callback) {
this.launchTackPictureCallback = callback;
tackPictureLauncher.launch(uri);
}
private IActivityResult.RequestPermissionCallback launchPermissionCallback;
public void requestSinglePermissionResult(String permission, IActivityResult.RequestPermissionCallback permissionCallback) {
this.launchPermissionCallback = permissionCallback;
permissionLauncher.launch(permission);
}
private final ActivityResultLauncher<String> permissionLauncher =
registerForActivityResult(
new ActivityResultContracts.RequestPermission(),
result -> this.launchPermissionCallback.callback(result)
);
private IActivityResult.RequestMultiplePermissionsCallback launchMultiplePermissionsCallback;
public void requestMultiplePermissionsResult(String[] permissions, IActivityResult.RequestMultiplePermissionsCallback permissionCallback) {
this.launchMultiplePermissionsCallback = permissionCallback;
multiplePermissionLauncher.launch(permissions);
}
private final ActivityResultLauncher<String[]> multiplePermissionLauncher =
registerForActivityResult(
new ActivityResultContracts.RequestMultiplePermissions(),
result -> this.launchMultiplePermissionsCallback.callback(result)
);
}
@@ -55,7 +55,7 @@ import java.sql.SQLException
* 封装了ViewModel和DataBinding的Activity基类 * 封装了ViewModel和DataBinding的Activity基类
*/ */
abstract class BaseVMBActivity<VM : BaseViewModel, B : ViewDataBinding>(private val contentViewResId: Int) : abstract class BaseVMBActivity<VM : BaseViewModel, B : ViewDataBinding>(private val contentViewResId: Int) :
AppCompatActivity(), View.OnClickListener { BaseActivity(), View.OnClickListener {
var mContext: Context? = null var mContext: Context? = null
var mActivity: Activity? = null var mActivity: Activity? = null
lateinit var mViewModel: VM lateinit var mViewModel: VM
@@ -447,4 +447,5 @@ abstract class BaseVMBActivity<VM : BaseViewModel, B : ViewDataBinding>(private
return "0" return "0"
} }
} }
} }
@@ -0,0 +1,24 @@
package com.zmkg.coaloperation.bean;
import androidx.activity.result.ActivityResult;
import java.util.Map;
public interface IActivityResult {
interface LaunchActivityCallback {
void callback(ActivityResult result);
}
interface LaunchTackPictureCallback {
void callback(boolean result);
}
interface RequestPermissionCallback {
void callback(boolean result);
}
interface RequestMultiplePermissionsCallback {
void callback(Map<String,Boolean> result);
}
}
@@ -63,6 +63,7 @@ data class GeoPointMultiItem(
var pointName: String = "", var pointName: String = "",
var pointDistance: String = "", var pointDistance: String = "",
var totalDistance: String = "", var totalDistance: String = "",
var images: MutableList<GeoPointImage>?=null
): MultiItemEntity { ): MultiItemEntity {
companion object { companion object {
const val TYPE_BASE_INFO = 1 const val TYPE_BASE_INFO = 1
@@ -73,5 +74,6 @@ data class GeoPointMultiItem(
} }
data class GeoPointImage( data class GeoPointImage(
var imagePath: String = "" var imagePath: String = "",
var isAddFlag:Boolean = false
) )
@@ -0,0 +1,12 @@
package com.zmkg.coaloperation.db.entity.geologging
data class GeoLoggingFace(
var surfaceId: Long = 0,
var userId: String = "",
/**
* 工作面名称
*/
var surfaceName: String? = "",
)
@@ -0,0 +1,39 @@
package com.zmkg.coaloperation.ui.geologging
import android.os.Bundle
import android.view.View
import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.databinding.ActivityAddGeoLoggingFaceBinding
class AddGeoLoggingFaceActivity :
BaseVMBActivity<TestViewModel, ActivityAddGeoLoggingFaceBinding>(
R.layout.activity_add_geo_logging_face
) {
override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.title = "新增工作面"
mBinding.btnAddFace.setOnClickListener {
val faceName = mBinding.etWorkfaceName.text.toString().trim()
if (faceName.isBlank()) {
showToast("请输入工作面名称")
return@setOnClickListener
}
}
}
override fun initData() {
}
override fun bindEvent() {
}
override fun processClick(v: View?) {
}
}
@@ -1,19 +1,40 @@
package com.zmkg.coaloperation.ui.geologging package com.zmkg.coaloperation.ui.geologging
import android.content.Context
import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.LinearLayout
import androidx.core.graphics.toColorInt
import androidx.core.view.marginLeft
import androidx.core.view.marginStart
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.commit import androidx.fragment.app.commit
import com.zmkg.coaloperation.R import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.databinding.ActivityAddGeologicalPointBinding import com.zmkg.coaloperation.databinding.ActivityAddGeologicalPointBinding
import com.zmkg.coaloperation.utils.dp
import com.zmkg.coaloperation.utils.useShapeSetBackground
import net.lucode.hackware.magicindicator.FragmentContainerHelper
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ColorTransitionPagerTitleView
/** /**
* 地质编录点新增 * 地质编录点新增
*/ */
class AddGeologicalPointActivity : class AddGeologicalPointActivity :
BaseVMBActivity<TestViewModel, ActivityAddGeologicalPointBinding>(R.layout.activity_add_geological_point) { BaseVMBActivity<TestViewModel, ActivityAddGeologicalPointBinding>(
R.layout.activity_add_geological_point
) {
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
@@ -28,6 +49,8 @@ class AddGeologicalPointActivity :
show(fragments[0]) show(fragments[0])
setReorderingAllowed(true) setReorderingAllowed(true)
} }
initMagicIndicator()
showFragment(0)
} }
override fun initData() { override fun initData() {
@@ -42,27 +65,93 @@ class AddGeologicalPointActivity :
private val fragments = mutableListOf<Fragment>() private val fragments = mutableListOf<Fragment>()
private fun initFragments() { private fun initFragments() {
fragments.apply { titles.forEach { _ ->
add(AddGeologicalPointFragment()) fragments.add(AddGeologicalPointFragment())
add(AddGeologicalPointFragment())
add(AddGeologicalPointFragment())
add(AddGeologicalPointFragment())
add(AddGeologicalPointFragment())
} }
supportFragmentManager.commit { // supportFragmentManager.commit {
// add(R.id.fragment_container, fragments[0], "volume").hide(fragments[0]) //// add(R.id.fragment_container, fragments[0], "volume").hide(fragments[0])
replace(R.id.frgContainerView, fragments[0], "point01") // replace(R.id.frgContainerView, fragments[0], "point01")
// }
}
// private fun switchFragment(position: Int) {
// supportFragmentManager.commit {
// setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)
// fragments.forEachIndexed { index, fragment ->
// if (index == position) show(fragment) else hide(fragment)
// }
// setReorderingAllowed(true)
// }
// }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
fragments[0].onActivityResult(requestCode, resultCode, data)
}
private val titles = listOf("1#", "2#", "3#", "4#", "5#", "6#")
private fun initMagicIndicator() {
val commonNavigator = CommonNavigator(this).apply {
adapter = object : CommonNavigatorAdapter() {
override fun getCount() = titles.size
override fun getTitleView(context: Context?, index: Int): IPagerTitleView {
return ColorTransitionPagerTitleView(context).apply {
// setPadding(
// if (index == 0) 20.dp else 10.dp,
// 10.dp,
// if (index == titles.size - 1) 20.dp else 10.dp,
// 10.dp
// )
// setPadding(10.dp, 5.dp,10.dp, 5.dp)
width = 65.dp
text = titles[index]
textSize = 20f
normalColor = Color.WHITE
selectedColor = "#30E0A1".toColorInt()
useShapeSetBackground(
cornerRadius = 12.dp.toFloat(),
solidColor = "#1430E0A1".toColorInt(),
strokeColor = "#0C0D0E".toColorInt(),
strokeWidth = 8.dp
)
// showToast(parent.javaClass.simpleName)
// updateLayoutParams<LinearLayout.LayoutParams> {
// topMargin = 10.dp
// bottomMargin = 10.dp
// leftMargin = if (index == 0) 20.dp else 10.dp
// rightMargin = if (index == titles.size - 1) 20.dp else 10.dp
// }
setOnClickListener { showFragment(index) }
}
}
override fun getIndicator(context: Context?) = LinePagerIndicator(context).apply {
// mode = LinePagerIndicator.MODE_WRAP_CONTENT
// setColors("#30E0A1".toColorInt())
// lineHeight = 1.dp.toFloat()
//lineWidth = 10.dp.toFloat()
// background = GradientDrawable().also {
// it.shape = GradientDrawable.RECTANGLE
// it.cornerRadius = 5.dp.toFloat()
// it.setColor("#30E0A1".toColorInt())
//// it.setStroke(strokeWidth, strokeColor)
// }
}
}
}
mBinding.magicIndicator.let {
fragmentContainerHelper = FragmentContainerHelper(it)
it.navigator = commonNavigator
} }
} }
private fun switchFragment(position: Int) { private lateinit var fragmentContainerHelper:FragmentContainerHelper
supportFragmentManager.commit {
setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out) private fun showFragment(position: Int) {
fragments.forEachIndexed { index, fragment -> supportFragmentManager.beginTransaction()
if (index == position) show(fragment) else hide(fragment) .replace(R.id.frgContainerView, fragments[position])
} .commit()
setReorderingAllowed(true) fragmentContainerHelper.handlePageSelected(position)
}
} }
} }
@@ -1,29 +1,44 @@
package com.zmkg.coaloperation.ui.geologging package com.zmkg.coaloperation.ui.geologging
import android.app.Activity
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.zhihu.matisse.Matisse
import com.zmkg.coaloperation.R import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.adapter.GeoPointMultiAdapter import com.zmkg.coaloperation.adapter.GeoPointMultiAdapter
import com.zmkg.coaloperation.base.BaseVMBFragment import com.zmkg.coaloperation.base.BaseVMBFragment
import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.bean.GeoPointImage
import com.zmkg.coaloperation.bean.GeoPointMultiItem import com.zmkg.coaloperation.bean.GeoPointMultiItem
import com.zmkg.coaloperation.databinding.FragmentAddGeologicalPointBinding import com.zmkg.coaloperation.databinding.FragmentAddGeologicalPointBinding
class AddGeologicalPointFragment : class AddGeologicalPointFragment :
BaseVMBFragment<TestViewModel, FragmentAddGeologicalPointBinding>(R.layout.fragment_add_geological_point) { BaseVMBFragment<TestViewModel, FragmentAddGeologicalPointBinding>(R.layout.fragment_add_geological_point) {
companion object {
const val IMAGE_REQUEST_CODE = 1000
}
private val geoPointList: MutableList<GeoPointMultiItem> = mutableListOf() private val geoPointList: MutableList<GeoPointMultiItem> = mutableListOf()
private val geoPointAdapter by lazy { private val geoPointAdapter by lazy {
GeoPointMultiAdapter(geoPointList) GeoPointMultiAdapter(geoPointList)
} }
override fun initView(root: View?, savedInstanceState: Bundle?) { override fun initView(root: View?, savedInstanceState: Bundle?) {
val imageList = mutableListOf<GeoPointImage>()
imageList.add(GeoPointImage(isAddFlag = true))
geoPointList.run { geoPointList.run {
add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_BASE_INFO)) add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_BASE_INFO))
add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_LOGGING_INFO)) add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_LOGGING_INFO))
add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_CALCULATE_INFO)) add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_CALCULATE_INFO))
add(GeoPointMultiItem(itemType = GeoPointMultiItem.TYPE_UPLOAD_IMAGE)) add(
GeoPointMultiItem(
itemType = GeoPointMultiItem.TYPE_UPLOAD_IMAGE,
images = imageList
)
)
} }
mBinding.rvPointList.let { mBinding.rvPointList.let {
it.layoutManager = LinearLayoutManager(it.context) it.layoutManager = LinearLayoutManager(it.context)
@@ -39,4 +54,21 @@ class AddGeologicalPointFragment :
} }
@Deprecated("Deprecated in Java")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == IMAGE_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
val uris = Matisse.obtainResult(data) // 获取选中URI列表
val paths = Matisse.obtainPathResult(data) // 获取文件路径列表
geoPointList[3].let {
paths?.forEach { path ->
val size = it.images!!.size
it.images!!.add(size - 1, GeoPointImage(imagePath = path))
}
}
geoPointAdapter.notifyItemChanged(3)
}
}
} }
@@ -2,10 +2,13 @@ package com.zmkg.coaloperation.ui.geologging
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.zmkg.coaloperation.R import com.zmkg.coaloperation.R
import com.zmkg.coaloperation.adapter.GeoLoggingFaceAdapter
import com.zmkg.coaloperation.base.BaseVMBActivity import com.zmkg.coaloperation.base.BaseVMBActivity
import com.zmkg.coaloperation.base.viewmodel.TestViewModel import com.zmkg.coaloperation.base.viewmodel.TestViewModel
import com.zmkg.coaloperation.databinding.ActivityGeologicalBinding import com.zmkg.coaloperation.databinding.ActivityGeologicalBinding
import com.zmkg.coaloperation.db.entity.geologging.GeoLoggingFace
/** /**
* 地质编录 * 地质编录
@@ -13,11 +16,36 @@ import com.zmkg.coaloperation.databinding.ActivityGeologicalBinding
class GeologicalActivity : class GeologicalActivity :
BaseVMBActivity<TestViewModel, ActivityGeologicalBinding>(R.layout.activity_geological) { BaseVMBActivity<TestViewModel, ActivityGeologicalBinding>(R.layout.activity_geological) {
val faceList: MutableList<GeoLoggingFace> = mutableListOf()
val faceAdapter by lazy {
GeoLoggingFaceAdapter(faceList).apply {
setOnItemClickListener { adapter, view, position ->
toActivity(GeologicalPointActivity::class.java)
}
}
}
override fun initView(savedInstanceState: Bundle?) { override fun initView(savedInstanceState: Bundle?) {
mBinding.toolbarLay.title = "编录位置选择" mBinding.toolbarLay.title = "编录位置选择"
mBinding.toolbarLay.rightText = "新增工作面" mBinding.toolbarLay.rightText = "新增工作面"
mBinding.toolbarLay.titleTvRight.setOnClickListener { mBinding.toolbarLay.titleTvRight.setOnClickListener {
toActivity(GeologicalPointActivity::class.java) toActivity(AddGeoLoggingFaceActivity::class.java)
}
faceList.run {
add(GeoLoggingFace(surfaceName = "5-20304回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20305回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20306回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20307回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20308回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20309回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20310回风工作面"))
add(GeoLoggingFace(surfaceName = "5-20311回风工作面"))
}
mBinding.rvGeoLogging.let {
it.layoutManager = LinearLayoutManager(this)
it.adapter = faceAdapter
} }
} }
@@ -7,6 +7,8 @@ import android.graphics.Color
import android.graphics.drawable.GradientDrawable import android.graphics.drawable.GradientDrawable
import android.util.TypedValue import android.util.TypedValue
import android.view.View import android.view.View
import android.widget.ImageView
import com.bumptech.glide.Glide
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
@@ -126,4 +128,8 @@ fun View.useShapeSetBackground(
this.background = shape this.background = shape
} }
fun ImageView.load(any:Any) {
Glide.with(this.context).load(any).into(this)
}
@@ -0,0 +1,28 @@
package com.zmkg.coaloperation.utils
import android.app.Activity
import android.content.pm.ActivityInfo
import com.zhihu.matisse.Matisse
import com.zhihu.matisse.MimeType
import com.zhihu.matisse.R
import com.zhihu.matisse.engine.impl.GlideEngine
import com.zhihu.matisse.internal.entity.CaptureStrategy
object GalleryUtils {
fun openGallery(activity: Activity, requestCode:Int) {
Matisse.from(activity)
.choose(MimeType.ofImage(),false) // 只选图片
.capture(true)
.captureStrategy(CaptureStrategy(true, "${activity.packageName}.fileprovider", "coalImage"))
.countable(true) // 显示选中数量
.maxSelectable(9) // 最多选9张
.gridExpectedSize(120.dp)
.restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
.thumbnailScale(0.8f)
.theme(R.style.Matisse_Dracula)
.imageEngine(GlideEngine()) // 必须设置引擎
.forResult(requestCode)
}
}
@@ -0,0 +1,80 @@
package com.zmkg.coaloperation.utils.permission//package com.dheaven.mscapp.SIGFFCNFN.permission
//
//import androidx.activity.result.contract.ActivityResultContracts
//import androidx.fragment.app.Fragment
//
//class InvisibleFragment : Fragment() {
//
// private var singlePermissionAction: ((Boolean) -> Unit)? = null
// private var multiplePermissionAction: ((MutableMap<String,Boolean>) -> Unit)? = null
//
// private val singlePermissionLauncher = registerForActivityResult(
// ActivityResultContracts.RequestPermission()
// ) {
// singlePermissionAction?.invoke(it)
// }
// private val multiplePermissionLauncher = registerForActivityResult(
// ActivityResultContracts.RequestMultiplePermissions()
// ) {
// multiplePermissionAction?.invoke(it)
// }
//
// private fun requestSinglePermission(permission: String, action: (Boolean) -> Unit) {
// singlePermissionAction = action
// singlePermissionLauncher.launch(permission)
// }
// private fun requestMultiplePermission(permission: Array<String>, action: (MutableMap<String,Boolean>) -> Unit) {
// multiplePermissionAction = action
// multiplePermissionLauncher.launch(permission)
// }
// fun requestNow(
// callback: (granted: Boolean, deniedList: List<String>) -> Unit,
// args: Array<String>
// ) {
// permissionCallback = callback
//// requestPermissions(args, 1)
//
// if (args.size == 1) {
// requestSinglePermission(args[0]) {
// val deniedList = mutableListOf<String>()
// if (it.not()) {
// deniedList.add(args[0])
// }
// callback(it, deniedList)
// }
// return
// }
// requestMultiplePermission(args){
// val deniedList = mutableListOf<String>()
// it.entries.forEach { entry ->
// entry.apply {
// if (value.not()) {
// deniedList.add(key)
// }
// }
// }
// val granted = deniedList.isEmpty()
// callback(granted, deniedList)
// }
// }
//
//// override fun onRequestPermissionsResult(
//// requestCode: Int,
//// permissions: Array<String>,
//// grantResults: IntArray
//// ) {
//// super.onRequestPermissionsResult(requestCode, permissions, grantResults)
//// if (requestCode == 1) {
//// val deniedList: MutableList<String> = ArrayList()
//// for (i in grantResults.indices) {
//// if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
//// deniedList.add(permissions[i])
//// }
//// }
//// val allGranted = deniedList.isEmpty()
//// permissionCallback?.invoke(allGranted, deniedList)
//// }
//// }
//
// private var permissionCallback: ((granted: Boolean, deniedList: List<String>) -> Unit)? = null
//}
@@ -0,0 +1,51 @@
package com.dheaven.mscapp.SIGFFCNFN.permission
import com.zmkg.coaloperation.base.BaseActivity
object PermissionUtils {
// private const val TAG = "InvisibleFragment"
fun request(
activity: BaseActivity,
permissions: Array<String>,
callback: (granted: Boolean, deniedList: List<String>) -> Unit
) {
if (permissions.isEmpty()) {
return
}
// val fragmentManager = activity.supportFragmentManager
// val fragment = fragmentManager.findFragmentByTag(TAG)
// var invisibleFragment: InvisibleFragment? = null
// if (invisibleFragment == null) {
// invisibleFragment = InvisibleFragment()
// fragmentManager.beginTransaction().add(invisibleFragment, TAG).commitNow()
// } else {
// invisibleFragment = fragment as InvisibleFragment
// }
// invisibleFragment.requestNow(callback, permissions)
//单权限请求
if (permissions.size == 1) {
val permission = permissions[0]
activity.requestSinglePermissionResult(permission) {
val deniedList = mutableListOf<String>()
if (it.not()) {
deniedList.add(permission)
}
callback(it, deniedList)
}
return
}
//多权限请求
activity.requestMultiplePermissionsResult(permissions) {
val deniedList = mutableListOf<String>()
it.entries.forEach { entry ->
entry.apply {
if (value.not()) {
deniedList.add(key)
}
}
}
val granted = deniedList.isEmpty()
callback(granted, deniedList)
}
}
}
@@ -0,0 +1,31 @@
package com.zmkg.coaloperation.utils.permission
import android.Manifest
import android.content.Intent
import android.os.Build
import android.os.Environment
import android.provider.Settings
import com.zmkg.coaloperation.base.BaseActivity
object StorageUtils {
fun requestPermission(activity: BaseActivity, callback: () -> Unit) {
activity.requestSinglePermissionResult(Manifest.permission.CAMERA) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (Environment.isExternalStorageManager()) {
callback()
} else {
val intent = Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION)
// activity.startActivityForResult(intent, MANAGE_REQUEST_CODE)
activity.launchActivityResult(intent) {
callback()
}
}
} else {
activity.requestSinglePermissionResult(Manifest.permission.WRITE_EXTERNAL_STORAGE) {
callback()
}
}
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_bg"
android:orientation="vertical">
<include
android:id="@+id/toolbar_lay"
layout="@layout/lay_title_right_bar" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="20dp"
android:background="@drawable/bg_stroke_gray"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_weight="1"
android:text="工作面名称"
android:textColor="#6A6F87"
android:textSize="16sp" />
<EditText
android:id="@+id/etWorkfaceName"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_marginEnd="15dp"
android:background="@drawable/rectangle_stroke_grey_corner8"
android:hint="请输入"
android:maxLines="1"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@color/white"
android:textColorHint="#757B8C"
android:textCursorDrawable="@drawable/cursor_white"
android:textSize="14sp" />
</LinearLayout>
<Space
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<com.allen.library.shape.ShapeButton
android:id="@+id/btnAddFace"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="250dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginBottom="35dp"
android:text="确认新增"
android:textColor="@color/white"
android:textSize="14sp"
app:shapeCornersRadius="36dp"
app:shapeSolidColor="#21A69A" />
</LinearLayout>
</layout>
@@ -37,77 +37,9 @@
app:shapeCornersRadius="36dp" app:shapeCornersRadius="36dp"
app:shapeSolidColor="#21A69A" /> app:shapeSolidColor="#21A69A" />
<LinearLayout <net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/magicIndicator"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="56dp" android:layout_height="56dp"/>
android:gravity="center_vertical"
android:orientation="horizontal">
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="#30E0A1"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="@color/white"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="@color/white"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="@color/white"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="@color/white"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
<com.allen.library.shape.ShapeTextView
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginStart="5dp"
android:gravity="center"
android:text="1#"
android:textColor="@color/white"
android:textSize="20sp"
app:shapeCornersRadius="8dp"
app:shapeSolidColor="#1430E0A1" />
</LinearLayout>
</LinearLayout> </LinearLayout>
</layout> </layout>
@@ -21,6 +21,7 @@
android:id="@+id/rvGeoLogging" android:id="@+id/rvGeoLogging"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:overScrollMode="never"
tools:listitem="@layout/item_geological_list" /> tools:listitem="@layout/item_geological_list" />
</LinearLayout> </LinearLayout>
@@ -38,25 +38,25 @@
android:paddingBottom="20dp"> android:paddingBottom="20dp">
<Button <Button
android:id="@+id/btnRecord" android:id="@+id/btnStartLogging"
style="?android:attr/buttonBarButtonStyle" style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="44dp" android:layout_height="44dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_btn_save" android:background="@drawable/bg_btn_save"
android:text="查看记录" android:text="开始编录"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="14sp" />
<Button <Button
android:id="@+id/btnSubmit" android:id="@+id/btnCompleteLogging"
style="?android:attr/buttonBarButtonStyle" style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="44dp" android:layout_height="44dp"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_btn_export" android:background="@drawable/bg_btn_export"
android:text="确认提交" android:text="编录完成"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -7,83 +7,35 @@
</data> </data>
<LinearLayout <com.allen.library.shape.ShapeLinearLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="74dp"
android:orientation="vertical"> android:layout_marginHorizontal="20dp"
app:shapeCornersRadius="6dp"
android:layout_marginVertical="5dp"
android:gravity="center_vertical"
app:shapeSolidColor="#1521A69A"
app:shapeStrokeColor="#282C38"
app:shapeStrokeWidth="1dp">
<com.allen.library.shape.ShapeRelativeLayout <ImageView
android:layout_width="match_parent" android:layout_width="30dp"
android:layout_height="74dp" android:layout_height="38dp"
android:layout_marginHorizontal="20dp" android:layout_marginStart="20dp"
android:layout_marginTop="10dp" android:background="@drawable/ic_geological" />
app:shapeCornersRadius="6dp"
app:shapeSolidColor="#1521A69A"
app:shapeStrokeColor="#10514C"
app:shapeStrokeWidth="1dp">
<ImageView <TextView
android:layout_width="30dp" android:id="@+id/tvFaceName"
android:layout_height="38dp" android:layout_width="0dp"
android:layout_centerVertical="true" android:layout_weight="1"
android:layout_marginLeft="20dp" android:maxLines="1"
android:layout_marginRight="13dp" android:ellipsize="end"
android:background="@drawable/ic_geological" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="60dp"
android:textColor="@color/white"
android:textSize="14sp"
tools:text="5-20304回风工作面" />
<ImageView
android:id="@+id/expand"
android:layout_width="36dp"
android:layout_height="36dp"
android:padding="6dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginRight="13dp"
android:src="@drawable/ic_arrow_right_gray"
android:tag="0" />
</com.allen.library.shape.ShapeRelativeLayout>
<LinearLayout
android:id="@+id/record_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="5dp" android:layout_marginStart="10dp"
android:orientation="vertical" android:textColor="@color/white"
android:visibility="gone"> android:textSize="14sp"
tools:text="5-20304回风工作面" />
<androidx.recyclerview.widget.RecyclerView </com.allen.library.shape.ShapeLinearLayout>
android:id="@+id/rv_content"
android:layout_width="wrap_content"
android:layout_height="200dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:itemCount="3"
tools:listitem="@layout/item_geological_list_content" />
<com.allen.library.shape.ShapeTextView
android:id="@+id/start_record"
android:layout_width="154dp"
android:layout_height="44dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="开始记录"
android:textColor="@color/white"
app:shapeCornersRadius="30dp"
app:shapeSolidColor="#21A69A" />
</LinearLayout>
</LinearLayout>
</layout> </layout>
@@ -25,18 +25,22 @@
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
tools:text="瓦斯含量" /> tools:text="瓦斯含量" />
<TextView <EditText
android:id="@+id/tvItemValue" android:id="@+id/etInputValue"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_gravity="end" android:layout_gravity="end"
android:layout_marginEnd="15dp" android:layout_marginEnd="15dp"
android:minWidth="80dp"
android:gravity="end|center_vertical" android:gravity="end|center_vertical"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" android:hint="请输入"
tools:text="15m/s" /> android:background="@color/transparent"
android:textCursorDrawable="@drawable/cursor_white"
android:textColorHint="#757B8C"
android:textSize="16sp" />
<com.google.android.material.divider.MaterialDivider <com.google.android.material.divider.MaterialDivider
android:id="@+id/divider" android:id="@+id/divider"
@@ -38,16 +38,19 @@
android:layout_gravity="bottom" android:layout_gravity="bottom"
app:dividerColor="#20222B" /> app:dividerColor="#20222B" />
<TextView <EditText
android:id="@+id/tvItemValue" android:id="@+id/etInputValue"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center" android:gravity="center"
android:maxLines="1" android:maxLines="1"
android:background="@color/transparent"
android:textCursorDrawable="@drawable/cursor_white"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="14sp" android:hint="请输入"
tools:text="15m/s" /> android:textColorHint="#757B8C"
android:textSize="14sp" />
</LinearLayout> </LinearLayout>
@@ -62,13 +62,14 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:paddingStart="20dp"
android:paddingEnd="15dp"
android:background="@drawable/bottom_border" android:background="@drawable/bottom_border"
android:orientation="horizontal"> android:orientation="horizontal">
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginStart="20dp"
android:layout_weight="1"> android:layout_weight="1">
<TextView <TextView
@@ -93,14 +94,17 @@
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="16sp" android:textSize="16sp"
tools:text="1024.341" /> tools:text="1024.341" />
</LinearLayout> </LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_marginHorizontal="8dp"
app:dividerColor="#20222B" />
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
android:layout_weight="1"> android:layout_weight="1">
<TextView <TextView
@@ -133,8 +137,8 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginStart="20dp" android:paddingStart="20dp"
android:layout_marginEnd="15dp" android:paddingEnd="15dp"
android:background="@drawable/bottom_border" android:background="@drawable/bottom_border"
android:orientation="horizontal"> android:orientation="horizontal">
@@ -168,10 +172,16 @@
</LinearLayout> </LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_gravity="bottom"
android:layout_marginHorizontal="8dp"
app:dividerColor="#20222B" />
<LinearLayout <LinearLayout
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="50dp" android:layout_height="50dp"
android:layout_marginStart="15dp"
android:layout_weight="1"> android:layout_weight="1">
<TextView <TextView
@@ -2,12 +2,15 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <layout xmlns:android="http://schemas.android.com/apk/res/android">
<FrameLayout <FrameLayout
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/ivPointImage" android:id="@+id/ivPointImage"
android:layout_width="60dp" android:layout_width="70dp"
android:layout_height="60dp" android:layout_height="70dp"
android:layout_marginVertical="5dp"
android:layout_gravity="center"
android:scaleType="centerCrop"
android:src="@drawable/ic_add_image"/> android:src="@drawable/ic_add_image"/>
</FrameLayout> </FrameLayout>
</layout> </layout>
@@ -24,8 +24,10 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:overScrollMode="never" android:overScrollMode="never"
android:background="@drawable/bg_stroke_gray"
tools:itemCount="4" tools:itemCount="4"
app:spanCount="4" app:spanCount="4"
android:paddingVertical="5dp"
android:orientation="vertical" android:orientation="vertical"
tools:listitem="@layout/list_item_point_image" tools:listitem="@layout/list_item_point_image"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/> app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"/>
@@ -1,4 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/> <external-path name="external_files" path="."/>
<files-path name="my_files" path="." />
<cache-path name="my_cache" path="." />
<!-- <external-path name="my_external" path="." />-->
<external-files-path name="external_files" path="." />
<external-cache-path name="external_cache" path="." />
<external-path name="external_storage" path="." />
</paths> </paths>
+9 -1
View File
@@ -1,5 +1,9 @@
pluginManagement { pluginManagement {
repositories { repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
google() google()
mavenCentral() mavenCentral()
@@ -12,6 +16,10 @@ dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories { repositories {
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
google() google()
mavenCentral() mavenCentral()
@@ -19,7 +27,7 @@ dependencyResolutionManagement {
} }
} }
rootProject.name = "digitalCoalMiningPlatform" rootProject.name = "digitalCoalMiningPlatform"
include ':app' include ':app',':matisse'
//// 引入内部组件通信模块 (必要模块) //// 引入内部组件通信模块 (必要模块)
//include ':tuicore' //include ':tuicore'