"Development should be a creative experience that you enjoy, not something that is painful." - Laravel
Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts
Friday, 8 June 2012
Packaging an App with PhoneGap Build in Dreamweaver CS6
Dreamweaver CS6 รองรับการใช้งาน PhoneGap Build Service ซึ่งจะช่วย Build Web Application เป็น Hybrid Application ในแต่ละ Platform อาทิเช่น iPhone, Android, Blackberry, Symbian เป็นต้น ลองดู Video แนะนำการใช้งานได้ที่นี่ครับ http://tv.adobe.com/watch/learn-dreamweaver-cs6/packaging-and-uploading-phone-gap-apps/
Thursday, 7 June 2012
About SQLite
SQLite เป็น Open Source Database ที่ค่อนข้าง Stable และเป็นที่นิยมใช้กันในบรรดา Small Devices เจ้าต่างๆ รวมถึง Android ด้วยเช่นกัน เหตุผลหลักๆที่ SQLite เหมาะสมสำหรับใช้ในการพัฒนา Android Application ได้แก่
Monday, 4 June 2012
Resource Folder Overview
Category: Android Development
ในทุก Android Project จะมี folder ที่ชื่อว่า "res" ซึ่งภายในยังมี folder ย่อยๆลงไปอีก ซึ่งในแต่ละ folder ย่อยๆนี้จะทำหน้าที่เก็บข้อมูลที่แตกต่างกันออกไป
folder ที่มีชื่อว่า "drawable" (drawable-hdpi, drawable-mdpi และ drawable-ldpi) จะเก็บ images (ส่วนมากเป็น PNG files) และ XML (ระบุถึงสิ่งที่เราจะวาด อย่างเช่น Shapes, Gradients และ Colors)
folder ที่มีชื่อว่า "values" จะทำหน้าที่เก็บข้อมูลที่เป็นข้อคววามทั้งหมด ได้แก่ Strings (ข้อความต่างๆ อย่างเช่น Application Title, Copyright), Arrays, Colors (จะเก็บ Color Constant ต่างๆ), Dimensions (ไว้สำหรับเก็บขนาดต่างๆของ View ที่เราใช้)
folder ที่มีชื่อว่า "layout" จะทำหน้าที่เก็บ layout ในรูปแบบของ XML files ที่ระบุถึงการแสดงผลบนหน้าจอ
ในตอนที่เราสั่ง Compile Android จะอ่านข้อมูลทั้งหมดใน folder "res" และ สร้างเป็น R.java file ซึ่ง file นี้จะถูกสร้างขึ้นโดยอัตโนมัติ และจะเก็บอยู่ใน folder ที่มีชื่อว่า "gen" เราไม่ควรเข้าไปแก้ไขไฟล์ R.java นี้ เพราะว่าทุกครั้งที่เรา Compile ไฟล์นี้ก็จะถูกสร้างขึ้นมาใหม่ เราใช้ค่า ID ต่างๆใน R.java ในการอ้างถึง resource ต่างๆ อย่างเช่น textView1.setText(R.string.hello) หรือตอนที่เรากำหนด layout สำหรับ Activity เช่น this.setContentView(R.layout.main)
การแยกเก็บข้อมูลไว้ใน resource จะช่วยให้เราแก้ไขข้อมูลได้ง่าย โดยเฉพาะเวลาที่เราต้อง Localize Application ให้ support หลายภาษา เราก็เพียงเข้าไปแก้ใน strings.xml แล้วก็ compile ใหม่ ซึ่งจะช่วยประหยัดเวลาได้มาก
สำหรับการอ้างถึง resource ภายใน XML files (อย่างเช่น ใน layout file) เราจะใช้รูปแบบ @folder/object_id ยกตัวอย่างเช่น android:text="@string/hello" แทนที่จะใช้ R.string.hello
แหล่งที่มา: Creating Android Applications ของ Chris Haseman
ในทุก Android Project จะมี folder ที่ชื่อว่า "res" ซึ่งภายในยังมี folder ย่อยๆลงไปอีก ซึ่งในแต่ละ folder ย่อยๆนี้จะทำหน้าที่เก็บข้อมูลที่แตกต่างกันออกไป
folder ที่มีชื่อว่า "drawable" (drawable-hdpi, drawable-mdpi และ drawable-ldpi) จะเก็บ images (ส่วนมากเป็น PNG files) และ XML (ระบุถึงสิ่งที่เราจะวาด อย่างเช่น Shapes, Gradients และ Colors)
folder ที่มีชื่อว่า "values" จะทำหน้าที่เก็บข้อมูลที่เป็นข้อคววามทั้งหมด ได้แก่ Strings (ข้อความต่างๆ อย่างเช่น Application Title, Copyright), Arrays, Colors (จะเก็บ Color Constant ต่างๆ), Dimensions (ไว้สำหรับเก็บขนาดต่างๆของ View ที่เราใช้)
folder ที่มีชื่อว่า "layout" จะทำหน้าที่เก็บ layout ในรูปแบบของ XML files ที่ระบุถึงการแสดงผลบนหน้าจอ
ในตอนที่เราสั่ง Compile Android จะอ่านข้อมูลทั้งหมดใน folder "res" และ สร้างเป็น R.java file ซึ่ง file นี้จะถูกสร้างขึ้นโดยอัตโนมัติ และจะเก็บอยู่ใน folder ที่มีชื่อว่า "gen" เราไม่ควรเข้าไปแก้ไขไฟล์ R.java นี้ เพราะว่าทุกครั้งที่เรา Compile ไฟล์นี้ก็จะถูกสร้างขึ้นมาใหม่ เราใช้ค่า ID ต่างๆใน R.java ในการอ้างถึง resource ต่างๆ อย่างเช่น textView1.setText(R.string.hello) หรือตอนที่เรากำหนด layout สำหรับ Activity เช่น this.setContentView(R.layout.main)
การแยกเก็บข้อมูลไว้ใน resource จะช่วยให้เราแก้ไขข้อมูลได้ง่าย โดยเฉพาะเวลาที่เราต้อง Localize Application ให้ support หลายภาษา เราก็เพียงเข้าไปแก้ใน strings.xml แล้วก็ compile ใหม่ ซึ่งจะช่วยประหยัดเวลาได้มาก
สำหรับการอ้างถึง resource ภายใน XML files (อย่างเช่น ใน layout file) เราจะใช้รูปแบบ @folder/object_id ยกตัวอย่างเช่น android:text="@string/hello" แทนที่จะใช้ R.string.hello
แหล่งที่มา: Creating Android Applications ของ Chris Haseman
How can i receive intents ?
Category: Android Development
การรับ Intents แบ่งออกเป็น 2 วิธีหลักๆ ด้วยกัน ได้แก่
แหล่งที่มา: หนังสือ Creating Android Applications ของ Chris Haseman
การรับ Intents แบ่งออกเป็น 2 วิธีหลักๆ ด้วยกัน ได้แก่
- Register เพื่อรับ intent ใน Manifest File โดยใช้ <intent-filter>
- Register IntentFilter Object ในขณะ RunTime
การเลือกใช้แบบไหน ขึ้นอยู่กับความต้องการ อย่างเช่น ถ้าหากเราต้องการให้ Application อื่น สามารถเรียกใช้งาน Application เราได้ ในขณะที่ Application ของเราอาจจะไม่ได้ Run อยู่ ก็ต้องใช้แบบ Register ไว้ใน Manifest File แต่ถ้าต้องการให้เรียก Application ของเราได้เฉพาะในขณะที่ Application กำลัง Run อยู่ ก็ให้ใช้วิธี Register IntentFilter ในขณะ RunTime
แหล่งที่มา: หนังสือ Creating Android Applications ของ Chris Haseman
Speed Up Screen Rotation Transition
Category: Android Development
เมื่อ User ทำการ Rotate Device สิ่งที่เกิดขึ้นตามมาก็คือ Activity จะถูก Destroyed และ Instance ใหม่ของ Activity นั้นจะถูก Created ขึ้นมาแทน
เมื่อ User ทำการ Rotate Device สิ่งที่เกิดขึ้นตามมาก็คือ Activity จะถูก Destroyed และ Instance ใหม่ของ Activity นั้นจะถูก Created ขึ้นมาแทน
เมื่อ
Activity ถูก Destroyed และ Created ขึ้นมาใหม่
อันเป็นผลเนื่องมาจากการเปลี่ยน Configuration (อย่างเช่นในกรณีของการ
Rotate Device) การ implement onRetainNonConfigurationInstance()
จะช่วยให้เราสามารถคืนกลับ Object อะไรก็ตาม ที่เราจะสามารถเรียกใช้งานจาก
Instance ใหม่ของ Activity ที่ถูก Created ขึ้นได้ในภายหลัง โดยการเรียก
getLastNonConfigurationInstance
Save State Before Killed!
Category: Android Development
Application ที่ Run อยู่ อาจถูก Killed ตอนไหนก็ได้ ถ้าหากว่า System อยู่ในสภาวะ Low Resources แล้วเราจะรู้ได้อย่างไรว่าเมื่อไหร่ที่ Application ของเราจะถูก Killed ? แล้วเราบันทึกข้อมูลตอนไหน ?
Android เตรียม Event Handler พิเศษมาไว้สำหรับในการบันทึก State ก่อนที่ Application จะถูก Killed ไว้ให้ดังนี้
Application ที่ Run อยู่ อาจถูก Killed ตอนไหนก็ได้ ถ้าหากว่า System อยู่ในสภาวะ Low Resources แล้วเราจะรู้ได้อย่างไรว่าเมื่อไหร่ที่ Application ของเราจะถูก Killed ? แล้วเราบันทึกข้อมูลตอนไหน ?
Android เตรียม Event Handler พิเศษมาไว้สำหรับในการบันทึก State ก่อนที่ Application จะถูก Killed ไว้ให้ดังนี้
The Short Life Activity
Category: Android Development
คุณรู้หรือไม่ว่า Activity หนึ่งๆ นั้น มีชีวิตที่แสนสั้นอย่างไม่น่าเชื่อ มันจะถูก Create และ Destroy อยู่เรื่อยๆ เมื่อ Activity ถูก Destroy ข้อมูลทั้งหมดที่อยู่ใน Memory ของ Application ในช่วงเวลานั้นก็จะหายไปด้วย แต่ถ้าเราเข้าใจพฤติกรรมดังกล่าวของ Activity เราก็จะสามารถบันทึกข้อมูลก่อนที่ Activity จะถูก Destroy และเมื่อเราสั่ง start Activity ขึ้นมาใหม่ เราก็สามารถสั่งให้เริ่ม Activity ตรงจุดเดิมก่อนที่จะถูก Destroy ทำให้ Flow ของ Application มีความต่อเนื่อง ไม่สะดุด ซึ่งถ้าหากเราไม่มีการบันทึกข้อมูลดังกล่าวไว้ก่อน Destroy นั่นหมายความว่าหาก Application ของเราถูก Interrupt และถูก Destroy เวลาที่เรา start Application ใหม่อีกครั้งก็จะต้องกลับมาเริ่มใหม่ที่จุดเริ่มต้นของ Application ทุกครั้ง แล้วเหตุการณ์ไหนบ้างที่ทำให้ Activity ของเราถูก Destroy ?
คุณรู้หรือไม่ว่า Activity หนึ่งๆ นั้น มีชีวิตที่แสนสั้นอย่างไม่น่าเชื่อ มันจะถูก Create และ Destroy อยู่เรื่อยๆ เมื่อ Activity ถูก Destroy ข้อมูลทั้งหมดที่อยู่ใน Memory ของ Application ในช่วงเวลานั้นก็จะหายไปด้วย แต่ถ้าเราเข้าใจพฤติกรรมดังกล่าวของ Activity เราก็จะสามารถบันทึกข้อมูลก่อนที่ Activity จะถูก Destroy และเมื่อเราสั่ง start Activity ขึ้นมาใหม่ เราก็สามารถสั่งให้เริ่ม Activity ตรงจุดเดิมก่อนที่จะถูก Destroy ทำให้ Flow ของ Application มีความต่อเนื่อง ไม่สะดุด ซึ่งถ้าหากเราไม่มีการบันทึกข้อมูลดังกล่าวไว้ก่อน Destroy นั่นหมายความว่าหาก Application ของเราถูก Interrupt และถูก Destroy เวลาที่เรา start Application ใหม่อีกครั้งก็จะต้องกลับมาเริ่มใหม่ที่จุดเริ่มต้นของ Application ทุกครั้ง แล้วเหตุการณ์ไหนบ้างที่ทำให้ Activity ของเราถูก Destroy ?
When to use Intent ? For What ?
Category: Android Development
แหล่งที่มา : หนังสือ Creating Android Applications ของ Chris Haseman
เราใช้ Intent เมื่อเราต้องการสั่ง start Activity หรือ Service และเรายังใช้ Intent สำหรับรับ/ส่ง ข่าวสารจาก System ยกตัวอย่างเช่น เราสามารถรับ Notification เกี่ยวกับสถานะของ Battery ที่มีการเปลี่ยนแปลง โดยการ register เพื่อรับ intent (widely published intent) ถ้าหาก Activity ไหนก็ตาม มีการ register เพื่อรับ Intent ไว้ใน Manifest File (ยกตัวอย่างเช่น com.yahoo.www.ShowMe) นั่นหมายความว่า Application ใดก็ตามที่อยู่บนโทรศัพท์สามารถสั่ง start Activity ของเราได้ (ถ้าเราประกาศให้ Activity เป็นแบบ Public) โดยการใช้คำสั่ง startActivity(new Intent("com.yahoo.www.ShowMe"));
แหล่งที่มา : หนังสือ Creating Android Applications ของ Chris Haseman
Sunday, 3 June 2012
Introduction to Intents & Intent Filters
Category: Android Development
Android Application ประกอบไปด้วย Components หลักๆ 3 ตัว ได้แก่ Activities, Services และ Broadcast Receivers ซึ่งเราสามารถสั่ง Activate Components เหล่านี้ ผ่าน Messages หรือตามศัพท์ในการพัฒนา Android เรียกว่า Intents เราสามารถใช้ Intents ในการสั่ง Activate Components ดังกล่าวได้ ไม่ว่า Components ดังกล่าวจะอยู่ใน Application เดียวกัน หรือแม้กระทั่งต่าง Application กัน ก็สามารถทำได้
What is Android ?
Category: Android Development
Android คือ Mobile Operating System ที่นำระบบปฏิบัติการ Linux มาดัดแปลงเป็น Kernel หลักในการทำงาน
Android เริ่มพัฒนาขึ้นเมื่อปี 2005 ซึ่งต่อมาภายหลัง Google ก็ได้มาซื้อกิจการไป Google ต้องการให้ Android เป็นระบบปฏิบัติการแบบ Open Source และสามารถ download ไปใช้งานได้ฟรี ดังนั้น Code ของระบบปฏิบัติการ Android ส่วนใหญ่จึงปล่อยให้ download ไปใช้งานได้ฟรี ภายใต้ Open Source Apache License
Subscribe to:
Posts (Atom)
