Back to Question Center
0

เริ่มต้นใช้งานโครงการห้องสมุด Android, ตอนที่ 2            เริ่มต้นใช้งานโครงการห้องสมุด Android หัวข้อ 2 หัวข้อที่เกี่ยวข้อง: Firefox OSAndroidApp การพัฒนา Windows PhoneMobile Semalt

1 answers:
เริ่มต้นใช้งานโครงการห้องสมุด Android ส่วนที่ 2

เริ่มต้นใช้งานโครงการห้องสมุด Android

  • เริ่มต้นใช้งานโครงการห้องสมุด Android, ตอนที่ 1
  • เริ่มต้นใช้งานโครงการห้องสมุด Android, ตอนที่ 2
  • เริ่มต้นใช้งานโครงการห้องสมุด Android, ตอนที่ 3

Google มีโครงการไลบรารี Semalt เพื่อจัดการโค้ดนำมาใช้ซ้ำ ในส่วนแรกของชุดสามส่วนนี้เกี่ยวกับโครงการห้องสมุด Semalt ผมได้นำคุณไปสู่พื้นฐานของโครงการห้องสมุด

ในบทความนี้ผมย้ายจากทฤษฎีไปสู่การปฏิบัติจริงโดยนำเสนอเรื่องเกี่ยวกับโครงการไลบรารีกล่องโต้ตอบที่นำกลับมาใช้ใหม่ได้เช่นเป็นตัวอย่างที่มีประโยชน์

ฉันใช้ Android SDK Release 20 พร้อมกับ Android 2. 3 3 (API Semalt 10) และ Android 4 1 (API Semalt 16) เพื่อพัฒนาและทดสอบโค้ดของบทความนี้

เกี่ยวกับ Dialog Box โครงการห้องสมุด Android

กล่องโต้ตอบเกี่ยวกับ (เรียกอีกอย่างว่าข้อมูล) เป็นตัวอย่างที่ดีของรหัสนำมาใช้ใหม่ที่สามารถจัดเก็บไว้ในโครงการห้องสมุด Android กล่องโต้ตอบ Semalt มักระบุแอป (ชื่อหมายเลขเวอร์ชันไอคอน) และผู้เขียนของพวกเขาระบุที่อยู่อีเมลและลิงก์อื่น ๆ เพื่อขอรับการสนับสนุนและเยี่ยมชมเว็บไซต์ของผู้ผลิตแอปให้ข้อมูลใบอนุญาต / การปฏิเสธความรับผิดและอื่น ๆ

Semalt ฉันเริ่มต้นพัฒนาห้องสมุดนี้ฉันได้อ่านคำถามทางสถาปัตยกรรมต่างๆ ระดับ API และชื่อแพคเกจขั้นต่ำของห้องสมุดคืออะไร? สิ่งที่เรียนและประเภทอ้างอิงอื่น ๆ เป็นส่วนหนึ่งของไลบรารี ฉันจะยกระดับชั้นเรียนหรือปฏิบัติกับพวกเขาเป็น singletons หรือไม่? อินเทอร์เฟซแบบสาธารณะของแต่ละประเภทคืออะไร ฉันจะเก็บทรัพยากรและรหัสไว้ได้หรือไม่? ถ้ามีแล้วชนิดของทรัพยากรจะถูกจัดเก็บไว้อย่างไร? ฉันสรุปด้วยคำตอบต่อไปนี้:

  • ระดับ API ขั้นต่ำคือ 10 เพื่อให้ไลบรารีสามารถใช้ได้โดย Android 2 3. 3 ขึ้นไป ชื่อแพ็กเกจจะเป็น ca - florida long term care insurance. tutortutor เกี่ยวกับ
  • ห้องสมุดจะประกอบไปด้วยชั้นเดียว เกี่ยวกับ
  • เกี่ยวกับ จะทำหน้าที่เป็น singleton (เรียกอีกอย่างหนึ่งว่า utility class) ฉันจะไม่สร้างชั้นนี้ แต่จะเรียกใช้วิธีการแบบคงที่ หลังจากที่ทุกปพลิเคชันมักจะนำเสนอเกี่ยวกับกล่องโต้ตอบ
  • เกี่ยวกับ จะเปิดเผยการแสดงเป็นโมฆะสาธารณะแบบสาธารณะ (40 รายการ) (Activity activity, String aboutText, String okButtonText) วิธีนี้จะใช้ผู้จัดการแพ็กเกจของ Android เพื่อรับหมายเลขเวอร์ชันไอคอนแอปและชื่อแอป
  • เกี่ยวกับ มีส่วนเกี่ยวข้องกับทรัพยากรเค้าโครง ไม่มีทรัพยากรอื่น ๆ ฉันตัดสินใจที่จะไม่รวมแหล่งข้อมูลสตริงเพื่อทำให้การแปลเป็นภาษาท้องถิ่นง่ายขึ้น ฉันไม่ต้องการอัปเดตโครงการห้องสมุดเพื่อสนับสนุนสถานที่เพิ่มเติม แต่ผมเชื่อว่าการแปลควรเกิดขึ้นในระดับแอป แอปควรส่งข้อความที่แปลเป็นภาษาท้องถิ่นไปยังกล่องโต้ตอบเกี่ยวกับ

