Custom View แบบแก้ไข View ตัวเดียว
Custom จาก Properties เดิมที่มีอยู่แล้ว (อยู่ด้านล่าง)
CustomView แบบ extends widgets class ที่มีอยู่แล้วเช่น Button , TextView ()
CustomView แบบ extends View Class (อยู่ด้านล่าง)
Custom View แบบรวมหลายๆ View ให้เป็นตัวเดียวกัน
- CustomView ขึ้นมาใหม่โดย extends LinearLayout (อยู่ด้านล่าง)
- Custom Adapter ของ ListView
- Custom Adapter ของ GridView
- Custom Adapter ของ Recycler View : https://trymydroid.blogspot.com/2019/07/android-kotlin-json-parsing-using.html
(Advance)
ลองทำ Custom Toast จากโค้ด Kotlin , Java
ลองทำ Custom Dialog จากโค้ด Kotlin , Java
_________________________________________________
Custom จาก Properties เดิมที่มีอยู่แล้ว
Example การเปลี่ยน Icon ของ SeekBar
<SeekBar
android:id="@+id/simpleSeekBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="200"
android:progress="10"
android:theme="@style/SeekBarColor"
android:thumb="@drawable/ic_action_music_1"/>
ตรง drawble นอกจาก icon หรือรูปภาพ เราสามารถสร้างรูปทรงขึ้นมาใส่เองได้ (Drawable Resource)
Custom View ขึ้นมาใหม่โดย extends LinearLayout
- สร้างหน้าตาของ View เช่น BackButton - ImageView - NextButton ( ใน custom_image_slide.xml )
- สร้าง Class ชื่อ CustomImageSlide ที่ extends LinearLayout (Other : FrameLayout , RelativeLayout)
เพื่อ inflate : custom_image_slide.xml เข้ามา
เพื่อควบคุมว่ากดปุ่ม Next , Back ให้เปลี่ยนภาพไปมาได้
- นำ CustomImageSlide ไปใช้งานใน layout ของ activity ที่ต้องการ
เช่น
<com.example.trymydroid.CustomImageSlide
android:id="@+id/imageSlide"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
ไอเดียร์นี้มาจาก บล็อคพี่สะมะเกรียด
อ่านเต็มๆได้ที่ : http://www.akexorcist.com/2016/12/introduction-to-custom-view-part-2.html
หรืออยากเอาพอเป็นกระไส เรียกน้ำย่อยก่อนได้ที่
http://trymydroid.blogspot.com/2019/10/custom-view-layout-xml-2-textview-1.html
CustomView แบบ extends View Class
ตัวอย่างนี้ค่อนข้าง Advance เพราะจะเป็นการสร้าง View ขึ้นมาใหม่ใน onDraw
และ Advance ขึ้นไปอีกคือการทำ Touch Listener ให้ View ตัวนี้ (ไม่มีในบทความนี้)
Example :
class TestCustomViewDraw1(context: Context, attrs: AttributeSet) : View(context, attrs){
@SuppressLint("DrawAllocation")
override fun onDraw(canvas: Canvas) {
// call the super method to keep any drawing from the parent side.
super.onDraw(canvas)
val paint = Paint(Paint.ANTI_ALIAS_FLAG)
paint.color = Color.BLACK
paint.style = Paint.Style.STROKE
paint.strokeWidth = 2F
canvas.drawLine(0F, 0F ,100F ,100F, paint) // drawLine(startX, startY, stopX, stopY)
}
}
other :
canvas.drawCircle(....)
canvas.drawRect(....)
canvas.drawRoundRect(....)
ref :
http://nfcandroid.blogspot.com/2013/03/android-basic-custom-view.html
https://blog.mindorks.com/create-your-own-custom-view