增加配置背景图的按钮,修订以前的错误

This commit is contained in:
2024-09-29 21:56:55 +08:00
parent 419adf4108
commit f3ffbde4a6
4 changed files with 54 additions and 21 deletions

View File

@@ -19,6 +19,7 @@ android {
vectorDrawables {
useSupportLibrary = true
}
}
buildTypes {

View File

@@ -33,6 +33,13 @@ import org.json.JSONObject
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.drawable.BitmapDrawable
import android.net.Uri
import android.widget.LinearLayout
import java.io.InputStream
// 定义请求体数据类
data class ChatRequest(
val model: String,
@@ -88,7 +95,6 @@ fun extractLabels(responseBody: String): List<String>? {
}
class MainActivity : AppCompatActivity() {
private lateinit var inputEditText: EditText
private lateinit var configButton: Button
private lateinit var submitToZhiPuAIButton: Button
@@ -351,6 +357,23 @@ class MainActivity : AppCompatActivity() {
tabLayout.addTab(this)
}
}
// 创建背景图
val mainLinearLayout: LinearLayout = findViewById(R.id.mainLinearLayout)
// 从Intent中获取Uri
val selectedImageUri: Uri? = intent.data
selectedImageUri?.let { uri ->
val bitmap = getBitmapFromUri(uri)
bitmap?.let {
mainLinearLayout.background = BitmapDrawable(resources, it)
}
}
}
private fun getBitmapFromUri(uri: Uri): Bitmap? {
val inputStream: InputStream? = contentResolver.openInputStream(uri)
return BitmapFactory.decodeStream(inputStream)
}
@SuppressLint("SetTextI18n")

View File

@@ -11,14 +11,15 @@ import androidx.appcompat.app.AppCompatActivity
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import android.app.Activity
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri
import android.provider.MediaStore
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import android.graphics.drawable.BitmapDrawable
import java.io.InputStream
import android.widget.RelativeLayout
class SecondActivity : AppCompatActivity() {
private lateinit var etApiButtonName: EditText
@@ -29,9 +30,13 @@ class SecondActivity : AppCompatActivity() {
private lateinit var etApiModel: EditText
private lateinit var btnSave: Button
private lateinit var llConfigList: LinearLayout
private lateinit var backgroundLayout: RelativeLayout
private var configs = mutableListOf<APIConfig>()
private var editingId: Long? = null
private lateinit var imagePickerLauncher: ActivityResultLauncher<Intent>
companion object {
private const val REQUEST_CODE_PICK_IMAGE = 1000
}
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(androidx.appcompat.R.style.Theme_AppCompat)
@@ -54,27 +59,30 @@ class SecondActivity : AppCompatActivity() {
}
}
backgroundLayout = findViewById(R.id.mainLinearLayout)
// 创建背景图
setContentView(R.layout.activity_second)
val btnSelectImage: Button = findViewById(R.id.chooseButton)
val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? ->
uri?.let {
try {
val inputStream: InputStream = contentResolver.openInputStream(uri)!!
val bitmap: Bitmap = BitmapFactory.decodeStream(inputStream)
backgroundLayout.background = BitmapDrawable(resources, bitmap)
} catch (e: Exception) {
e.printStackTrace()
imagePickerLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
if (result.resultCode == Activity.RESULT_OK && result.data != null) {
val selectedImageUri: Uri? = result.data?.data
selectedImageUri?.let { uri ->
val bitmap = getBitmapFromUri(uri)
// 使用bitmap更新背景或其他操作
}
}
}
btnSelectImage.setOnClickListener {
getContent.launch("image/*")
val chooseButton: Button = findViewById(R.id.chooseButton)
chooseButton.setOnClickListener {
val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
intent.type = "image/*"
imagePickerLauncher.launch(intent)
}
}
private fun getBitmapFromUri(uri: Uri): Bitmap? {
val inputStream: InputStream? = contentResolver.openInputStream(uri)
return BitmapFactory.decodeStream(inputStream)
}
private fun initViews() {
etApiButtonName = findViewById(R.id.etApiButtonName)

View File

@@ -101,9 +101,10 @@
<Button
android:id="@+id/chooseButton"
android:text="上传图片"
android:text="选择图片"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:layout_centerInParent="true"/>
</LinearLayout>