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
|
||||
|
||||
object EmojiProvider {
|
||||
fun getSmileysAndPeople(): List<String> {
|
||||
fun getFullEmojiPack(): List<String> {
|
||||
val emojis = mutableListOf<String>()
|
||||
|
||||
// 1. 經典表情區間 (Smiley Faces): 😀 到 🪟
|
||||
// 1. 經典表情與人類行為 (Smiley Faces & People)
|
||||
// 包含:😀 🤣 😘 🤠 🧑⚕️ 🏃 等
|
||||
for (i in 0x1F600..0x1F64F) {
|
||||
if (Character.isValidCodePoint(i)) {
|
||||
emojis.add(String(Character.toChars(i)))
|
||||
}
|
||||
addCodePointIfValid(i, emojis)
|
||||
}
|
||||
|
||||
// 2. 常用手勢與身體部位 (Body & Gestures): 👍 👏 等
|
||||
// 2. 身體部位、手勢與愛心 (Body, Gestures & Hearts)
|
||||
// 包含:👋 👍 👏 💪 👁️ ❤️ 💔 等
|
||||
for (i in 0x1F440..0x1F49F) {
|
||||
if (Character.isValidCodePoint(i)) {
|
||||
emojis.add(String(Character.toChars(i)))
|
||||
}
|
||||
addCodePointIfValid(i, emojis)
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
/**
|
||||
* 輔助函式:檢查該 Unicode 編碼在當前系統是否有效,若有效則轉成 String 存入
|
||||
*/
|
||||
private fun addCodePointIfValid(codePoint: Int, list: MutableList<String>) {
|
||||
if (Character.isValidCodePoint(codePoint)) {
|
||||
list.add(String(Character.toChars(codePoint)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
@ -56,8 +102,8 @@ fun MessageEmojiBar(
|
|||
onCancel: () -> Unit,
|
||||
modifier: Modifier = Modifier
|
||||
) {
|
||||
// emoji pack
|
||||
val emojiList = remember { EmojiProvider.getSmileysAndPeople() }
|
||||
// 💡 修正 1:改為呼叫你實際定義的 getFullEmojiPack()
|
||||
val emojiList = remember { EmojiProvider.getFullEmojiPack() }
|
||||
|
||||
Surface(
|
||||
modifier = modifier
|
||||
|
|
@ -85,14 +131,16 @@ fun MessageEmojiBar(
|
|||
}
|
||||
}
|
||||
|
||||
// 網格滾動區:塞了幾百個也能流暢滑動
|
||||
// 網格滾動區
|
||||
LazyVerticalGrid(
|
||||
columns = GridCells.Fixed(6),
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
horizontalArrangement = 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(
|
||||
modifier = Modifier
|
||||
.aspectRatio(1f)
|
||||
|
|
|
|||
Loading…
Reference in a new issue