diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 98d8b11..2051a5d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.DefenseApplication"> + diff --git a/app/src/main/java/com/example/defenseapplication/home/SetNameActivity.kt b/app/src/main/java/com/example/defenseapplication/home/SetNameActivity.kt index 2b78583..23a8440 100644 --- a/app/src/main/java/com/example/defenseapplication/home/SetNameActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/home/SetNameActivity.kt @@ -1,8 +1,10 @@ package com.example.defenseapplication.home +import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.example.defenseapplication.databinding.SetNameActivityBinding +import com.example.defenseapplication.liveVideo.LiveVideoActivity import com.gyf.immersionbar.ImmersionBar //设置名字页面 class SetNameActivity : AppCompatActivity() { @@ -20,10 +22,9 @@ class SetNameActivity : AppCompatActivity() { binding.ivBack.setOnClickListener { finish() } - binding.btnConfirm.setOnClickListener { val deviceName = binding.etName.text.toString().trim() - finish() + startActivity(Intent(this, LiveVideoActivity::class.java).apply {}) } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/StrikePositionActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/StrikePositionActivity.kt new file mode 100644 index 0000000..ada3065 --- /dev/null +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/StrikePositionActivity.kt @@ -0,0 +1,83 @@ +package com.example.defenseapplication.liveVideo + +import android.os.Bundle +import android.widget.RelativeLayout +import androidx.appcompat.app.AppCompatActivity +import com.example.defenseapplication.R +import com.example.defenseapplication.databinding.StrikePositionActivityBinding +import com.example.defenseapplication.view.CustomDialogFragment +import com.example.defenseapplication.view.showDefenseDialog +import com.gyf.immersionbar.ImmersionBar + +class StrikePositionActivity : AppCompatActivity() { + private lateinit var binding: StrikePositionActivityBinding + private lateinit var markerLayoutParams: RelativeLayout.LayoutParams + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = StrikePositionActivityBinding.inflate(layoutInflater) + setContentView(binding.root) + + ImmersionBar.with(this) + .statusBarDarkFont(true) + .titleBar(binding.topBar) + .init() + + binding.ivBack.setOnClickListener { + finish() + } + + binding.btnSubmit.setOnClickListener { + showConfirmDialog() + } + // 获取准星的 LayoutParams,并移除居中约束 + markerLayoutParams = binding.ivStrikeMarker.layoutParams as RelativeLayout.LayoutParams + markerLayoutParams.removeRule(RelativeLayout.CENTER_HORIZONTAL) + markerLayoutParams.removeRule(RelativeLayout.CENTER_VERTICAL) + binding.ivStrikeMarker.layoutParams = markerLayoutParams + + // 设置人体图片的点击监听 + binding.ivHumanBody.setOnTouchListener { _, event -> + if (event.action == android.view.MotionEvent.ACTION_DOWN) { + moveMarkerTo(event.x, event.y) + } + true + } + // 初始化准星位置:人体头部(假设在图片宽度的1/2,高度的1/5处) + binding.ivHumanBody.post { + val humanWidth = binding.ivHumanBody.width + val humanHeight = binding.ivHumanBody.height + if (humanWidth > 0 && humanHeight > 0) { + val headX = humanWidth / 2f + val headY = humanHeight / 5f + moveMarkerTo(headX, headY) + } + } + } + + private fun showConfirmDialog() { + val config = CustomDialogFragment.Config( + title = getString(R.string.tip), + message = getString(R.string.confirm_modify_strike_pos), + positiveText = getString(R.string.confirm), + negativeText = getString(R.string.cancel) + ) + showDefenseDialog(config, onPositiveClick = { + finish() + // if(){ +// ToastUtils.showSuccess(this, getString(R.string.wifi_connection_success)) +// }else{ +// ToastUtils.showError(this, getString(R.string.wifi_connection_failed)) +// } + }) + } + private fun moveMarkerTo(x: Float, y: Float) { + val marker = binding.ivStrikeMarker + // 让准星中心对准点击位置 + val left = x - marker.width / 2f + val top = y - marker.height / 2f + + markerLayoutParams.leftMargin = left.toInt() + markerLayoutParams.topMargin = top.toInt() + marker.layoutParams = markerLayoutParams + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt index 40c6a12..c38035c 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/WaterGunSettingsActivity.kt @@ -1,5 +1,6 @@ package com.example.defenseapplication.liveVideo +import android.content.Intent import android.os.Bundle import androidx.activity.enableEdgeToEdge import com.example.defenseapplication.R @@ -59,5 +60,8 @@ class WaterGunSettingsActivity : BaseActivity() { } dialog.show() } + binding.itemPosition.setOnClickListener { + startActivity(Intent(this, StrikePositionActivity::class.java)) + } } } \ No newline at end of file diff --git a/app/src/main/res/drawable/dajitubiao.png b/app/src/main/res/drawable/dajitubiao.png new file mode 100644 index 0000000..f8f7491 Binary files /dev/null and b/app/src/main/res/drawable/dajitubiao.png differ diff --git a/app/src/main/res/drawable/human_body.png b/app/src/main/res/drawable/human_body.png new file mode 100644 index 0000000..a6d8fed Binary files /dev/null and b/app/src/main/res/drawable/human_body.png differ diff --git a/app/src/main/res/layout/strike_position_activity.xml b/app/src/main/res/layout/strike_position_activity.xml new file mode 100644 index 0000000..554d5be --- /dev/null +++ b/app/src/main/res/layout/strike_position_activity.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index ce90154..d06a73f 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -191,6 +191,8 @@ 打击间隔 切换容器 打击位置 + 请点击下方人体模型,选择大致打击位置 + 确定修改为该打击位置? 容器1 容器2 容器3 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 701ed3d..67c3766 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -363,6 +363,8 @@ Strike Interval Switch Container Strike Position + Please click the human model below to select the approximate strike position + Confirm to modify to this strike position? Container 1 Container 2 Container 3