แหล่งข้อมูลที่ถอนออกได้คือแนวคิดทั่วไปของกราฟิกที่สามารถวาดลงบนหน้าจอ
คุณสามารถดึงข้อมูลด้วย API เช่น getDrawable(int)
หรือใช้
ไปยังทรัพยากร XML อื่นที่มีแอตทริบิวต์ เช่น android:drawable
และ android:icon
ไอคอนที่ถอนออกได้มีหลายประเภทดังนี้
- ไฟล์บิตแมป
- ไฟล์กราฟิกบิตแมป (PNG, WEBP, JPG หรือ GIF)
สร้าง
BitmapDrawable
- ไฟล์แพตช์ 9
- ไฟล์ PNG ที่มีพื้นที่ยืดหยุ่นเพื่อให้รูปภาพปรับขนาดตามเนื้อหาได้ (
.9.png
) สร้างNinePatchDrawable
- รายการเลเยอร์
- เนื้อหาที่ถอนออกได้ที่จัดการอาร์เรย์ของเนื้อหาที่ถอนออกได้อื่นๆ รูปเหล่านี้วาดตามลำดับอาร์เรย์ ดังนั้น
ที่มีดัชนีใหญ่ที่สุดจะถูกวาดไว้ด้านบน สร้าง
LayerDrawable
- รายชื่อรัฐ
- ไฟล์ XML ที่อ้างอิงกราฟิกบิตแมปต่างๆ
สถานะต่างๆ เช่น ในการใช้รูปภาพอื่นเมื่อมีการแตะปุ่ม
สร้าง
StateListDrawable
- รายการระดับ
- ไฟล์ XML ที่กำหนดรูปแบบที่ถอนออกได้ซึ่งจัดการปุ่มที่ถอนออกได้จำนวนหนึ่ง โดยแต่ละไฟล์
ได้กำหนดค่าตัวเลขสูงสุดไว้ สร้าง
LevelListDrawable
- การเปลี่ยนที่ถอนออกได้
- ไฟล์ XML ที่กำหนดทรัพยากรที่ถอนออกได้ซึ่งสามารถเลือนหายไประหว่างทรัพยากรที่ถอนออกได้ 2 รายการ
สร้าง
TransitionDrawable
- เนื้อหาที่ถอนออกได้
- ไฟล์ XML ที่กำหนดโฆษณาที่ถอนออกได้ซึ่งฝังรายการอื่นที่ถอนออกได้ตามระยะทางที่กำหนด มุมมองนี้มีประโยชน์เมื่อมุมมองจำเป็นต้องมีการดึงพื้นหลังออกที่มีขนาดเล็กกว่าองค์ประกอบจริงของมุมมอง ขอบเขต
- คลิปที่ถอนออกได้
- ไฟล์ XML ที่กำหนดรูปแบบที่ถอนออกได้ซึ่งคลิปที่ถอนออกได้นี้อีกไฟล์หนึ่งตาม
ค่าระดับปัจจุบัน สร้าง
ClipDrawable
- สเกลที่ถอนออกได้
- ไฟล์ XML ที่กำหนดหน้าเนื้อหาที่ถอนออกได้ซึ่งจะเปลี่ยนขนาดของสินค้าอื่นที่ถอนออกได้โดยอิงตาม
ค่าระดับปัจจุบัน สร้าง
ScaleDrawable
- รูปร่างที่ถอนออกได้
- ไฟล์ XML ที่กำหนดรูปทรงเรขาคณิต รวมถึงสีและการไล่ระดับสี
สร้าง
GradientDrawable
สำหรับข้อมูลเกี่ยวกับวิธี
สร้าง AnimationDrawable
โปรดดูเอกสารทรัพยากรของภาพเคลื่อนไหว
หมายเหตุ: แหล่งข้อมูลสีสามารถใช้
ในรูปแบบที่ถอนออกได้ใน XML ตัวอย่างเช่น เมื่อสร้าง รายการรัฐ
วาดเขียนได้ คุณสามารถอ้างอิงทรัพยากรสีสำหรับแอตทริบิวต์ android:drawable
(android:drawable="@color/green"
)
บิตแมป
รูปภาพบิตแมป Android สนับสนุนไฟล์บิตแมปในรูปแบบต่อไปนี้ PNG (แนะนำ), WEBP (แนะนำ, ต้องมี API ระดับ 17 ขึ้นไป), JPG (ยอมรับ), GIF (ไม่แนะนำ)
คุณสามารถอ้างอิงไฟล์บิตแมปโดยตรง โดยใช้ชื่อไฟล์เป็นรหัสทรัพยากร หรือสร้าง รหัสทรัพยากรแทนใน XML
หมายเหตุ: ไฟล์บิตแมปอาจได้รับการเพิ่มประสิทธิภาพโดยอัตโนมัติแบบไม่สูญเสียรายละเอียด
การบีบอัดรูปภาพโดยเครื่องมือ aapt
ในระหว่างขั้นตอนการสร้าง สำหรับ
ตัวอย่างเช่น PNG แบบสีจริงที่ไม่ต้องใช้สีมากกว่า 256 สีอาจแปลงเป็น 8 บิตได้
PNG ที่มีชุดสี ซึ่งจะให้ผลลัพธ์รูปภาพที่มีคุณภาพเท่ากัน โดยใช้ทรัพยากรน้อยลง
ความทรงจำ
ดังนั้นโปรดทราบว่าไบนารีรูปภาพที่วางไว้ในไดเรกทอรีนี้อาจเปลี่ยนแปลงได้ระหว่างการสร้าง ถ้า
คุณวางแผนที่จะอ่านรูปภาพเป็นสตรีมบิตเพื่อแปลงเป็นบิตแมป ใส่รูปภาพของคุณ
โฟลเดอร์ res/raw/
แทน ซึ่งไม่มีการเพิ่มประสิทธิภาพ
ไฟล์บิตแมป
ไฟล์บิตแมปคือไฟล์ PNG, WEBP, JPG หรือ GIF Android สร้าง Drawable
สำหรับไฟล์เหล่านี้เมื่อคุณบันทึกไฟล์ในไดเรกทอรี res/drawable/
- ตำแหน่งที่ตั้งไฟล์:
res/drawable/filename.png
(.png
,.webp
,.jpg
หรือ.gif
)
ชื่อไฟล์คือรหัสทรัพยากร- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
BitmapDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ตัวอย่าง:
- เมื่อบันทึกรูปภาพเมื่อ
res/drawable/myimage.png
จะใช้ XML การออกแบบนี้ รูปภาพไปยังมุมมอง:<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
รหัสแอปพลิเคชันต่อไปนี้เรียกรูปภาพเป็น
Drawable
:Kotlin
val drawable: Drawable? = ResourcesCompat.
getDrawable
(resources, R.drawable.myimage, null)Java
Resources res =
getResources()
; Drawable drawable = ResourcesCompat.getDrawable
(res, R.drawable.myimage, null); - ดูเพิ่มเติม
บิตแมป XML
บิตแมป XML คือทรัพยากรที่กำหนดไว้ใน XML ซึ่งชี้ไปยังไฟล์บิตแมป เอฟเฟกต์นี้เป็นชื่อแทนของ ไฟล์บิตแมปดิบ XML สามารถระบุคุณสมบัติเพิ่มเติมสำหรับบิตแมป เช่น การแยกส่วนและการเรียงต่อกัน
หมายเหตุ: คุณสามารถใช้องค์ประกอบ <bitmap>
ในฐานะองค์ประกอบย่อยของ
เอลิเมนต์ <item>
สำหรับ
เช่น เมื่อสร้างรายการสถานะหรือรายการเลเยอร์
คุณสามารถยกเว้น android:drawable
จากเอลิเมนต์ <item>
แล้วฝัง <bitmap>
ไว้ในเอลิเมนต์ดังกล่าว
ที่กำหนดรายการที่ถอนออกได้
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
BitmapDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:mipMap=["true" | "false"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- องค์ประกอบ:
- ตัวอย่าง:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
- ดูเพิ่มเติม
res/drawable/filename.xml
9 แพตช์
NinePatch
คือรูปภาพ PNG ที่คุณกำหนดพื้นที่ที่ยืดได้ได้
ที่ Android ปรับขนาดเมื่อเนื้อหาภายในมุมมองเกินขอบเขตของรูปภาพปกติ คุณ
มักจะกำหนดรูปภาพประเภทนี้เป็นพื้นหลังของมุมมองที่ตั้งค่าขนาดไว้อย่างน้อย 1 รูปแบบ
ไปยัง "wrap_content"
เมื่อมุมมองขยายออกเพื่อรองรับเนื้อหาต่างๆ ภาพ 9 จุด
จะมีการปรับขนาดให้ตรงกับขนาดของมุมมองด้วย ตัวอย่างการใช้ภาพ 9 แพตช์คือ
พื้นหลังที่ใช้โดยวิดเจ็ต Button
มาตรฐานของ Android ซึ่งต้องขยายเป็น
ปรับข้อความ (หรือรูปภาพ) ภายในปุ่มให้พอดี
คุณอ้างอิงไฟล์ 9 แพตช์ได้โดยตรง เช่นเดียวกับบิตแมปปกติ หรือจากทรัพยากรที่กำหนดโดย XML
หากต้องการพูดคุยเกี่ยวกับวิธีสร้างไฟล์ 9 แพตช์ซึ่งมีพื้นที่แบบขยายได้ ดูสร้างบิตแมปที่ปรับขนาดได้ (ไฟล์แพตช์ 9)
ไฟล์แพตช์ 9
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
NinePatchDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ตัวอย่าง:
- เมื่อบันทึกรูปภาพเมื่อ
res/drawable/myninepatch.9.png
แล้ว XML เลย์เอาต์นี้ นำแพตช์ทั้ง 9 ไปใช้กับมุมมอง ดังนี้<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
- ดูเพิ่มเติม
res/drawable/filename.9.png
XML 9 แพตช์
XML 9-patch คือทรัพยากรที่กำหนดไว้ใน XML ที่ชี้ไปยังไฟล์ 9 แพตช์ XML สามารถ ระบุความยาวของภาพ
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
NinePatchDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] />
- องค์ประกอบ:
- ตัวอย่าง:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/myninepatch" android:dither="false" />
res/drawable/filename.xml
รายการเลเยอร์
LayerDrawable
เป็นวัตถุที่ถอนออกได้
ที่จัดการอาร์เรย์ของทรัพยากรที่ถอนออกได้อื่นๆ แต่ละรายการที่ถอนออกได้ในรายการจะถูกวาดตามลำดับ
รายการ ภาพวาดสุดท้ายที่ถอนออกได้ในรายการจะถูกวาดไว้ด้านบน
เนื้อหาที่ถอนออกได้แต่ละรายการจะแสดงด้วยองค์ประกอบ <item>
ภายในองค์ประกอบ <layer-list>
รายการเดียว
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
LayerDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </layer-list>
- องค์ประกอบ:
- ตัวอย่าง:
- ไฟล์ XML ที่บันทึกไว้ที่
res/drawable/layers.xml
:<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list>
ตัวอย่างนี้ใช้เอลิเมนต์
<bitmap>
ที่ฝังอยู่เพื่อกำหนดโฆษณาที่ถอนออกได้ สำหรับแต่ละรายการที่มีแรงโน้มถ่วง"center"
เพื่อให้แน่ใจว่าไม่มีการปรับขนาดรูปภาพเป็น พอดีกับขนาดของคอนเทนเนอร์ เนื่องจากการปรับขนาดที่เกิดจากรูปภาพออฟเซ็ตXML การออกแบบนี้จะใช้รายการที่ถอนออกได้กับมุมมอง:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
ผลที่ได้คือรูปภาพออฟเซ็ตกองซ้อนกันมากขึ้นเรื่อยๆ ดังนี้
- ดูเพิ่มเติม
res/drawable/filename.xml
รายชื่อรัฐ
StateListDrawable
เป็นออบเจ็กต์ที่ถอนออกได้ที่กำหนดไว้ใน XML
ที่ใช้รูปภาพหลายรูปเพื่อแสดงเป็นกราฟิกเดียวกัน ขึ้นอยู่กับสถานะของ
ออบเจ็กต์นั้น เช่น สถานะของวิดเจ็ต Button
สามารถแตะ โฟกัส
หรือไม่ใช้ทั้งคู่ โดยใช้รายการสถานะที่ถอนออกได้ คุณจะสามารถให้ภาพพื้นหลังที่แตกต่างกันสำหรับ
คุณอธิบายรายการรัฐในไฟล์ XML กราฟิกแต่ละรายการจะแสดงด้วยองค์ประกอบ <item>
ภายในองค์ประกอบ <selector>
รายการเดียว แต่ละ<item>
ใช้แอตทริบิวต์ที่หลากหลายเพื่ออธิบายรัฐที่ใช้เป็นกราฟิกสำหรับ
ถอนออกได้
ในระหว่างการเปลี่ยนสถานะแต่ละครั้ง รายการรัฐจะข้ามผ่านจากบนลงล่าง และเป็นรายการแรกที่ ตรงกับสถานะปัจจุบันที่ใช้ การเลือกไม่ได้อิงตาม ที่ตรงกัน" แต่เป็นรายการแรกที่ตรงตามเกณฑ์ขั้นต่ำของรัฐ
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
StateListDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize=["true" | "false"] android:dither=["true" | "false"] android:variablePadding=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
- องค์ประกอบ:
- ตัวอย่าง:
- ไฟล์ XML ที่บันทึกไว้ที่
res/drawable/button.xml
:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
XML เลย์เอาต์นี้จะใช้รายการสถานะที่ถอนออกได้กับปุ่ม
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
- ดูเพิ่มเติม
res/drawable/filename.xml
รายการระดับ
บริการถอนเงินที่ถอนออกได้หลายรายการ โดยแต่ละรายการจะกำหนดจำนวนสูงสุด
การตั้งค่าระดับของเนื้อหาที่ถอนออกได้ด้วย setLevel()
จะโหลดทรัพยากรที่ถอนออกได้ใน
รายการระดับที่มีค่า android:maxLevel
มากกว่าหรือเท่ากับค่า
ผ่านไปยังเมธอด
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
LevelListDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" android:minLevel="integer" /> </level-list>
- องค์ประกอบ:
- ตัวอย่าง:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/status_off" android:maxLevel="0" /> <item android:drawable="@drawable/status_on" android:maxLevel="1" /> </level-list>
เมื่อใช้กับ
View
แล้ว คุณจะเปลี่ยนระดับได้ด้วยsetLevel()
หรือsetImageLevel()
- ดูเพิ่มเติม
res/drawable/filename.xml
ปุ่มที่ถอดถอนออกได้
TransitionDrawable
เป็นวัตถุที่ถอนออกได้
ที่สามารถเลื่อนดูระหว่างทรัพยากรที่ถอนออกได้อื่นๆ 2 รายการ
เนื้อหาที่ถอนออกได้แต่ละรายการจะแสดงด้วยองค์ประกอบ <item>
ภายในองค์ประกอบ <transition>
รายการเดียว รองรับไม่เกิน 2 รายการ หากต้องการส่งต่อ โปรดโทร
startTransition()
ถึง
ย้อนกลับ โทร reverseTransition()
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
TransitionDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </transition>
- องค์ประกอบ:
- ตัวอย่าง:
- ไฟล์ XML ที่บันทึกไว้ที่
res/drawable/transition.xml
:<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/on" /> <item android:drawable="@drawable/off" /> </transition>
XML การออกแบบนี้จะใช้รายการที่ถอนออกได้กับมุมมอง:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
และโค้ดต่อไปนี้จะดำเนินการเปลี่ยน 500 มิลลิวินาทีจากรายการแรกไปรายการที่สอง:
Kotlin
val button: ImageButton = findViewById(R.id.button) val drawable: Drawable = button.drawable if (drawable is TransitionDrawable) { drawable.startTransition(500) }
Java
ImageButton button = (ImageButton) findViewById(R.id.button); Drawable drawable = button.getDrawable(); if (drawable instanceof TransitionDrawable) { ((TransitionDrawable) drawable).startTransition(500); }
- ดูเพิ่มเติม
res/drawable/filename.xml
ด้านที่ถอนออกได้
การกำหนดที่ถอนออกได้ที่กำหนดไว้ใน XML ที่แทรกเนื้อหาที่ถอนออกได้อีกรายการหนึ่งตามระยะทางที่ระบุ มีประโยชน์ เมื่อมุมมองต้องการพื้นหลังที่เล็กกว่าขอบเขตจริงของมุมมอง
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
InsetDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
- องค์ประกอบ:
- ตัวอย่าง:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
- ดูเพิ่มเติม
res/drawable/filename.xml
คลิปที่ถอนออกได้
เวอร์ชันที่ถอนออกได้ที่กำหนดไว้ใน XML ที่จะตัดคลิปที่ถอนออกได้อีกรายการหนึ่งตามระดับปัจจุบันของเนื้อหาที่ถอนออกได้นี้ คุณ ควบคุมระดับความกว้างและความสูงที่ถอนออกได้ของบุตรหลานตามระดับด้วย เป็นแรงโน้มถ่วงในการควบคุมตำแหน่งที่จะวางไว้ในคอนเทนเนอร์โดยรวม มักใช้ในการติดตั้งใช้งานมากที่สุด เช่น แถบความคืบหน้า
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
ClipDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:clipOrientation=["horizontal" | "vertical"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
- องค์ประกอบ:
- ตัวอย่าง:
- ไฟล์ XML ที่บันทึกไว้ที่
res/drawable/clip.xml
:<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/android" android:clipOrientation="horizontal" android:gravity="left" />
XML การออกแบบต่อไปนี้จะใช้คลิปที่ถอนออกได้ในมุมมอง
<ImageView android:id="@+id/image" android:src="@drawable/clip" android:layout_height="wrap_content" android:layout_width="wrap_content" />
โค้ดต่อไปนี้ทำให้ถอนออกได้และเพิ่มจำนวนการตัดเป็น ค่อยๆ แสดงรูปภาพ:
Kotlin
val imageview: ImageView = findViewById(R.id.image) val drawable: Drawable = imageview.background if (drawable is ClipDrawable) { drawable.level = drawable.level + 1000 }
Java
ImageView imageview = (ImageView) findViewById(R.id.image); Drawable drawable = imageview.getBackground(); if (drawable instanceof ClipDrawable) { ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000); }
การเพิ่มระดับจะลดปริมาณการตัดและค่อยๆ แสดงรูปภาพ จัดให้เลย ที่ระดับ 7000:
หมายเหตุ: ระดับเริ่มต้นคือ 0 ซึ่งจะตัดให้เต็มรูปภาพ ไม่แสดง เมื่ออยู่ในระดับ 10,000 รูปภาพจะไม่ถูกตัดออกและจะมองเห็นได้อย่างชัดเจน
- ดูเพิ่มเติม
res/drawable/filename.xml
ตาชั่งที่ถอนออกได้
A Dreamable ที่กำหนดไว้ใน XML ที่เปลี่ยนขนาดของเนื้อหาที่ถอนออกได้อื่นตามการตั้งค่าปัจจุบัน
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
ScaleDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:scaleHeight="percentage" android:scaleWidth="percentage" />
- องค์ประกอบ:
- ตัวอย่าง:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/logo" android:scaleGravity="center_vertical|center_horizontal" android:scaleHeight="80%" android:scaleWidth="80%" />
- ดูเพิ่มเติม
res/drawable/filename.xml
รูปทรงที่ถอนออกได้
นี่คือรูปร่างทั่วไปที่กำหนดไว้ใน XML
- ตำแหน่งที่ตั้งไฟล์:
- ชื่อไฟล์คือรหัสทรัพยากร
- ประเภทข้อมูลทรัพยากรที่คอมไพล์:
- ตัวชี้แหล่งข้อมูลไปยัง
GradientDrawable
- การอ้างอิงทรัพยากร:
-
ใน Java:
R.drawable.filename
ใน XML:@[package:]drawable/filename
- ไวยากรณ์:
-
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
- องค์ประกอบ:
- ตัวอย่าง:
- ไฟล์ XML ที่บันทึกไว้ที่
res/drawable/gradient_box.xml
:<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape>
XML การออกแบบนี้จะใช้รูปร่างที่ถอนออกได้ในมุมมอง:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
โค้ดของแอปพลิเคชันนี้มีรูปร่างที่ถอนออกได้และนำไปใช้กับมุมมอง:
Kotlin
val shape: Drawable? =
getDrawable
(resources
, R.drawable.gradient_box,getTheme()
) val tv: TextView = findViewById(R.id.textview) tv.background = shapeJava
Resources res =
getResources()
; Drawable shape = ResourcesCompat.getDrawable
(res, R.drawable.gradient_box,getTheme()
); TextView tv = (TextView)findViewById(R.id.textview); tv.setBackground(shape); - ดูเพิ่มเติม
res/drawable/filename.xml