วิธีใช้แฟรกเมนต์ในแอป Android ของคุณสำหรับ UI ที่ทรงพลังและไดนามิก

ผู้เขียน: John Stephens
วันที่สร้าง: 28 มกราคม 2021
วันที่อัปเดต: 19 พฤษภาคม 2024
Anonim
ปิดแอพที่ทำงานเบื้องหลังใน Android แก้ มือถือช้าลง ช่วยประหยัดแบต l หนึ่งโมบายมวกเหล็ก ครูหนึ่งสอนดี
วิดีโอ: ปิดแอพที่ทำงานเบื้องหลังใน Android แก้ มือถือช้าลง ช่วยประหยัดแบต l หนึ่งโมบายมวกเหล็ก ครูหนึ่งสอนดี

เนื้อหา


หมายเหตุ: บทความนี้ถือว่าคุณคุ้นเคยกับพื้นฐานของการพัฒนา 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

ก่อนหน้านี้วันนี้ 91mobile รายงานว่า HMD Global ส่งคำเชิญสำหรับการจัดงาน 6 มิถุนายนที่มิลานประเทศอิตาลี นั่นอาจเป็นเหตุการณ์เดียวกับที่ Nokia ได้ล้อเล่นก่อนหน้านี้ใน Twitter ในวันนี้ 91mobile ยังได้รา...

ดูเหมือนว่าแบรนด์หลักส่วนใหญ่จะมีโทรศัพท์ 5G อย่างน้อยหนึ่งรุ่นออกสู่ตลาด แต่ HMD Global เป็นข้อยกเว้นที่น่าสังเกตผู้ได้รับอนุญาตแบรนด์ Nokia ยังไม่ได้เปิดตัวโทรศัพท์ 5G ถึงแม้ว่าจะมีข่าวลือเกี่ยวกับเ...

โพสต์ใหม่