[Android Dev] :: SeekBar (แถบเลื่อน)
Widget ตัวนี้เป็นการเล่นกับ "ช่วง" ของตัวเลขนะครับ ^^~
ลักษณะก็จะเป็นแถบเลื่อนแบบนี้
เริ่มกันในส่วนของ Interface นะครับ...
ขั้นแรกบาสใส่ RelativeLayout เข้าไปก่อน >< (รู้สึกว่า บาสจะชอบ RelativeLayout เป็นพิเศษนะ)
จากนั้นก็ใส่ TextView และ SeekBar เข้าไปอย่างล่ะตัวนะ ^^
ส่วนของ TextView คงไม่อธิบายโค้ดนะครับ... พูดกันในเรื่องของ SeekBar
- บรรทัดที่ 1-6 ก็เป็นการประกาศตัวแปร ขนาดความสูง ความกว้าง การจัดวาง
คำสั่งก็เหมือนเดิมแหละครับ
- บรรทัดที่ 7 android:max เป็นการกำหนดค่าสูงสุดของ Seekbar
- บรรทัดที่ 8 android:progress เป็นการกำหนดค่าว่าเมื่อ รันโปรแกรมแล้ว seek จะอยู่ที่ตำแหน่งใด
(ค่าที่กำหนดจะต้องอยู่ในช่วง 0 - max)
ส่วนของ Interface หลัก ๆ คงหมดเท่านี้แหละครับ Property ที่เหลือไปลองเล่นกันเองนะ ^^
มาในส่วนของ Java กันบ้าง...
เปิดไฟล์ .java ที่อยู่ใน scr มาเลยครับ ^^
จากนั้นก็ import ... (บรรทัดที่ 3-6)
ประกาศตัวแปร (บรรทัดที่ 10,11)
link กับ interface ให้เรียบร้อย (บรรทัด 18,19)
ให้เราเพิ่ม Listener ที่ชื่อว่า setOnSeekBarChangeListerner ให้กับ SeekBar ของเรา
เพื่อเช็คการเลื่อนแถบของเรา... (ใส่ไว้หลังจากการ link interface)
ต่อไปก็ให้เราเขียน innerClass ขึ้นมา... (พิมพ์แค่บรรทัดแรกพอมัน auto มาก็ enter เดี๋ยวมันขึ้นทั้งหมดให้)
โดยจะมี Method หลัก ๆ 3 อันคือ ...
- onStopTrackingTouch
ถูกเรียกใช้งานเมื่อหยุดเลื่อน SeekBar
- onStartTrackingTouch
ถูกเรียกใช้งานเมื่อเริ่มเลื่อน SeekBar
- onProgressChanged
ถูกเรียกใช้งานเมื่อมีการเลื่อนแถบ SeekBar
ในที่นี้บาสเรียกใช้เฉพาะ Method onProgressChanged แต่ "ห้าม" ลบ Method อื่นทิ้งนะ ^^ ต้องเขียนทิ้งไว้
ใน onProgressChanged บาสสั่งให้ setTextSize ให้กับ TextView ^^
โดยเราจะใช้ Method
getProgess() <-- Method ที่จะ return ค่าของ SeekBar (int)
แต่ Method setTextSize() นั้นรับค่าเป็น float เท่านั้น...
ดังนั้น Method getProgress() ของ SeekBar ที่ return ค่ากลับมาเป็น int เราต้องเปลี่ยนเป็น float ซะก่อน
โปรแกรมที่ได้ ก็จะมีหน้าตาประมาณนี้ครับ
เราก็จะสามารถเลื่อน เพื่อเปลี่ยน Size ของตัวอักษรใน TextView ได้... ลองดูสิครับ...
ขอจบ Blog เพียงเท่านี้นะครับ... ^^
ลักษณะก็จะเป็นแถบเลื่อนแบบนี้
เริ่มกันในส่วนของ Interface นะครับ...
ขั้นแรกบาสใส่ RelativeLayout เข้าไปก่อน >< (รู้สึกว่า บาสจะชอบ RelativeLayout เป็นพิเศษนะ)
จากนั้นก็ใส่ TextView และ SeekBar เข้าไปอย่างล่ะตัวนะ ^^
ส่วนของ TextView คงไม่อธิบายโค้ดนะครับ... พูดกันในเรื่องของ SeekBar
- บรรทัดที่ 1-6 ก็เป็นการประกาศตัวแปร ขนาดความสูง ความกว้าง การจัดวาง
คำสั่งก็เหมือนเดิมแหละครับ
- บรรทัดที่ 7 android:max เป็นการกำหนดค่าสูงสุดของ Seekbar
- บรรทัดที่ 8 android:progress เป็นการกำหนดค่าว่าเมื่อ รันโปรแกรมแล้ว seek จะอยู่ที่ตำแหน่งใด
(ค่าที่กำหนดจะต้องอยู่ในช่วง 0 - max)
ส่วนของ Interface หลัก ๆ คงหมดเท่านี้แหละครับ Property ที่เหลือไปลองเล่นกันเองนะ ^^
มาในส่วนของ Java กันบ้าง...
เปิดไฟล์ .java ที่อยู่ใน scr มาเลยครับ ^^
จากนั้นก็ import ... (บรรทัดที่ 3-6)
ประกาศตัวแปร (บรรทัดที่ 10,11)
link กับ interface ให้เรียบร้อย (บรรทัด 18,19)
ให้เราเพิ่ม Listener ที่ชื่อว่า setOnSeekBarChangeListerner ให้กับ SeekBar ของเรา
เพื่อเช็คการเลื่อนแถบของเรา... (ใส่ไว้หลังจากการ link interface)
โดยจะมี Method หลัก ๆ 3 อันคือ ...
- onStopTrackingTouch
ถูกเรียกใช้งานเมื่อหยุดเลื่อน SeekBar
- onStartTrackingTouch
ถูกเรียกใช้งานเมื่อเริ่มเลื่อน SeekBar
- onProgressChanged
ถูกเรียกใช้งานเมื่อมีการเลื่อนแถบ SeekBar
ในที่นี้บาสเรียกใช้เฉพาะ Method onProgressChanged แต่ "ห้าม" ลบ Method อื่นทิ้งนะ ^^ ต้องเขียนทิ้งไว้
ใน onProgressChanged บาสสั่งให้ setTextSize ให้กับ TextView ^^
โดยเราจะใช้ Method
getProgess() <-- Method ที่จะ return ค่าของ SeekBar (int)
แต่ Method setTextSize() นั้นรับค่าเป็น float เท่านั้น...
ดังนั้น Method getProgress() ของ SeekBar ที่ return ค่ากลับมาเป็น int เราต้องเปลี่ยนเป็น float ซะก่อน
โปรแกรมที่ได้ ก็จะมีหน้าตาประมาณนี้ครับ
เราก็จะสามารถเลื่อน เพื่อเปลี่ยน Size ของตัวอักษรใน TextView ได้... ลองดูสิครับ...
ขอจบ Blog เพียงเท่านี้นะครับ... ^^
คุณบาสค่ะพอจะมี App ที่ค้นหาข้อมูล ที่เป็น Android อ่ะค่ะ อย่างเช่นว่า
ReplyDeleteพิมชื่อลงไป แล้ว output ชื่อโรงเรียนที่กำลังศึกษาอยู่ค่ะ อยากรู้ว่าการเขียน code search มันเขียนยังไง ขอบคุณล่วงหน้าค่ะ
การ Search สามารถใช้ Data Structure ทั่วไป เช่น Binary Search ได้เลยครับ
ReplyDeleteขึ้นอยู่กับการเก็บข้อมูลครับ ?? - - ว่าเก็บข้อมูลแบบไหน... แล้วก็ค่อยเลือกว่าจะ Search ด้วยวิธีไหนครับ ...
หรือคุณหมายถึง Search จาก Search Engine ครับ ??
ขอสอบถามเพื่มเติมน่ะค่ะ
ReplyDeleteอยากทราบว่าถ้านำไปใช้กับ mediaplayer แล้วต้องทำการโค้ดอย่างไรค่ะ ใน boolean อ่ะค่ะ
ขอบคุณมากค่ะ