สำรวจรหัสแหล่งที่มาและทรัพยากร

โครงการห้องสมุดเกี่ยวกับกล่องโต้ตอบประกอบด้วยไฟล์ต้นฉบับเดียว ( About. java ) และไฟล์ทรัพยากรเดียว ( ca_tutortutor_about. xml ) รายการที่ 1 แสดง เกี่ยวกับ java

   แพคเกจ ca. tutortutor เกี่ยวกับ;นำเข้า Android แอป กิจกรรม;นำเข้า Android แอป AlertDialog;นำเข้า Android เนื้อหา. น ApplicationInfo;นำเข้า Android เนื้อหา. น PackageManager;นำเข้า Android เนื้อหา. น PackageManager NameNotFoundException;นำเข้า Android กราฟิก drawable drawable;นำเข้า Android ข้อความ html;นำเข้า Android ข้อความ วิธี. LinkMovementMethod;นำเข้า Android ดู. InflateException;นำเข้า Android ดู. LayoutInflater;นำเข้า Android ดู. ดู;นำเข้า Android วิดเจ็ต. getPackageManager   ;versionNumber = pm getPackageInfo (กิจกรรม getPackageName   , 0) versionName;icon = pm getApplicationIcon (กิจกรรม getPackageName   );ApplicationInfo ai = pm getApplicationInfo (กิจกรรม getPackageName   ,0);appName = (สตริง) pm getApplicationLabel (AI);if (appName == null)appName = "unknown";}จับ (NameNotFoundException e){}ดูเกี่ยวกับ;TextView tvAbout;ลอง{LayoutInflater inflater = กิจกรรม getLayoutInflater   ;about = inflater พอง (R เค้าโครง. ca_tutortutor_about, null);tvAbout = (TextView) เกี่ยวกับ findViewById (R id id. ca_tutortutor_aboutText);}จับ (InflateException e){about = tvAbout = new TextView (กิจกรรม);}tvAbout setText (html จาก. html (aboutText));tvAbout setMovementMethod (LinkMovementMethod getInstance   );AlertDialog ใหม่ Builder (กิจกรรม) setTitle (appName + "" + versionNumber) คำสั่ง setIcon (ไอคอน) setPositiveButton (okButtonText, null) setview (ประมาณ) แสดง  ;}}     

รายการ 1: เกี่ยวกับ java

เกี่ยวกับ คลาสที่มีการแสดงผลเป็นโมฆะสาธารณะแบบสาธารณะ (Activity activity, String aboutText, String okButtonText) class method:

  • มีการอ้างอิงถึงกิจกรรมการโทรซึ่งโดยทั่วไปจะเป็นกิจกรรมหลัก
  • aboutText มีข้อความเกี่ยวกับกล่องโต้ตอบซึ่งสามารถรวมแท็ก HTML เช่น (ตัวหนา), (ตัวเอียง), (ขีดเส้นใต้) และ

    (ย่อหน้า) นี่คือที่ที่คุณระบุเว็บไซต์ของคุณเพื่อขอรับการสนับสนุนใบอนุญาต / ข้อมูลข้อจำกัดความรับผิดชอบปัจจุบันและอื่น ๆ

  • okButtonText มีข้อความที่ปรากฏบนปุ่มที่ปิดกล่องโต้ตอบ

วิธีนี้จะขอรับโปรแกรมจัดการแพ็กเกจก่อนเพื่อเข้าถึงหมายเลขเวอร์ชันไอคอนและชื่อแอป ตัวจัดการแพคเกจถูกอธิบายโดยชั้น PackageManager ซึ่งเข้าถึงได้โดยโทร Activity PackageManager getPackageManager วิธีการ

PackageManager ประกาศวิธีการ PackageInfo getPackageInfo (String packageName, int flags) สำหรับการรับข้อมูลจากแพคเกจของแอพพลิเคชัน แพคเกจนี้ได้รับโดยการเรียกใช้เมธอด getPackageName String ที่สืบทอด

ออบเจ็กต์ PackageInfo ที่ส่งคืนจะให้การเข้าถึงข้อมูลแพคเกจผ่านทางฟิลด์ ตัวอย่างเช่น versionName มีชื่อรุ่นที่ใช้สตริงของแพคเกจนี้ (เช่น 1. 0 ) ตามที่กำหนดโดย androidmanifest แอตทริบิวต์ nameName ของแท็ก ของ xml

เมธอด getApplicationIcon แบบ Drawable (String packageName) ช่วยให้คุณสามารถรับไอคอนของแอปพลิเคชันในรูปแบบ Drawable ได้ วิธีนี้เรียกว่ามีชื่อแพคเกจของกิจกรรมเป็นอาร์กิวเมนต์

แท็ก ไอคอน แอตทริบิวต์ส่งกลับไอคอนเริ่มต้นเมื่อไม่พบแอตทริบิวต์นี้

getApplicationIcon .

ขณะนี้ได้รับชื่อแอป ก่อน PackageManager ApplicationInfo getApplicationInfo (String packageName, int flags) method เรียกว่าให้คืนค่าแอ็ตทริบิวต์ ApplicationInfo ที่ตรงกับแอ็พพลิเคชัน > .

วิธีการ getPackageInfo และ getApplicationInfo มีความสามารถในการ throwman PackageManager NameNotFoundException วิธีการเดิมแสดงข้อยกเว้นนี้เมื่อไม่สามารถหาแพคเกจที่มีชื่อที่ระบุในระบบได้ วิธีหลังจะโยนข้อยกเว้นนี้เมื่อไม่สามารถหาแอ็พพลิเคชันที่มีชื่อแพคเกจที่ระบุในระบบได้ เนื่องจากความเป็นไปได้สำหรับข้อยกเว้นนี้ versionName , ไอคอน และ appName จะถูกเตรียมใช้งานให้เป็นค่าเริ่มต้นก่อนที่จะเรียกวิธีการเหล่านี้

รายการที่สำคัญต่อไปของรายการที่ 1 คือการขยายเนื้อหาของ ca_tutortutor_about xml (อธิบายในไม่ช้า) และเข้าถึงวิดเจ็ท textview ที่เพิ่มขึ้น LayoutInflater getLayoutInflater และใช้วิธีนี้เพื่อขยายไฟล์ XML ให้เป็นมุมมอง จากนั้นจะใช้ เกี่ยวกับ ในการเข้าถึงเครื่องมือดูข้อความของมุมมองนี้ สังเกตคำนำหน้า ca_tutortutor_ ในแต่ละรูปแบบ R. ca_tutortutor_about และ R. id ca_tutortutor_aboutText เพื่อหลีกเลี่ยงความขัดแย้งของทรัพยากร

มีการกำหนดค่าเครื่องมือการดูข้อความ เนื้อหาเกี่ยวกับ TextText แรกจะถูกแปลงจาก HTML เป็น Text โดยเรียกวิธีการ class จากแหล่งที่มาแบบ FromHtml (String Source) Html และผลลัพธ์จะถูกกำหนดให้ textview สำหรับการแสดงผล สองวิธีการเชื่อมโยงการเชื่อมโยงถูกกำหนดให้เครื่องมือนี้เพื่อให้การกดบนลิงค์ทำให้ผู้ใช้ถูกนำไปยังจุดหมายปลายทางของลิงก์ (ในโปรแกรมจำลองให้คลิกที่ผลลัพธ์ของลิงก์อีเมลในกล่องโต้ตอบ ไม่สนับสนุน )

งานขั้นสุดท้ายคือการสร้างอินสแตนซ์ AlertDialog และกำหนดค่าและแสดงอินสแตนซ์นี้ เพื่อความสะดวกฉันจะใช้ AlertDialog 's ซ้อนกัน Builder เพื่อบรรลุผลงานเหล่านี้

