เนื้อหา
- วิธีสร้างชิ้นส่วน Android เครื่องแรกของคุณ
- การเพิ่มเลย์เอาต์มุมมองและรหัส
- รหัส
- ใช้แฟรกเมนต์ที่มีอินสแตนซ์หลายรายการ
- ปิดความคิดเห็น
- การพัฒนา Android:
หมายเหตุ: บทความนี้ถือว่าคุณคุ้นเคยกับพื้นฐานของการพัฒนา Android และ Java คุณควรจะสามารถสร้างเค้าโครงพื้นฐานและใช้มุมมองได้แล้ว เมื่อคลิก และ findViewByID หากคุณเข้าใจแนวคิดเหล่านี้คุณพร้อมที่จะเรียนรู้การใช้ชิ้นส่วน!
แฟรกเมนต์เป็นคุณลักษณะที่มีประสิทธิภาพของ Android UI ที่ดีที่ให้คุณเข้าถึงการออกแบบแอพในลักษณะโมดูลาร์ มุมมองเหล่านี้เป็นมุมมองที่แตกต่างที่สามารถมีทั้งโครงร่างและที่มาพร้อมกับโค้ด Java ของตัวเอง ด้วยการแบ่ง UI ของคุณลงด้วยวิธีนี้คุณสามารถสร้างเลย์เอาต์แบบลอจิคัลที่เข้าใจได้ง่ายขึ้นสำหรับผู้ใช้ของคุณ คุณสามารถให้ข้อมูลเพิ่มเติมและการควบคุมโดยไม่ต้องออกจากกิจกรรม
ดูเพิ่มเติม: ชิ้นส่วนที่ไม่ยุ่งยาก: การใช้ส่วนประกอบสถาปัตยกรรมการนำทางของ Android
แฟรกเมนต์อนุญาตให้คุณมีตัวเลือกมากขึ้นในการออกแบบแอปของคุณและสามารถปรับปรุงประสบการณ์การใช้งานของผู้ใช้ได้อย่างมาก
ยิ่งไปกว่านั้นคือชิ้นส่วนทำหน้าที่เหมือนคลาสและวัตถุที่คุณสามารถมีได้หลายรายการ อินสแตนซ์ ของชิ้นส่วนเดียวกัน นั่นหมายความว่าคุณสามารถใช้เค้าโครงเดิมซ้ำแล้วซ้ำอีกโดยไม่ต้องเขียนโค้ดซ้ำหรือแม้แต่แสดงสองรุ่นที่แตกต่างกัน
ในระยะสั้นในขณะนี้ยัง อื่น สิ่งที่ต้องเรียนรู้เมื่อมาถึงรายการที่ต้องทำที่ไม่มีที่สิ้นสุดที่เกี่ยวข้องกับแอพ Android มันเป็นสิ่งที่สามารถให้คุณมีตัวเลือกมากขึ้นในการออกแบบแอพของคุณและปรับปรุงประสบการณ์การใช้งานของผู้ใช้อย่างมาก .
วิธีสร้างชิ้นส่วน Android เครื่องแรกของคุณ
ดังนั้นเราจะทำอย่างไรกับชิ้นส่วนที่ไม่เหมาะสมในทางอื่น
บางทีเราอาจมีรายการไฟล์ - บางทีนี่อาจเป็นแกลเลอรี่รูปภาพ - และเราต้องการแสดงคำอธิบายและให้ตัวเลือกแก่ผู้ใช้ในการลบหรือแชร์ สิ่งนั้น เราสามารถส่งพวกเขาไปที่หน้า 'คำอธิบาย' ใหม่ทุกครั้งโดยใช้กิจกรรมแยกกัน แต่ถ้าคุณใช้ชิ้นส่วนเราสามารถเก็บไว้ในหน้าเดียวซึ่งจะมีการสั่นสะเทือนน้อยลง
เปิด Android Studio และสร้างรายการรูปภาพแบบสุ่มใน activity_main.xml. ฉันกำลังใช้รูปภาพของ Dragon Ball Super เพราะฉันเป็นคนโง่และนั่นคือสิ่งที่ฉันโกหกบนพีซีของฉัน ...
ตอนนี้เรากำลังจะสร้างส่วนแรกของเรา
ในการทำเช่นนี้คุณจะต้องมุ่งไปที่ ไฟล์> ใหม่> แฟรกเมนต์ MainActivity.java จำเป็นต้องเลือกทางด้านซ้ายเมื่อคุณทำเช่นนี้และคุณจะได้เลือกส่วนที่ "ว่าง" ตอนนี้ จากนั้นคุณจะสามารถเลือกชื่อสำหรับการสร้างใหม่ซึ่งเราจะเรียกว่า "คำอธิบาย" ยกเลิกการเลือกช่องสองช่องด้านล่าง - เราไม่ต้องการสิ่งนั้นในตอนนี้
เมื่อเสร็จแล้วคุณจะพบว่าคุณไม่เพียง แต่มีไฟล์ java ใหม่ชื่อ Description.java แต่ยังมีไฟล์เลย์เอาต์ใหม่ชื่อ fragment_description.xml เช่นเดียวกับที่คุณสร้างคลาสใหม่! ซึ่งหมายความว่าคุณจะต้องวางโค้ดที่จะไปกับแฟรกเมนต์ใหม่ในไฟล์ java แยกต่างหาก
การเพิ่มเลย์เอาต์มุมมองและรหัส
ข่าวดีก็คือว่ามันง่ายมากที่เราจะเพิ่มมุมมองและเลย์เอาต์เมื่อเราใช้แฟรกเมนต์ เราจะทำเช่นนี้ตามปกติโดยแก้ไข fragment_timer.xml
มาใช้เลย์เอาต์เชิงเส้นอีกครั้งและคราวนี้เพิ่มการควบคุมและข้อความอธิบาย คุณสามารถติดอะไรที่นี่ตอนนี้
ดังนั้นตอนนี้คำถามต่อไปคือคุณจะทำให้สิ่งนี้ปรากฏจริงในแอพของคุณได้อย่างไร
คุณสามารถทำได้โดยการเพิ่มแฟรกเมนต์ให้กับกิจกรรมเช่นเดียวกับที่คุณทำมุมมองอื่น ๆ ดังนั้นมุ่งหน้าไปที่ activity_main.xml และเพิ่มมุมมองเพื่อให้ใช้พื้นที่ส่วนหนึ่งของหน้าจอ - อาจอยู่ด้านล่าง
หากคุณต้องการทำอย่างที่ฉันทำฉันใช้เลย์เอาต์แบบเส้นตรงในแนวตั้งและให้ภาพทั้งหมดมีน้ำหนักเป็น 1 และมีน้ำหนักเป็น 2 ส่วน
คุณจะสังเกตเห็นว่าภาพตัวอย่างไม่แสดงชิ้นส่วนที่แท้จริงเพียงแค่ตัวยึดสถานที่ โปรดสังเกตว่าฉันต้องใส่ชื่อส่วนใน XML เพื่อให้ Android รู้ตำแหน่งที่จะค้นหา คุณต้องมี ID สำหรับทุกส่วน
รหัส
ดังที่ได้กล่าวไปแล้วรหัสที่เราต้องใช้ในการแยกส่วนจะไปอยู่ในไฟล์จาวาของตัวเอง ในกรณีนี้นั่นคือไฟล์ Description.java
หากคุณตรวจสอบหน้านี้คุณจะเห็นว่ามีตัวสร้าง (เช่นเดียวกับในคลาสใด ๆ ที่สร้างวัตถุ) และวิธีการที่เรียกว่า onCreateView. วิธีนั้นเป็นที่ที่ XML ใช้ในการขยายมุมมองนั้นและก็เท่ากับของคุณตามปกติ onCreate วิธีการในกิจกรรมมาตรฐาน
ส่วนใหญ่คุณสามารถทำสิ่งต่าง ๆ ตามปกติที่นี่ findViewByID ทำงานได้และคุณสามารถใช้สิ่งนี้เพื่อเปลี่ยนข้อความ ฯลฯ แต่คุณจะต้องได้รับการอ้างอิงแตกต่างกันเล็กน้อย เปลี่ยนบรรทัดที่อ่าน:
กลับ inflater.inflate (อาร์เลย์เอาต์fragment_descriptionตู้คอนเทนเนอร์เท็จ);
ไปที่:
ดู v = inflater.inflate (R.layoutfragment_descriptionตู้คอนเทนเนอร์เท็จ);
จากนั้นใช้:
v.findViewByID
ตอนนี้คุณสามารถเข้าถึงมุมมองของคุณตามปกติ:
มุมมองสาธารณะ onCreateView (LayoutInflater inflater, ViewGroup container, บันเดิลที่บันทึกไว้InstanceState) {ดู v = inflater.inflate (R.layoutfragment_descriptionตู้คอนเทนเนอร์เท็จ); ปุ่ม okButton = v.findViewById (R.idตกลง) ;; ปุ่ม shareButton = v.findViewById (R.idหุ้น); okButton.setOnClickListener (ใหม่ ViewOnClickListener () {โมฆะสาธารณะ onClick (ดู v) {ToastmakeText(getActivity (), "OK!", ขนมปังปิ้งLENGTH_LONG ).แสดง(); }}); shareButton.setOnClickListener (ใหม่ ViewOnClickListener () {โมฆะสาธารณะ onClick (ดู v) {ToastmakeText(getActivity (), "Sharing ... ", ขนมปังปิ้งLENGTH_LONG ).แสดง(); }}); กลับ v; }}
ใช้แฟรกเมนต์ที่มีอินสแตนซ์หลายรายการ
คุณสามารถดูว่าการสร้าง UI และโค้ดที่มีความคล่องตัวนั้นง่ายขึ้นอย่างไรเมื่อเราใช้แฟรกเมนต์ แทนที่จะใช้เลย์เอาต์ - ภายใน - เลย์เอาต์แล้วเล่นกลการคลิกมากมายภายในไฟล์ Java เดียว ยิ่งไปกว่านั้นวิธีการแบบแยกส่วนนี้จะช่วยให้คุณสามารถใช้มุมมองนี้ในกิจกรรมต่างๆและแม้กระทั่งในเมนูและสถานที่แบบไดนามิกอื่น
แต่ส่วนที่เจ๋งจริงๆคือความจริงที่ว่าคุณสามารถมีหลายอินสแตนซ์ของชิ้นส่วนที่เหมือนกันนี้ทั้งหมดที่มีอยู่ในเวลาเดียวกัน
หากต้องการทำสิ่งนี้ง่าย: คุณเพียงแค่เพิ่มมุมมองมากกว่าหนึ่งมุมมองแล้วขยายด้วยรหัสเดียวกันที่แม่นยำ
ตอนนี้หวังว่าคุณจะเริ่มเห็นพลังของการใช้ชิ้นส่วน: ลองนึกภาพว่ามี Recycler View (รายการเลื่อน) ของภาพแต่ละอันมีรายละเอียดและการควบคุมอยู่ด้านล่าง ไม่จำเป็นต้องสร้างเค้าโครงใหม่ทั้งหมดในแต่ละครั้งและคุณสามารถซ่อนมุมมองได้จนกว่าผู้ใช้จะคลิกที่รูปภาพ!
ยิ่งไปกว่านั้นคุณยังสามารถสร้างชิ้นส่วนใหม่โดยทางโปรแกรม สิ่งที่คุณต้องมีก็คือชิ้นส่วนที่จะใช้ในเลย์เอาต์ของคุณ - เช่นเลย์เอาต์เฟรม (ซึ่งฉันจะเรียก fragmentTarget) จากนั้นคุณสามารถทำสิ่งต่อไปนี้:
แฟรกเมนต์ addFragment = คำอธิบายใหม่ (); ธุรกรรม FragmentTransaction = getSupportFragmentManager (). startTransaction (); transaction.replace (R.idfragmentTarget, เพิ่มการจัดเรียงข้อมูล); transaction.addToBackStack (null); transaction.commit ();
ตรวจสอบให้แน่ใจว่าได้นำเข้าคลาสที่จำเป็น - คุณจะได้รับพร้อมท์เมื่อใดก็ตามที่คุณพยายามใช้ชิ้นส่วนในรหัสของคุณ เพียงตรวจสอบให้แน่ใจว่าได้เลือกตัวเลือกอันดับต้น ๆ ที่ระบุว่า "v4"
ความสามารถในการเพิ่มแฟรกเมนต์โดยทางโปรแกรมมีความสำคัญเนื่องจากมันหมายความว่าเราสามารถสร้างรายการรูปภาพแบบไดนามิก (ที่เราดาวน์โหลดซึ่งตั้งอยู่ในโฟลเดอร์เฉพาะเป็นต้น) จากนั้นให้รายละเอียดปรากฏขึ้นมาทันที
ดังนั้นในตัวอย่างใหม่นี้แฟรกเมนต์ที่สองถูกเพิ่มโดยทางโปรแกรม
ในที่สุดคุณอาจพบว่าตัวเองต้องการเปลี่ยนรูปลักษณ์ของชิ้นส่วนของคุณขึ้นอยู่กับว่าพวกเขาอยู่ที่ไหน ข่าวดีก็คือคุณสามารถทำสิ่งนี้ได้อย่างง่ายดายโดยส่ง ID เป็นกลุ่มเมื่อคุณสร้างส่วนแล้วแยกค่านั้นที่ปลายอีกด้าน
ในการใช้ MainActivity.java:
Bundle Bundle = new Bundle (); bundle.putInt ("ID", 1); addedFragment.setArguments (มัด);
จากนั้นใน Description.java เพิ่ม:
int eyeD = 0; Bundle bundle = this.getArguments (); if (bundle! = null) {eyeD = bundle.getInt ("ID", 0); } switch (eyeD) {เคส 1: ...
ยกตัวอย่างเช่นคุณสามารถทำให้แอพแสดงโน้ตที่แตกต่างกันสำหรับแต่ละภาพ
ปิดความคิดเห็น
นั่นคือวิธีการใช้ชิ้นส่วนของคุณ หวังว่าคุณจะเข้าใจพื้นฐานและโพสต์นี้ทำให้คุณมีความเข้าใจมากพอที่จะทำสิ่งที่เหลือ ที่สำคัญกว่านั้นฉันหวังว่ามันจะแสดงให้คุณเห็นถึงการใช้ชิ้นส่วนที่เป็นไปได้และศักยภาพที่พวกเขาเสนอสำหรับการออกแบบแอพที่ชาญฉลาดขึ้น
หากคุณต้องการดูตัวอย่างของการแตกแฟรกเมนต์อีกครั้งให้แน่ใจว่าได้ตรวจสอบโพสต์ล่าสุดของฉันในการสร้างตัวเรียกใช้งานแบบกำหนดเอง!
การพัฒนา Android:
- วิธีสร้างแอป VR สำหรับ Android ในเวลาเพียง 7 นาที
- สร้าง Action ของคุณเองสำหรับ Google Assistant
- Root Android: ทุกสิ่งที่คุณต้องรู้!
- กายวิภาคของแอป: ความรู้เบื้องต้นเกี่ยวกับวงจรชีวิตของกิจกรรม
- Android Jetpack: ประกาศล่าสุดมีความหมายอย่างไรกับห้องสมุดสนับสนุนของ Android