ในส่วนนี้ เราจะได้เรียนรู้วิธีเพิ่มการโต้ตอบกับการออกแบบของเราผ่าน เครื่องจัดการการโต้ตอบ
เครื่องจัดการการโต้ตอบให้วิธีระบุตำแหน่งที่คอมโพเนนต์สามารถ โต้ตอบด้วย (แตะ แตะสองครั้ง ฯลฯ) เพิ่มเครื่องจัดการการโต้ตอบได้ ลงในเลเยอร์ใดก็ได้ภายในงานออกแบบ
เพิ่มตัวจัดการ
คุณเพิ่มเครื่องจัดการการโต้ตอบลงในเลเยอร์ใดก็ได้ ซึ่งนักออกแบบสามารถระบุ ว่าส่วนใดของคอมโพเนนต์เป็นแบบอินเทอร์แอกทีฟ
เลือกผลิตภัณฑ์ย่อยของรายการหลัก (เฟรม) แล้วคลิก + ข้าง พารามิเตอร์ และเลือก
tap-handler
เพื่อเพิ่มเครื่องจัดการการโต้ตอบ ช่วงเวลานี้ ช่วยให้นักพัฒนาซอฟต์แวร์เขียนโค้ดโต้ตอบเมื่อผู้ใช้แตะการ์ดทำซ้ำขั้นตอนก่อนหน้าด้วยเลเยอร์ไอคอนเมนูใน audio-item รายละเอียดปลีกย่อย การดำเนินการนี้ช่วยให้นักพัฒนาแอปแสดงเมนูเมื่อผู้ใช้แตะเมนู ไอคอน
หากเลือกเครื่องจัดการที่แตะเมนู คุณจะสังเกตเห็นว่ามีเพียง ใช้กับผลิตภัณฑ์ย่อยของ audio-item เนื่องจากตัวแปรอื่นๆ ไม่มี ไอคอนเมนู อย่างไรก็ตาม ใน NewsCard ที่แตะจะมีผลกับทั้ง 3 ประเภท รายละเอียดปลีกย่อย ซึ่งหมายความว่าคุณสามารถกำหนดตัวแฮนเดิล 1 ตัว (เป็นโค้ด) ให้ทำงานเมื่อ แตะตัวแปรใดก็ตามจาก 3 ตัวแปร นำโค้ดที่ซ้ำกันออก พารามิเตอร์ เราจะเห็นการทำงานอย่างละเอียดยิ่งขึ้นในการอัปเดตต่อไปนี้ ในส่วน Android Studio
บันทึกเวอร์ชันที่มีชื่อ
เรามาทำเครื่องหมายเวอร์ชันนี้ว่าพร้อมนำเข้าไปยังโค้ดกัน
เปิดปลั๊กอิน Figma Relay หากยังไม่ได้เปิด
คลิก แชร์กับนักพัฒนาซอฟต์แวร์ ที่มุมขวาล่างของกล่องโต้ตอบ
ในหน้าจอแชร์กับนักพัฒนาซอฟต์แวร์ ให้ป้อนชื่อและคำอธิบายสำหรับ เวอร์ชัน
ตัวอย่างชื่อ: การโต้ตอบที่เพิ่ม
ตัวอย่างคำอธิบาย: เพิ่มตัวแฮนเดิลการโต้ตอบ 2 ตัวลงในการ์ด
คลิกบันทึก
กด CMD-L บน MAC และกด Ctrl-L บน Windows เพื่อคัดลอกลิงก์คอมโพเนนต์ ไปยังคลิปบอร์ด
อัปเดตคอมโพเนนต์ใน Android Studio
เรามาอัปเดตคอมโพเนนต์ NewsCard กันดีกว่า
ใน Android Studio ให้ตรวจสอบว่าหน้าต่างเครื่องมือโปรเจ็กต์อยู่ในมุมมอง Android จากนั้นคลิกขวาที่
app/ui-packages/news_card/
และบริเวณด้านล่างของ เมนูตามบริบท ให้คลิกอัปเดตแพ็กเกจ UIคลิก เพื่อสร้างโปรเจ็กต์ ซึ่งจะใช้แพ็กเกจ UI ที่อัปเดตแล้วและ จะสร้างโค้ด Composable เวอร์ชันอัปเดต
ดู
app/java/com/example/hellonews/newscard/NewsCard.kt
แล้วดูว่า เครื่องจัดการการโต้ตอบจะเพิ่มเป็นพารามิเตอร์ใน NewsCard (onNewsCardTapped
,onMenuTapped
)// Design to select for NewsCard enum class View { HeroItem, ArticleItem, AudioItem } /** * Displays a summary of a news article. * * This composable was generated from the UI package 'news_card'. * Generated code; do not edit directly */ @Composable fun NewsCard( modifier: Modifier = Modifier, view: View = View.HeroItem, thumbnail: Painter = EmptyPainter(), headline: String = "", author: String = "", date: String = "", onNewsCardTapped: () -> Unit = {}, onMenuTapped: () -> Unit = {} ) { ...
ผสานรวมในแอป
คราวนี้ลองเพิ่มตัวจัดการลงในการโต้ตอบของเรา
ใน
app/java/com/example/hellonews/ui/home/HomeScreen.kt
ให้เลื่อนลงไปที่PostListArticleStories
ประมาณบรรทัดที่ 175... @Composable fun HomeScreen(...) @Composable private fun PostList(...) @Composable private fun PostListArticleStoriesSection(...) @Composable private fun SearchArticlesSection(...) @Composable private fun PostListArticleStories( postTop: Post, posts: List<Post>, createOnTapped: (String, String) -> () -> Unit ) {...} @Composable private fun AudioStoriesTitle(...) @Composable private fun PostListAudioStories(...) @Composable fun Dialog(...) ...
สำหรับ
postTop
ให้เพิ่มเครื่องจัดการสำหรับonNewsCardTapped
createOnTapped
เปิด กล่องโต้ตอบที่มีพารามิเตอร์เป็นชื่อและเนื้อหา@Composable private fun PostListArticleStories( postTop: Post, posts: List<Post>, createOnTapped: (String, String) -> () -> Unit ) { ... Column( horizontalAlignment = Alignment.Start, modifier = ... ) { Spacer(modifier = Modifier.size(12.dp)) NewsCard( thumbnail = painterResource(postTop.imageId), headline = postTop.title, author = postTop.metadata.author.name, date = postTop.metadata.date, onNewsCardTapped = createOnTapped("Card Tapped", postTop.title), view = View.HeroItem ) Spacer(modifier = Modifier.size(12.dp)) ... } }
เพิ่มเครื่องจัดการสำหรับ
onNewsCardTapped
ในแต่ละโพสต์@Composable private fun PostListArticleStories( postTop: Post, posts: List<Post>, createOnTapped: (String, String) -> () -> Unit ) { ... Column( horizontalAlignment = Alignment.Start, modifier = ... ) { ... posts.forEach { post -> NewsCard( thumbnail = painterResource(post.imageId), headline = post.title, author = post.metadata.author.name, date = post.metadata.date, onNewsCardTapped = createOnTapped("Card Tapped", post.title), view = View.ArticleItem ) Spacer(modifier = Modifier.size(12.dp)) } } }
ยังอยู่ใน
HomeScreen.kt
ให้เลื่อนลงไปที่PostListAudioStories
ประมาณบรรทัด 260.... @Composable fun HomeScreen(...) @Composable private fun PostList(...) @Composable private fun PostListArticleStoriesSection(...) @Composable private fun SearchArticlesSection(...) @Composable private fun PostListArticleStories(...) @Composable private fun AudioStoriesTitle(...) @Composable private fun PostListAudioStories( posts: List<Post>, createOnTapped: (String, String) -> () -> Unit ) {...} @Composable fun Dialog(...) ...
เพิ่มเครื่องจัดการสำหรับ
onNewsCardTapped
ในแต่ละโพสต์ ตั้งแต่รูปแบบเสียง มีเมนู มอบหมายcreateOnTapped
ให้onMenuTapped
@Composable private fun PostListAudioStories( posts: List<Post>, createOnTapped: (String, String) -> () -> Unit ) { Column( horizontalAlignment = ..., modifier = ... ) { posts.forEach { post -> NewsCard( thumbnail = painterResource(post.imageId), headline = post.title, author = post.metadata.author.name, date = post.metadata.date, onNewsCardTapped = createOnTapped("Card Tapped", post.title), onMenuTapped = createOnTapped("Menu Tapped", post.title), view = View.AudioItem ) Spacer(modifier = Modifier.size(12.dp)) } } }
คลิก ▶ เพื่อสร้างแอปและเรียกใช้ในโปรแกรมจำลอง
ไชโย! คุณได้เรียนรู้เกี่ยวกับฟีเจอร์ขั้นสูงของ Relay แล้ว
คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำงานกับ Relay ได้ในขั้นตอนการทำงานของ Relay นอกจากนี้ เรายังอยากทราบความคิดเห็นของคุณหากคุณมี ความคิดเห็นจากคุณ
แนะนำสำหรับคุณ
- หมายเหตุ: ข้อความลิงก์จะแสดงเมื่อ JavaScript ปิดอยู่
- พารามิเตอร์เนื้อหา
- การจัดการตัวแปรด้านการออกแบบ