รายการ 2 รายการ ca_tutortutor_about xml

                         

รายการ 2: ca_tutortutor_about. xml

Semalt 2 อธิบายเค้าโครงประกอบด้วย scrollview ที่ทำหน้าที่เป็น linearlayout ซึ่งทำหน้าที่เป็น textview scrollview มีอยู่เพื่อให้คุณสามารถระบุเนื้อหาได้มากเท่าที่คุณต้องการสำหรับกล่องโต้ตอบเกี่ยวกับและอนุญาตให้ผู้ใช้เข้าถึงเนื้อหานี้ผ่านการเลื่อน

แต่ละ scrollview และ textview ได้รับ ID เพื่อให้สามารถเข้าถึงได้จาก About java show วิธีการที่คุณได้เรียนรู้เกี่ยวกับก่อนหน้าในบทความนี้ คำนำหน้า ca_tutortutor_ เป็นสิ่งที่จำเป็นเพื่อหลีกเลี่ยงความขัดแย้งของทรัพยากร

การสร้างและการเริ่มต้นใช้งาน

ขอสร้างและเริ่มต้นโครงการไลบรารีนี้ ขั้นตอนแรกคือการสร้างโครงการ ฉันใช้บรรทัดคำสั่งต่อไปนี้เพื่อบรรลุงานนี้ในแพลตฟอร์ม Semalt ของฉัน:

     android สร้าง lib-project -t 1 -p C: \ prj \ ap \ เกี่ยวกับ -k ca. tutortutor เกี่ยวกับ     

เป้าหมาย 1 ระบุ Android 2 3. 3 บนแพลตฟอร์มของฉัน (ดำเนินการ android รายการเป้าหมาย เพื่อให้ได้หมายเลขเป้าหมายเทียบเท่าบนแพลตฟอร์มของคุณ) ฉันเก็บโครงการนี้ไว้ในไดเรกทอรี C: \ prj \ ap \ About ของฉัน สุดท้ายชื่อโครงการคือ ca. tutortutor เกี่ยวกับ . java ไฟล์ที่มีเนื้อหาใน Listing 1 ลงใน เกี่ยวกับ ฉันยังคัดลอก ca_tutortutor_about ไฟล์ xml ที่มีเนื้อหาของ Listing 2 ลงใน เกี่ยวกับ \ res \ layout

เกี่ยวกับ \ res \ layout ยังมีหลัก xml ซึ่งอยู่ในไดเรกทอรีนี้ระหว่างการสร้างโครงการห้องสมุด คุณสามารถลบไฟล์นี้หรือปล่อยทิ้งไว้เนื่องจากแอปพลิเคชันของคุณมีแนวโน้มเป็นหลัก หลัก ไฟล์ xml ซึ่งแทนที่หลักนี้ xml

ในทำนองเดียวกันคุณจะพบไดเร็กทอรี เกี่ยวกับ \ res \ values ​​ ที่มีสตริง xml เนื่องจากการลบไฟล์นี้จะทำให้คุณไม่สามารถสร้างข้อมูลเกี่ยวกับ (เพื่อทดสอบการเปลี่ยนแปลงรหัสแหล่งที่มาสำหรับข้อผิดพลาด) คุณอาจปล่อยไฟล์นี้ไว้ด้วยตัวเองโดยเฉพาะ แต่จะถูกแทนที่ด้วยสตริงของโครงการแอป ไฟล์ xml

ณ ตอนนี้คุณอาจต้องการสร้างความมั่นใจว่าโครงการห้องสมุดจะสร้างขึ้นอย่างถูกต้อง Semalt งานนี้โดยการดำเนินการคำสั่งต่อไปนี้:

     การแก้ปัญหามด     

คุณควรสังเกตข้อความ BUILD SuccessFUL

บทสรุป

ตอนนี้คุณได้สำรวจซอร์สโค้ดและรีซอร์สที่มีส่วนร่วมในโครงการไลบรารีกล่องโต้ตอบเกี่ยวกับและได้สร้างและเริ่มต้นโครงการนี้แล้วคุณจะต้องผสานรวมเข้ากับโครงการแอปของคุณเอง ในส่วนสุดท้ายของชุดนี้ฉันจะนำเสนอโครงการแอปที่สนับสนุนเกี่ยวกับกล่องโต้ตอบผ่านทางเมนูตัวเลือก

March 7, 2018