dm-82
This commit is contained in:
parent
96944ca6b9
commit
620d2398af
1 changed files with 61 additions and 13 deletions
|
|
@ -29,25 +29,71 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
|
|
||||||
object EmojiProvider {
|
object EmojiProvider {
|
||||||
fun getSmileysAndPeople(): List<String> {
|
fun getFullEmojiPack(): List<String> {
|
||||||
val emojis = mutableListOf<String>()
|
val emojis = mutableListOf<String>()
|
||||||
|
|
||||||
// 1. 經典表情區間 (Smiley Faces): 😀 到 🪟
|
// 1. 經典表情與人類行為 (Smiley Faces & People)
|
||||||
|
// 包含:😀 🤣 😘 🤠 🧑⚕️ 🏃 等
|
||||||
for (i in 0x1F600..0x1F64F) {
|
for (i in 0x1F600..0x1F64F) {
|
||||||
if (Character.isValidCodePoint(i)) {
|
addCodePointIfValid(i, emojis)
|
||||||
emojis.add(String(Character.toChars(i)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 常用手勢與身體部位 (Body & Gestures): 👍 👏 等
|
// 2. 身體部位、手勢與愛心 (Body, Gestures & Hearts)
|
||||||
|
// 包含:👋 👍 👏 💪 👁️ ❤️ 💔 等
|
||||||
for (i in 0x1F440..0x1F49F) {
|
for (i in 0x1F440..0x1F49F) {
|
||||||
if (Character.isValidCodePoint(i)) {
|
addCodePointIfValid(i, emojis)
|
||||||
emojis.add(String(Character.toChars(i)))
|
}
|
||||||
}
|
|
||||||
|
// 3. 額外追加的表情與角色 (Extended Smileys & Symbols)
|
||||||
|
// 包含:🥰 🤩 🥳 🥵 🥶 🥺 等較新版表情
|
||||||
|
for (i in 0x1F900..0x1F9FF) {
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 動物與大自然 (Animals & Nature)
|
||||||
|
// 包含:🐶 🐱 🦁 🦊 🐵 🦅 🌲 🌸 🌞 等
|
||||||
|
for (i in 0x1F400..0x1F43F) { // 常見動物頭像
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
for (i in 0x1F1E6..0x1F1FF) { // 補充大自然元素
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 食物與飲料 (Food & Drink)
|
||||||
|
// 包含:🍏 🍓 🍔 🍕 🍣 🍦 🍺 ☕️ 等
|
||||||
|
for (i in 0x1F354..0x1F37F) {
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 運動、娛樂與活動 (Activities & Sports)
|
||||||
|
// 包含:⚽️ 🏀 🏈 🏆 🎮 🎤 🎬 🎨 等
|
||||||
|
for (i in 0x1F3A0..0x1F3C4) {
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 7. 旅遊、交通工具與建築 (Travel & Places)
|
||||||
|
// 包含:🚗 ✈️ 🚀 🌋 🏖️ 🏥 🇨🇳 等
|
||||||
|
for (i in 0x1F680..0x1F6FF) {
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 8. 物品、工具與雜項 (Objects & Tools)
|
||||||
|
// 包含:💻 📱 💡 🔑 🔨 📚 📦 💵 等
|
||||||
|
for (i in 0x1F4A0..0x1F4FF) {
|
||||||
|
addCodePointIfValid(i, emojis)
|
||||||
}
|
}
|
||||||
|
|
||||||
return emojis
|
return emojis
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 輔助函式:檢查該 Unicode 編碼在當前系統是否有效,若有效則轉成 String 存入
|
||||||
|
*/
|
||||||
|
private fun addCodePointIfValid(codePoint: Int, list: MutableList<String>) {
|
||||||
|
if (Character.isValidCodePoint(codePoint)) {
|
||||||
|
list.add(String(Character.toChars(codePoint)))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
|
@ -56,8 +102,8 @@ fun MessageEmojiBar(
|
||||||
onCancel: () -> Unit,
|
onCancel: () -> Unit,
|
||||||
modifier: Modifier = Modifier
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
// emoji pack
|
// 💡 修正 1:改為呼叫你實際定義的 getFullEmojiPack()
|
||||||
val emojiList = remember { EmojiProvider.getSmileysAndPeople() }
|
val emojiList = remember { EmojiProvider.getFullEmojiPack() }
|
||||||
|
|
||||||
Surface(
|
Surface(
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
|
|
@ -85,14 +131,16 @@ fun MessageEmojiBar(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 網格滾動區:塞了幾百個也能流暢滑動
|
// 網格滾動區
|
||||||
LazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
columns = GridCells.Fixed(6),
|
columns = GridCells.Fixed(6),
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
verticalArrangement = Arrangement.spacedBy(12.dp)
|
verticalArrangement = Arrangement.spacedBy(12.dp)
|
||||||
) {
|
) {
|
||||||
items(emojiList) { emoji ->
|
// 💡 修正 2:明確指定 emoji 的型態為 String
|
||||||
|
// 這樣可以強迫編譯器去認對應的 items 擴充函式,徹底解決 Text(text = emoji) 報 Int 的錯誤
|
||||||
|
items(emojiList) { emoji: String ->
|
||||||
Box(
|
Box(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.aspectRatio(1f)
|
.aspectRatio(1f)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue