feat: add camera selector interface with choice of camera modes

This commit is contained in:
xiajiid
2026-02-10 18:26:40 +08:00
parent 0df67b5b13
commit 547d8a9375
6 changed files with 154 additions and 4 deletions

View File

@@ -5,6 +5,8 @@
<!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 硬件功能声明 -->
<uses-feature android:name="android.hardware.camera" android:required="true" />
@@ -34,6 +36,14 @@
android:name=".WatermarkCameraActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".CameraActivity"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".SettingsActivity"
android:exported="false"
android:screenOrientation="portrait" />
</application>
</manifest>

View File

@@ -0,0 +1,34 @@
package com.example.app
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
class CameraSelectorActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_camera_selector)
val btnSimpleCamera = findViewById<Button>(R.id.btnSimpleCamera)
val btnWatermarkCamera = findViewById<Button>(R.id.btnWatermarkCamera)
val btnMultiCamera = findViewById<Button>(R.id.btnMultiCamera)
val btnSettings = findViewById<Button>(R.id.btnSettings)
btnSimpleCamera.setOnClickListener {
startActivity(Intent(this, SimpleCameraActivity::class.java))
}
btnWatermarkCamera.setOnClickListener {
startActivity(Intent(this, WatermarkCameraActivity::class.java))
}
btnMultiCamera.setOnClickListener {
startActivity(Intent(this, CameraActivity::class.java))
}
btnSettings.setOnClickListener {
startActivity(Intent(this, SettingsFragment::class.java))
}
}
}

View File

@@ -2,15 +2,33 @@ package com.example.app
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setContentView(R.layout.activity_camera_selector)
// 启动带水印相机Activity
startActivity(Intent(this, WatermarkCameraActivity::class.java))
finish() // 关闭MainActivity避免返回键回到空白页面
val btnSimpleCamera = findViewById<Button>(R.id.btnSimpleCamera)
val btnWatermarkCamera = findViewById<Button>(R.id.btnWatermarkCamera)
val btnMultiCamera = findViewById<Button>(R.id.btnMultiCamera)
val btnSettings = findViewById<Button>(R.id.btnSettings)
btnSimpleCamera.setOnClickListener {
startActivity(Intent(this, SimpleCameraActivity::class.java))
}
btnWatermarkCamera.setOnClickListener {
startActivity(Intent(this, WatermarkCameraActivity::class.java))
}
btnMultiCamera.setOnClickListener {
startActivity(Intent(this, CameraActivity::class.java))
}
btnSettings.setOnClickListener {
startActivity(Intent(this, SettingsActivity::class.java))
}
}
}

View File

@@ -0,0 +1,27 @@
package com.example.app
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.preference.PreferenceFragmentCompat
class SettingsActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_settings)
if (savedInstanceState == null) {
supportFragmentManager
.beginTransaction()
.replace(R.id.settings_container, SettingsFragment())
.commit()
}
// 设置ActionBar返回按钮
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
}
}

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
android:gravity="center"
tools:context=".CameraSelectorActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择相机模式"
android:textSize="24sp"
android:textStyle="bold"
android:layout_marginBottom="48dp"
android:textColor="@color/black" />
<Button
android:id="@+id/btnSimpleCamera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="简单相机"
android:textSize="18sp"
android:padding="20dp" />
<Button
android:id="@+id/btnWatermarkCamera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="水印相机"
android:textSize="18sp"
android:padding="20dp" />
<Button
android:id="@+id/btnMultiCamera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:text="多图合成相机"
android:textSize="18sp"
android:padding="20dp" />
<Button
android:id="@+id/btnSettings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="设置"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/settings_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />