ตัวอย่างการใช้ Picasso มาช่วยแก้ปัญหารูปภาพใน Android
วันนี้ขอนำเสนอบทความเกี่ยวกับ Image Library ครับ คือการใช้ Picasso มาช่วยแก้ปัญหาในการแสดงผลรูปภาพ ImageView กันครับ ก่อนหน้านี้ผมเคยพูดถึง Library อีกตัวไปแล้ว ที่ชื่อว่า Universal Image Loader
คุณเคยไหมที่เวลาใช้ ImageView บางครั้งโปรแกรมปิดตัว เกิดอาการ OutofMemory ต้องทำการปรับ BitmapFactory.Options
เอง นั่งคำนวณ ขนาดเอง หรือลดขนาดรูปภาพตามความเหมาะสม หรืออีกกรณีเวลาโหลดรูปภาพจากเว็บไซต์ อยากให้มัน cache ลงเครื่องด้วย โดยปกติเราจำเป็นต้องตั้งค่าและเขียนเองทั้งหมด เพื่อให้รองรับปัญหาต่างๆ วันนี้เจ้า Picasso มันจะมาแก้ปัญหาเหล่านี้ให้ท่านครับ
Picasso คืออะไร?
จากในเว็บเขียนอธิบายว่า A powerful image downloading and caching library for Android มันก็คือ Library ของแอนดรอยส์เกี่ยวกับการจัดการรูปภาพ ดาวน์โหลดรูปภาพ และมีการ cach รูปภาพให้นั่นเอง รายละเอียดเพิ่มเติม อ่านได้จากเว็บไซต์ต้นฉบับที่นี่ Picasso
เวอร์ชันในขณะเขียนบทความนี้คือ Picasso 2.3.2
ขั้นตอนการใช้งาน
มีด้วยกัน 2 ออปชั่น คือ จะโหลดเป็นไฟล์ .jar หรือว่าจะใช้ maven
-
โหลดแบบ .jar : ดาวน์โหลดโดยตรงได้จากลิงค์นี้ Download Picasso-2.3.2.jar หรือจะเข้าไปในหน้าเว็บไซต์หลัก แล้วเลือกส่วน Download ก็ได้
-
ใช้ maven
วิธีการใช้งานก็ง่ายมากๆ ตามโค๊ดนี้
with()
: โหลดด้วยContext
ของ activityload()
: parameter URI ของไฟล์, รูปใน drawable หรือว่า File ก็ได้into()
: parameter คือImageView
ที่เราต้องการจะให้มันแสดง
Options เพิ่มเติม ก็พวก
resize()
: สำหรับเปลี่ยนขนาดรูปcenterCrop()
: จัดภาพกึ่งกลางแบบ center cropplaceholder()
: สำหรับใส่รูป placeholdererror()
: ใส่รูป default กรณีที่เกิด error โหลดรูปไม่ได้transform()
: transform effectrotate()
: effect สำหรับหมุนรูปภาพ
ส่วน option อื่นๆ ก็ดูเพิ่มเติมที่เว็บไซต์หลักเลย ในส่วนรายละเอียดที่ไม่ได้เกี่ยวข้องกับ Picasso จะไม่ขอพูดถึงในบทความนี้นะครับ หากเรื่องไหนไม่เ้ข้าใจ ก็ลองค้นหาที่กล่องค้นหาของเว็บนี้ หรือ google ครับ
เริ่มต้นสร้างโปรเจ็ค
ทำการสร้างโปรเจ็คขึ้นมาใหม่ ในตัวอย่างนี้ผมใช้ Android Studio เมื่อสร้างโปรเจ็คใหม่ จะได้ไฟล์ structure ประมาณนี้
เปิด build.gradle
ขึ้นมาเพื่อทำการเพิ่ม Library เข้าไป ดังนี้
หากใครดาวน์โหลดแบบ .jar ไฟล์มา ก็ไม่ต้องเพิ่ม compile 'com.squareup.picasso:picasso:2.3.2'
แต่ว่าให้ก็อบไฟล์ .jar ไว้ในโฟลเดอร์ /libs
แทน เนื่องจากคอนฟิค fileTree ไว้แล้ว
สำหรับ Eclipse ก็ก็อบไฟล์ .jar ไว้ที่โฟลเดอร์
/libs
เช่นกัน แล้วคลิ๊กขวาเลือก Build Path -> Add to Build Path
เริ่มต้นทำแอพจริง
ตัวอย่างนี้คือจะโหลดรูปภาพจากเว็บไซต์ dribbble มาแสดงในแอพแบบ GridView เริ่มต้นผมก็ทำการสร้าง GridViewAdapter.java
ขึ้นมา และไฟล์เลเอาท์ ก็ใช้ activity_main.xml
อันเดิม ส่วน grid_item.xml
เอาไว้ปรับ ImageView ใน GridView
หากใครไม่เข้าใจ GridView ให้อ่านบทความนี้ประกอบ ตัวอย่างการใช้งาน GridView บน Android อย่างง่าย
ไฟล์ GridViewAdapter.java
เป็นแบบนี้
ส่วนไฟล์ activity_main.xml
เป็นแบบนี้
และไฟล์ grid_item.xml
เพิ่มส่วน res/values/strings.xml
ไปนิดหน่อย
ส่วนสุดท้าย ไฟล์ MainActivity.java
ไม่มีอะไรมาก แค่สร้าง GridView
และ GridViewAdapter
เท่านั้น ก็จะได้แบบนี้
ไฟล์ MainActivity.java
url ของรูปภาพผมใช้รูปภาพจากการ api ของ dribbble นะครับ
อ้อเมื่อต่อ internet ก็อย่าลืมเพิ่ม permission internet ที่ไฟล์ AndroidManifest.xml
ด้วยละ
สุดท้ายเมื่อรันโปรแกรม จะได้หน้าตาแบบนี้
ลองไปลองเล่นกันดูนะครับ
- Authors
-
Chai Phonbopit
เป็น Web Dev ในบริษัทแห่งหนึ่ง ทำงานมา 10 ปีกว่าๆ ด้วยภาษาและเทคโนโลยี เช่น JavaScript, Node.js, React, Vue และปัจจุบันกำลังสนใจในเรื่องของ Blockchain และ Crypto กำลังหัดเรียนภาษา Rust