GitAds
สวัสดี นักพัฒนา ยินดีต้อนรับสู่การใช้ SuperTextView !
ขอบคุณและนักพัฒนา Android นับหมื่นคนที่ไว้วางใจฉัน ?。
SuperTextView แตกต่างตรงที่เป็นเพียงองค์ประกอบมุมมองธรรมดา แต่ไม่ใช่แค่มุมมอง
มันมีชีวิตชีวาและไดนามิก พร้อมด้วยลอจิกฝังตัวอันทรงพลังที่ยังคงให้การสนับสนุนการพัฒนาที่เรียบง่ายแต่สมบูรณ์แก่คุณ
SuperTextView ช่วยคุณประหยัดจากตรรกะการเรนเดอร์ที่ซับซ้อน การเรียกใช้เมธอด API ที่เรียบง่าย เอฟเฟกต์การเรนเดอร์ที่น่าทึ่งพร้อมใช้งานทันที
คุณเพียงแค่เพลิดเพลินไปกับเอฟเฟ็กต์ภาพที่น่าทึ่งที่คุณเขียนและส่วนที่เหลือจะถูกส่งไปยัง SuperTextView
- คลิกที่นี่ (หรือสแกนรหัส QR ด้านล่าง) เพื่อดาวน์โหลด การสาธิต
【พอร์ทัล】:《เอกสารอ้างอิงการพัฒนา SuperTextView》- คุณสามารถเรียนรู้วิธีใช้ SuperTextView เพื่อสร้างแอปพลิเคชันของคุณได้อย่างมีประสิทธิภาพมากขึ้น
【พอร์ทัล】:《เอกสาร SuperTextView API》— คุณสามารถดู API และคุณสมบัติที่มีอยู่ทั้งหมดของ SuperTextView
เพิ่มเข้าไปใน build.gradle ของคุณ:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
รหัสเวอร์ชันของรุ่นล่าสุดสามารถพบได้ที่นี่
รองรับ v3.2.6 : armeabi-v7a
รองรับ v3.2.6.64 : armeabi-v7a
、 arm64-v8a
รองรับ v3.2.6.99 : armeabi-v7a
、 arm64-v8a
、 x86
proguard-rules.pro
โปรดเพิ่ม -keep class com.coorchice.library.gifdecoder.JNI { *; }
ใน XML ให้ใช้ 'รูปภาพเครือข่าย' เป็นภาพพื้นหลัง
< com .coorchice.library.SuperTextView
android:id =" @+id/stv_40 "
android:layout_width =" 150dp "
android:layout_height =" 150dp "
android:layout_gravity =" center_horizontal "
android:layout_marginTop =" 16dp "
android:gravity =" bottom|center "
android:paddingBottom =" 1dp "
android:text ="网络背景图"
android:textColor =" #000 "
android:textSize =" 14sp "
app:stv_corner =" 10dp "
app:stv_isShowState =" true "
app:stv_drawableAsBackground =" true "
app:stv_solid =" #f1f1f1 "
app:stv_state_drawable =" https://gw.alicdn.com/imgextra/i3/O1CN01suhAFr1cXQX49D2xp_!!6000000003610-0-tps-468-466.jpg " />
ใน XML ให้ตั้งค่า 'Network Image' สำหรับ StateDrawable2
< com .coorchice.library.SuperTextView
android:id =" @+id/stv_41 "
android:layout_width =" 350dp "
android:layout_height =" 100dp "
android:layout_gravity =" center_horizontal "
android:layout_marginTop =" 30dp "
android:paddingLeft =" 116dp "
android:paddingTop =" 30dp "
android:text =" StateDrawable2 网络图"
android:textColor =" @color/black "
android:textSize =" 14sp "
app:stv_corner =" 50dp "
app:stv_isShowState2 =" true "
app:stv_left_bottom_corner =" true "
app:stv_left_top_corner =" true "
app:stv_solid =" #f1f1f1 "
app:stv_state_drawable2 =" https://gw.alicdn.com/imgextra/i3/O1CN01XPmcmt1vJfKcQ8o6O_!!6000000006152-0-tps-500-500.jpg "
app:stv_state_drawable2_height =" 100dp "
app:stv_state_drawable2_mode =" left "
app:stv_state_drawable2_width =" 100dp " />
stv_pressBgColor
ไม่ถูกต้องแก้ไข Drawable เขียนค่าสีเลขฐานสิบหกโดยตรง ไม่แสดงปัญหา
รองรับ Drawable สำหรับเลเยอร์ที่ระบุ
<com.coorchice.library.SuperTextView
...
// Configuring the level of Drawable1
app:stv_state_drawable_layer="beforeText"
// Configuring the level of Drawable2
app:stv_state_drawable2_layer="afterText"
...
/>
โหมดการสนับสนุน:
- `beforeText`,Before the text
- `afterText`,After the text
Java มีฟังก์ชันที่เกี่ยวข้องเพื่อรองรับการกำหนดค่าแบบไดนามิก
โหมดสเกลปัญหาสวิตช์ scaleType ไม่ถูกต้องเมื่อแก้ไข Drawable1 เป็นภาพพื้นหลัง
ปรับจังหวะข้อความให้เหมาะสม
ปรับการแสดงผล GIF แบบโปร่งใสให้เหมาะสม
ในเวอร์ชัน v3.2.0
ใหม่ SuperTextView จะกำหนดนิยามใหม่อีกครั้ง เหล่านักพัฒนา มาดูเซอร์ไพรส์ที่เตรียมไว้เพื่อคุณกัน!???
ในครั้งนี้ SuperTextView นำการสนับสนุนไดรเวอร์ Gif อันทรงพลังมาสู่นักพัฒนา
หากในอดีตคุณรู้สึกไม่สบายใจเกี่ยวกับวิธีแสดงแผนภูมิ Gif บนแพลตฟอร์ม Android หรือคุณติดอยู่ในประสิทธิภาพของไลบรารี Gif ของบุคคลที่สามบางแห่ง แต่ตอนนี้ SuperTextView จะเปลี่ยนสถานการณ์นี้โดยสิ้นเชิง
Gif และ SuperTextView เป็นธรรมชาติและเป็นธรรมชาติ ดังนั้นคุณจึงสามารถแสดงไดอะแกรม Gif ด้วยวิธีที่คุ้นเคยและเป็นธรรมชาติที่สุด มันง่ายเหมือนการแสดงภาพปกติตามปกติ
ด้วยประสิทธิภาพที่สูงเป็นพิเศษของ c/c++ และการทำงานของหน่วยความจำที่แม่นยำ SuperTextView ปรับแต่งเอ็นจิ้นไดรเวอร์ Gif อันทรงพลังสำหรับแพลตฟอร์มมือถือโดยใช้ c/c++
เอ็นจิ้น Gif ของ SuperTextView ซึ่งสามารถจัดการหน่วยความจำพิกเซลของภาพได้อย่างแม่นยำ จะอัปเดตหน่วยความจำพิกเซลในเครื่องเฉพาะเมื่อมีการรีเฟรชเฟรมของภาพ Gif ซึ่งทำให้ประสิทธิภาพการแสดงภาพ Gif ได้รับการก้าวกระโดดในเชิงคุณภาพ
ด้วยเทคโนโลยีการเรนเดอร์นอกหน้าจอแบบอะซิงโครนัส SuperTextView สามารถรับประกันอินเทอร์เฟซแอปพลิเคชันที่ราบรื่นและราบรื่นและความเร็วการตอบสนองที่ละเอียดอ่อนแม้ในขณะที่แสดงภาพ Gif ขนาดใหญ่
ในการสาธิตข้างต้น การใช้ SuperTextView จะแสดงภาพ Gif ที่มีภาพขนาด 265 เฟรม แต่อินเทอร์เฟซผู้ใช้ยังคงราบรื่นมาก
แสดงไดอะแกรม Gif ใน SuperTextView ง่ายมาก!
คุณสามารถกำหนดค่าได้โดยตรงในเอกสารเค้าโครง XML หรือเพิ่มลงในโค้ดของคุณ
<com.coorchice.library.SuperTextView
android:id="@+id/stv_1"
android:layout_width="match_parent"
android:layout_height="150dp"
app:stv_state_drawable="@drawable/gif_1" />
คุณสามารถแสดงไดอะแกรม Gif สำหรับการกำหนดค่า SuperTextView ได้เหมือนกับการกำหนดค่ารูปภาพปกติ
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
SuperTextView เรียบง่ายและเป็นธรรมชาติ ช่วยให้นักพัฒนาสามารถแสดงไดอะแกรม Gif โดยไม่ต้องรับรู้ใดๆ
ในตรรกะเคอร์เนลของ SuperTextView SuperTextView จะจัดประเภทกราฟปกติและกราฟ Gif อย่างชาญฉลาด จากนั้นจึงประมวลผลและปรับให้เหมาะสมตามนั้น
จะเกิดอะไรขึ้นถ้า Gif ของคุณไม่ใช่ในพื้นที่ แต่อยู่ในคลาวด์?
คุณไม่ต้องกังวลกับมัน! ทุกอย่างถูกส่งมอบให้กับ SuperTextView
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
ด้วยโค้ดเพียงบรรทัดเดียว SuperTextView จะช่วยคุณในเบื้องหลังเพื่อโหลดรูปภาพ Gif จากนั้นประมวลผลการเรนเดอร์ไปยังหน้าจอ
ในความเป็นจริง บิตการแสดงรูปภาพ Drawable1 และ Drawable2 ของ SuperTextView สามารถใช้เพื่อแสดงรูปภาพ Gif ได้ ในระยะสั้นทุกสิ่งคือสิ่งที่คุณคุ้นเคย
SuperTextView ไม่เพียงแต่แสดง Gif เท่านั้น แต่คุณยังสามารถควบคุมรายละเอียดเพิ่มเติมได้อีกด้วย
คุณสามารถควบคุม Gif เล่น หรือหยุดชั่วคราวได้ตลอดเวลา
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
ใน SuperTextView คุณสามารถเข้าถึงรูปภาพของเฟรมที่คุณระบุได้ตลอดเวลา รวมถึงรูปภาพที่สามารถแยกไปยังเฟรมที่ระบุได้
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Jump to the specified frame
gifDrawable.gotoFrame(pre);
// Get the specified frame
Bitmap frame = gifDrawable.getFrame(i);
}
เนื่องจาก SuperTextView สามารถรองรับการเรนเดอร์แบบเพิ่มหน่วยเฉพาะที่ เมื่อ Gif ของคุณรองรับโหมดการเรนเดอร์นี้ หมายความว่าคุณอาจต้องเปิดใช้งาน ** โหมดเข้มงวดโดยการเรียก
gifDrawable.setStrict(true)
เพื่อให้แน่ใจว่าการข้ามเฟรมหรือรูปภาพการแยกเฟรมนั้นถูกต้อง การดำเนินการนี้อาจใช้เวลาสักครู่ ดังนั้นคุณควรพยายามดำเนินการภายใต้ ** โหมดเข้มงวด * ในเธรดแบบอะซิงโครนัส
SuperTextView ช่วยให้คุณสามารถปรับเปลี่ยนอัตราการเล่นของแผนภูมิ Gif ได้ตามต้องการ
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Set the frame playback interval, 20 ms
gifDrawable.setFrameDuration(20);
}
ด้วย SuperTextView คุณสามารถดูข้อมูลของ Gif ได้
รับขนาด GIF
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
รับข้อมูลเฟรม Gif
// Get the number of frames
int frameCount = gifDrawable.getFrameCount();
// Get the current frame interval
int frameDuration = gifDrawable.getFrameDuration();
// Get the current render to that frame
int framePotision = gifDrawable.getCurrentFrame();
// Whether it is playing
boolean isPlaying = gifDrawable.isPlaying();
** SuperTextView ** และ ** Gif ** แสดงผลโดยอาศัยการรวมที่ไร้รอยต่อ หลังจาก ** Drawable1 ** และ ** Drawable2 ** รายการการกำหนดค่าทั้งหมดในจอแสดงผล ** Gif ** รูปก็สามารถมีผลบังคับใช้ได้เช่นกัน
app:stv_state_drawable_rotate="90"
มาดูกันว่าเกิดอะไรขึ้นกับ Gif ในตำแหน่ง Drawable ดั้งเดิม
<com.coorchice.library.SuperTextView
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingLeft="62dp"
android:paddingRight="10dp"
android:text="小火箭发射了!啦啦啦啦啦啦..."
android:textColor="#ffffff"
android:textSize="22dp"
app:stv_corner="6dp"
app:stv_isShowState="true"
app:stv_solid="#0D1831"
// set Gif
app:stv_state_drawable="@drawable/gif_1"
// set Gif height
app:stv_state_drawable_height="40dp"
// set Gif width
app:stv_state_drawable_width="40dp"
// set Gif to left
app:stv_state_drawable_mode="left"
// set Gif left spacing
app:stv_state_drawable_padding_left="10dp"/>
ผลกระทบคือ...
ทีนี้ลอง Gif หมุน 90 องศา
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
การใช้งาน SuperTextView ที่น่าทึ่ง Gif เนื้อกราฟเปิดประตูใหม่สำหรับนักพัฒนา
อย่างไรก็ตาม การตระหนักถึงผลกระทบนี้ทำได้ง่ายมากอย่างน่าอัศจรรย์
<com.coorchice.library.SuperTextView
android:layout_width="185dp"
android:layout_height="138.75dp"
android:layout_gravity="center_horizontal"
app:stv_corner="20dp"
// set Gif as the control background
app:stv_drawableAsBackground="true"
app:stv_scaleType="fitCenter"
// Configuring Gif
app:stv_state_drawable="@drawable/gif_1" />
นักพัฒนาสามารถเพิ่มเส้นขอบให้กับ Gif ได้อย่างง่ายดาย
<com.coorchice.library.SuperTextView
android:layout_width="350dp"
android:layout_height="148.4dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
// add the text will be more stylish
android:text="SuperTextView"
android:textSize="36dp"
android:textStyle="bold"
android:visibility="invisible"
app:stv_corner="6dp"
app:stv_drawableAsBackground="true"
app:stv_isShowState="true"
app:stv_scaleType="center"
// Set the border color
app:stv_stroke_color="@color/opacity_8_gray_4c
// Set the border width
app:stv_stroke_width="5dp"
app:stv_text_fill_color="#ccffffff"
app:stv_text_stroke="true"
app:stv_text_stroke_color="#cc000000"
app:stv_text_stroke_width="2dp"
// Configuring Gif
app:stv_state_drawable="@drawable/gif_1"/>
เห็นผลทันที...
ในอดีต ไดนามิกเจ๋งๆ บางอย่างมักจะหยุดอยู่ที่ความซับซ้อนและต้นทุนในการดำเนินการ และ SuperTextView จะทำให้คุณมีโอกาสมากขึ้น และแรงบันดาลใจของคุณก็เป็นอิสระ
ตัวอย่างเช่น การใช้งานอวตารแบบไดนามิกจะง่ายกว่าที่เคย
<com.coorchice.library.SuperTextView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="30dp"
app:stv_corner="40dp"
// Set as background image
app:stv_drawableAsBackground="true"
// Configure Gif avatar
app:stv_state_drawable="@drawable/gif_avatar"
// Add border
app:stv_stroke_color="#ffffff"
app:stv_stroke_width="3dp"
/>
ในโค้ด คุณสามารถกำหนดค่าอวตารไดนามิกของเว็บได้โดยตรง
stv.setUrlImage("http://gif_avatar.gif");
ใน SuperTextView เวอร์ชันใหม่ Drawable1 และ Drawable2 ได้รับความสามารถใหม่ - รองรับการคลิกที่แม่นยำ
SuperTextView ด้วยการตรวจสอบตำแหน่งที่การกระทำการคลิกเกิดขึ้น การกระทำการคลิกสามารถระบุตำแหน่งได้อย่างแม่นยำในพื้นที่ที่เกิดขึ้น ( พื้นที่ Drawable1 , Drawable2 หรือ พื้นที่อื่น ๆ ) จากนั้นทริกเกอร์การเรียกกลับ Listening ตามนั้น
คุณสามารถตั้งค่าการฟังการกระทำการคลิกบน Drawable สำหรับ SuperTextView เพื่อให้การตอบสนองที่แม่นยำเมื่อมีการกระทำเกิดขึ้น
stv.setOnDrawableClickedListener(new SuperTextView.OnDrawableClickedListener() {
@Override
public void onDrawable1Clicked(SuperTextView stv) {
// Drawable1 clicked,do something...
}
@Override
public void onDrawable2Clicked(SuperTextView stv) {
// Drawable2 clicked,do something...
}
});
stv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Non-Drawable area is clicked, do something...
}
});
ตอนนี้ เมื่อคุณใช้ Drawable1 เป็นภาพพื้นหลัง คุณสามารถกำหนดค่าโหมดการซูมต่างๆ เพื่อให้ได้เอฟเฟกต์ที่คุณชื่นชอบ
stv.setScaleType(ScaleType.CENTER);
SuperTextView ช่วยให้นักพัฒนามีโหมดซูมสูงสุด 3 โหมด:
ScaleType.FIT_XY
ยืดภาพเป็นกระเบื้อง
ScaleType.FIT_CENTER
จัดกึ่งกลางภาพให้เหมาะสม
ScaleType.CENTER
ครอบตัดรูปภาพให้อยู่กึ่งกลาง ค่าเริ่มต้น
ในเอกสารเค้าโครง XML ตอนนี้ Drawable1 และ Drawable2 รองรับการตั้งค่า สี โดยตรงหรือ ShapeDrawable
// Circle_f9ad36 is a shape file written in xml
app:stv_state_drawable="@drawable/circle_f9ad36"
// Use solid color as Drawable
app:stv_state_drawable="#000000"
ประสิทธิภาพการเรนเดอร์ดีขึ้นกว่าเดิมอย่างน้อย 30%
อัปเกรดกลไกการโหลดรูปภาพเริ่มต้นเพื่อรองรับแคชอัจฉริยะ บางทีตอนนี้คุณไม่จำเป็นต้องแนะนำไลบรารีการโหลดรูปภาพของบุคคลที่สาม
SuperTextView ได้รับการสร้างขึ้นเพื่อช่วยให้นักพัฒนา Android พัฒนาแอปพลิเคชัน Android ได้อย่างมีประสิทธิภาพ สะดวก และสวยงามยิ่งขึ้น
ตอนนี้ความซื่อสัตย์ได้เพิ่มขึ้นอีกครั้ง SuperTextView ใหม่จะเปิดโอกาสให้นักพัฒนา Android มีโอกาสมากขึ้น และเช่นเคย SuperTextView จะนำคุณสมบัติที่มีประสิทธิภาพมากขึ้นมาด้วย
การอัปเดต SuperTextView นี้เพิ่มความสามารถในการระบายสีที่น่าอัศจรรย์และทรงพลังให้กับ StateDrawable นักพัฒนาสามารถเปลี่ยนสีของไอคอนได้อย่างง่ายดายโดยไม่ต้องเพิ่มไอคอนสีอื่นให้กับโปรเจ็กต์ เทคโนโลยีนี้จะทำให้แอปพลิเคชั่น Android ของคุณมีขนาดบางลง
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
ด้วยโค้ดบรรทัดที่เรียบง่ายเช่นนี้ คุณสามารถทำให้รูปภาพมีพลังในการเปลี่ยนแปลงได้ทันที แน่นอนสีที่คุณต้องการก็ขึ้นอยู่กับคุณ ทั้งหมดนี้เกิดขึ้นโดยไม่จำเป็นต้องแนะนำรูปภาพอื่นอีก
ในโค้ด Java มีฟังก์ชัน set / get ที่สอดคล้องกันเพื่อให้นักพัฒนาสามารถใช้เวทย์มนตร์ได้ตลอดเวลาโดยเปลี่ยนสีของรูปภาพ
การปรับปรุงของ StateDrawable เป็นมากกว่าการเปลี่ยนแปลงสี SuperTextView ได้รับความสามารถในการเปลี่ยนรูปร่างของ StateDrawable ด้วยภาพเดียวกัน นักพัฒนาสามารถรวมความเป็นไปได้จำนวนอนันต์เข้าด้วยกัน
ด้วยโค้ดเพียงไม่กี่บรรทัด คุณสามารถแปลงรูปภาพได้ตามต้องการ
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
ไม่จำเป็นต้องใช้โค้ดที่ซับซ้อน SuperTextView ก็เรียบง่ายและสวยงามเช่นเคย
ในทำนองเดียวกัน ในโค้ด Java ฟังก์ชัน set/get ที่เกี่ยวข้องก็มีให้เช่นกัน
ความสามารถนี้สามารถช่วยให้นักพัฒนาบีบอัดปริมาณแอปพลิเคชัน Android ได้อย่างมีประสิทธิภาพ
นี่คือข้อความไล่ระดับสี!
สิ่งที่ SuperTextView นำเสนอน่าจะเป็นโซลูชันที่ง่ายที่สุดและสวยงามที่สุดสำหรับการนำข้อความไล่ระดับสีไปใช้ ด้วยการกำหนดค่าที่เรียบง่าย คุณสามารถสร้างเอฟเฟกต์ข้อความไล่ระดับสีเท่ได้
# Whether to enable gradient text
app:stv_textShaderEnable="true"
# Set the starting color of the text
app:stv_textShaderStartColor="@color/red"
# Set the ending color of the text
app:stv_textShaderEndColor="@color/yellow"
# Set the gradient mode of the text
# leftToRight:left -> right
# rightToLeft:right -> left
# topToBottom:top -> bottom
# bottomToTop:bottom -> top
app:stv_textShaderMode="leftToRight"
คุณสมบัติเหล่านี้ยังมีอินเทอร์เฟซ set/get ใน Java ทำให้นักพัฒนาสามารถแก้ไขได้ตลอดเวลา
Adjuster เพิ่มฟังก์ชั่นใหม่สองอย่าง:
onAttach()
: เมื่อ Adjuster ถูกตั้งค่าเป็น SuperTextView จะถูกเรียกใช้onDetach()
: เมื่อ Adjuster ถูกลบออกจาก SuperTextView จะถูกเรียกใช้ด้วยการเขียนฟังก์ชันทั้งสองนี้ใหม่ใน Adjuster นักพัฒนาจึงสามารถดำเนินการลงทะเบียนสถานะ การเริ่มต้น การยกเลิกการลงทะเบียน การปล่อยทรัพยากร และการดำเนินการอื่น ๆ ในเวลาที่เหมาะสม
public class MyAdjuster extends SuperTextView.Adjuster{
@Override
protected void adjust(SuperTextView superTextView, Canvas canvas) {
}
@Override
public void onAttach(SuperTextView stv) {
// will be called when the modifier is added to a SuperTextView
}
@Override
public void onDetach(SuperTextView stv) {
// will be called when the Adjuster is removed from SuperTextView
}
}
ฟังก์ชั่นนี้ช่วยให้นักพัฒนาสามารถรับ Adjusters ทั้งหมดใน SuperTextView หากไม่มี Adjuster ใน SuperTextView มันจะส่งคืนค่าว่าง
ตอนนี้คุณสมบัติทั้งหมดของ SuperTextView นำหน้าด้วย stv_
วิธีนี้จะหลีกเลี่ยงความขัดแย้งกับชื่อคุณสมบัติที่ SuperTextView อาจสร้างขึ้นเมื่อนักพัฒนาเปิดตัวไลบรารีบุคคลที่สามอื่น ๆ
หากนักพัฒนาซอฟต์แวร์กำลังใช้ SuperTextView เวอร์ชันก่อนหน้าอยู่ หลังจากอัปเกรดเป็นเวอร์ชันใหม่แล้ว คุณจะต้องใส่คำนำหน้าแอตทริบิวต์ใน xml ทั้งหมดด้วยคำนำหน้า stv_
app:corner="10dp"
corner คือชื่อของแอตทริบิวต์ในเวอร์ชันเก่า หลังจากอัปเกรดเป็นเวอร์ชันใหม่ คุณจะต้องเพิ่มคำนำหน้า stv_
ที่ด้านหน้าและกลายเป็น stv_corner
หากนักพัฒนาซอฟต์แวร์ใช้ AndroidStudio ให้เปิดกล่องโต้ตอบการแทนที่จำนวนมากจาก Edit > Find > Replace
แล้วทำตามคำแนะนำด้านล่าง
หาก SuperTextView ใช้เนมสเปซเดียวกัน (เช่น app
) ในโปรเจ็กต์ของนักพัฒนา โชคดีที่คุณก็สามารถแทนที่ app:
ด้วย app:stv_
ได้
เริ่มต้นด้วย SuperTextView v2.0 ฟังก์ชัน setAdjuster(Adjuster)
จะถูกทำเครื่องหมายสำหรับสถานะที่จะลบออก และเพิ่มฟังก์ชันใหม่ addAdjuster(Adjuster)
แทน
ในเวอร์ชันใหม่ ฟังก์ชัน setAdjuster(Adjuster)
จะถูกลบออกอย่างเป็นทางการ หากผู้พัฒนาเคยใช้วิธีนี้มาก่อน กรุณาเปลี่ยนเป็น addAdjuster(Adjuster)
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
ปัจจุบัน SuperTextView มีคุณสมบัติทั่วไปมากมาย เช่น เนื้อปลา เส้นขอบ ลายเส้น การเปลี่ยนสีของสื่อ ไดอะแกรมแบบหลายสถานะ แผนผังเนื้อปลา ตัวปรับ อเนกประสงค์ การโหลดรูปภาพสุทธิ และอื่นๆ ด้วยเหตุนี้ นักพัฒนาจึงสามารถบรรลุเอฟเฟกต์ที่ยุ่งยากมากมายได้อย่างง่ายดาย ประหยัดเวลาในการพัฒนาได้มาก ลดความซับซ้อนของหน้าได้อย่างมีประสิทธิภาพ ลดต้นทุนการบำรุงรักษาโครงการ
เขียนโค้ดมันควรจะถูกใจมาก!
เมื่อไม่กี่เดือนที่ผ่านมา นักพัฒนาหลายคนได้แนะนำ CoorChice ว่าเป็นไปได้หรือไม่ที่ SuperTextView จะสามารถโหลดภาพสุทธิได้ ในความเป็นจริง CoorChice ได้รับการพิจารณามานานแล้ว แต่ในช่วงแรก ๆ ของ SuperTextView การปรับปรุงฟังก์ชันหลักให้สมบูรณ์แบบยังคงเป็นเป้าหมายหลัก ดังนั้นจึงไม่ได้เกี่ยวข้องกับฟังก์ชันที่เกี่ยวข้องกับรูปภาพ
จนถึงเวอร์ชันใหญ่ล่าสุด SuperTextView v2.0 ทาง CoorChie ได้พยายามเพิ่มฟังก์ชันการแสดงรูปภาพ สิ่งนี้ทำให้ขอบเขตของ SuperTextView สามารถขยายได้ เช่นเดียวกับความสามารถในการเพิ่มเส้นขีด มุมโค้งมน และไดอะแกรมสถานะให้กับรูปภาพ เอกสารที่เกี่ยวข้องสามารถดูได้ที่ลิงค์ต่อไปนี้:
【สวัสดี SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
ครั้งนี้ผมได้รับการตอบรับที่ดีจากผู้พัฒนา ทุกคนตั้งตารอที่จะใช้ SuperTextView เพื่อแสดงและประมวลผลภาพ หลังจากการเปิดตัวครั้งล่าสุด ดูเหมือนว่านักพัฒนาจะสนใจ SuperTextView ที่สามารถแสดงภาพสุทธิได้มากขึ้น
ตอนนี้ SuperTextView ที่รอคอยมานานกำลังกลับมาแล้ว!
หากต้องการแสดงภาพสุทธิ คุณจะต้องใช้รหัสต่อไปนี้ใน SuperTextView :
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
เอฟเฟกต์จะเหมือนกับตัวอย่างที่สองของการแสดงอวตารในภาพด้านบน
หากคุณต้องการแสดง net picture เป็น StateDrawable ของ SuperTextView ก็ไม่เป็นไร
// fill in the picture Url
stv_1.setUrlImage(url, false);
พารามิเตอร์ที่สองเป็น เท็จ เพื่อระบุว่ารูปภาพสุทธิจะไม่เต็มไปด้วย SuperTextView ทั้งหมดเป็นพื้นหลัง แต่เป็นไดอะแกรมสถานะ แน่นอนว่าทุกอย่างเกี่ยวกับแผนภาพสถานะจะถูกใช้ที่นี่ เช่นเดียวกับในตัวอย่างแรกด้านบน เค้าโครงทั้งหมด รวมถึงรูปภาพ ข้อความ และพื้นหลัง จะได้รับการประมวลผลใน SuperTextView และรูปภาพที่ดาวน์โหลดจากเน็ตจะถูกวางเป็น StateDrawable ในตำแหน่งนั้น
SuperTextView เพื่อให้ไลบรารี่ขึ้นอยู่กับความบริสุทธิ์และขนาดที่เล็กที่สุดเท่าที่จะเป็นไปได้ จึงไม่มีเฟรมเวิร์กการโหลดรูปภาพในตัว ดังนั้นตามค่าเริ่มต้น เอ็นจิ้นรูปภาพแบบง่ายในตัวจะถูกนำมาใช้เพื่อดาวน์โหลดรูปภาพ เพื่อให้แน่ใจว่านักพัฒนาสามารถใช้ความสามารถในการแสดงรูปภาพสุทธิได้
อย่างไรก็ตาม CoorChice ยังคงแนะนำให้นักพัฒนาเลือกเฟรมเวิร์กการโหลดรูปภาพที่ใช้งานอยู่ในปัจจุบัน โดยขึ้นอยู่กับโปรเจ็กต์ และตั้งค่าเป็น SuperTextView เพื่อโหลดรูปภาพ SuperTextView มีความสามารถในการปรับให้เข้ากับกรอบการโหลดรูปภาพใดก็ได้ ด้านล่างนี้ CoorChice จะแสดงวิธีการติดตั้งเฟรมเวิร์กรูปภาพที่มีอยู่ใน SuperTextView ด้วยตัวอย่าง Glide และ Picasso
ใน SuperTextView กลไกการโหลดรูปภาพหลักจะถูกรวมไว้ในอินเทอร์เฟซ Engine และนักพัฒนาจำเป็นต้องติดตั้ง Engine ขึ้นอยู่กับเฟรมรูปภาพที่ใช้
public class GlideEngine implements Engine {
private Context context;
public GlideEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Glide.with(context).load(url).into(new SimpleTarget<GlideDrawable>() {
@Override
public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) {
// mainly through the callback return Drawable object to SuperTextView
callback.onCompleted(resource);
}
});
}
}
public class PicassoEngine implements Engine {
private Context context;
public PicassoEngine(Context context) {
this.context = context;
}
@Override
public void load(String url, final ImageEngine.Callback callback) {
Picasso.with(context).load(url).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// mainly through the callback return Drawable object to SuperTextView
callback.onCompleted(new BitmapDrawable(Resources.getSystem(), bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
}
หลังจากติดตั้ง Engine แล้ว ขั้นตอนต่อไปคือการติดตั้งลงใน SuperTextView
ขอแนะนำให้ติดตั้ง CoorChice ใน onCreate()
ของแอปพลิเคชัน เพื่อที่ว่าเมื่อคุณต้องการใช้ SuperTextView เพื่อโหลดและแสดงภาพสุทธิ คุณสามารถใช้เฟรมเวิร์คการโหลดภาพจากบุคคลที่สามได้
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安装图片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
รหัสหนึ่งบรรทัดสำหรับการติดตั้งง่าย
ควรสังเกตว่าในเวลาใดก็ตาม อินสแตนซ์ Engine หลังการติดตั้งจะแทนที่อินสแตนซ์ Engine ที่ติดตั้งก่อนหน้านี้เสมอ กล่าวคือ SuperTextView อนุญาตให้มีอินสแตนซ์ Engine เพียงตัวเดียวเท่านั้นที่มีอยู่ทั่วโลก
ตอนนี้คุณสามารถให้ SuperTextView โหลดรูปภาพโดยใช้เฟรมเวิร์กการโหลดรูปภาพจากบุคคลที่สามที่ระบุได้
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
ตลอดมา CoorChice มีวิสัยทัศน์และคาดหวังว่าจะสามารถสร้างการควบคุมดังกล่าวได้: สามารถตอบสนองความต้องการในการพัฒนา ข้อความที่แสดง รูปภาพ เรขาคณิต แอนิเมชั่น สถานะส่วนใหญ่ของคุณ เพื่อให้คุณสามารถใช้การควบคุมเพื่อให้มีประสิทธิภาพ เสร็จสมบูรณ์ได้มากที่สุด ของงานพัฒนา มันทรงพลังมาก ราวกับว่ามันเป็นจิตใจ ยอมรับข้อมูลของคุณและนำเสนอภาพที่น่าทึ่งตามความคิดของคุณ ด้วยการมาถึงของ 【SuperTextView v2.0】 เราก็เข้าใกล้แนวคิดนี้ไปอีกก้าวหนึ่ง ตอนนี้มาดู 【 SuperTextView v2.0 】!
ใน 【SuperTextView v2.0】 มีการเพิ่มการรองรับการแสดงรูปภาพแล้ว แต่ไม่ใช่แค่การแสดงรูปภาพเท่านั้น แต่ยังเป็นการฉลาดที่จะครอบตัดรูปภาพตามรูปร่างที่คุณต้องการตามข้อมูลที่คุณป้อน
เพิ่มมุมโค้งมนให้กับรูปภาพ เพิ่มเส้นขอบ หรือทำให้เป็นวงกลมโดยตรง สิ่งที่คุณต้องทำคือตั้งค่าคุณสมบัติง่ายๆ บางประการที่มองเห็นได้ทันทีต่อหน้าต่อตา
จะใช้ SuperTextView เพื่อแสดงรูปภาพได้อย่างไร
เพียงเพิ่มโค้ดสองบรรทัดต่อไปนี้ลงใน xml
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
หากคุณเป็นผู้ใช้ที่ภักดีของ SuperTextView
คุณจะพบว่า state_drawable
ดั้งเดิมสามารถใช้แสดงรูปภาพได้แล้ว
ตอนนี้รูปภาพของคุณอยู่ตรงหน้าแล้ว บางทีคุณอาจต้องการทำสิ่งที่แตกต่างออกไป เช่น เพิ่มมุมโค้งมน หรือกลายเป็นวงกลมโดยตรง ไม่มีปัญหา ตอนนี้ SuperTextView
มีคุณสมบัติครบถ้วนสำหรับงานประเภทนี้แล้ว
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="15dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
ง่ายมาก! บนพื้นฐานของต้นฉบับ คุณจะต้องวาง corner
ให้สมเหตุสมผลเท่านั้น
บางครั้งคุณอาจต้องใช้เส้นขอบเพื่อตัดภาพของคุณ ดังตัวอย่างข้างต้น ถูกต้อง นี่อยู่ภายในขอบเขตของความสามารถของ SuperTextView
แน่นอน
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="50dp"
app:stv_stroke_color="#F4E187"
app:stv_stroke_width="4dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
app:stv_stroke_color
ควบคุมสีของเส้นขอบ และ app:stv_stroke_width
ควบคุมความกว้างของเส้นขอบ ทุกอย่างราบรื่นมาก การควบคุมอัจฉริยะ ควรจะเป็นแบบนี้ใช่ไหม?
เมื่อเผชิญกับการเปลี่ยนแปลงความต้องการที่ซับซ้อน 【SuperTextView】ได้ให้กำเนิดการถอนครั้งที่สองเพื่อจัดการกับความซับซ้อนนี้
state_drawable2
.
ตอนนี้ CoorChice จะแสดงให้คุณเห็นว่าเอฟเฟกต์ทั้งสองในภาพด้านบนถูกนำไปใช้อย่างไร
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
app:stv_corner="50dp"
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
// The configuration of state_drawable2 starts here
app:stv_isShowState2="true"
app:stv_state_drawable2="@drawable/recousers"
app:stv_state_drawable2_mode="rightTop"
app:stv_state_drawable2_height="20dp"
app:stv_state_drawable2_width="20dp"
...
/>
<com.coorchice.library.SuperTextView
android:layout_width="100dp"
android:layout_height="100dp"
...
// background
android:background="@drawable/avatar7"
// The configuration of drawable1 starts here
app:stv_isShowState="true"
app:stv_state_drawable="@drawable/triangle"
app:stv_state_drawable_mode="leftTop"
app:stv_state_drawable_width="20dp"
app:stv_state_drawable_height="20dp"
// The configuration of state_drawable2 starts here
app:stv_isShowState2="true"
app:stv_state_drawable2="@drawable/recousers"
app:stv_state_drawable2_mode="rightTop"
app:stv_state_drawable2_height="20dp"
app:stv_state_drawable2_width="20dp"
...
/>
ดังที่คุณคุ้นเคย state_drawable2
ยังคงการทำงานที่ราบรื่นของรุ่นแรกต่อไป ภายใต้การใช้อัจฉริยะของคุณอย่างชาญฉลาด 【SuperTextView】 จะสามารถเปล่งประกายได้!
ก่อนหน้านี้ การออกแบบ Adjuster
ทำให้ 【SuperTextView】มีจิตวิญญาณและการควบคุมที่ชาญฉลาดยิ่งขึ้น การแทรกกระบวนการวาด การจับภาพเหตุการณ์การสัมผัส ทำให้ง่ายต่อการเปลี่ยนสถานะของการควบคุมจากภายนอก ความคิดสร้างสรรค์เริ่มต้นที่หัวใจและไปที่นี่
ตอนนี้ 【SuperTextView】สามารถรองรับ Adjuster
ได้สูงสุด 3 ตัวในเวลาเดียวกัน! บางทีความคิดสร้างสรรค์ของคุณอาจจะน่าทึ่งมากขึ้น
ในตัวอย่างข้างต้น CoorChice เพิ่มเอฟเฟกต์【Sweep】และเอฟเฟกต์【Move】สองอย่างในช่วงต้นให้กับ 【SuperTextView】 และผลลัพธ์ก็คือสิ่งที่คุณเห็น
Adjuster
เพิ่มเติมหมายถึงการผสมผสานที่มากขึ้นและเซอร์ไพรส์มากขึ้น ใน 【v1.4.0】 CoorChice ยังใช้ Adjuster
เพื่อใช้งานฟังก์ชันเปลี่ยนสีของการกดได้อย่างง่ายดาย
นี่คือยุคของ Adjuster
คุณสามารถใช้มันสร้างสรรค์ได้
setAdjuster(Adjuster)
ดั้งเดิมยังคงอยู่ แต่เวอร์ชันในอนาคตจะถูกลบออก และคุณต้องย้ายข้อมูลโดยเร็วที่สุด ทางเลือกใหม่คือ addAdjuster(Adjuster)
app:stv_shaderMode="leftToRight"
ที่ควบคุมโหมด Shader ด้านขวาคือ app:stv_shaderMode="leftTopRight"
หากคุณใช้คุณสมบัตินี้ โปรดแก้ไขหลังจากอัปเกรด 【SuperTextView v2.0】set/getPressBgColor()
และ set/getPressTextColor()
เพื่อควบคุมสีพื้นหลังในโค้ด คุณเพียงแค่ต้องตั้งค่าคุณสมบัติเหล่านี้ในไฟล์ xml ดังนี้:
# set the background color when you pressed
app:stv_pressBgColor="@color/red"
# set the text color when you pressed
app:stv_pressTextColor="@color/white"
getCorners()
คุณสามารถรับข้อมูลของมุมใน SuperTextView
บางครั้งคุณต้องการใช้วิธีนี้จริงๆ dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
สัมผัสคือการเปลี่ยนแปลง จินตนาการหยุดไม่ได้ ศิลปิน เล่นตามความคิดสร้างสรรค์ของคุณ!
คุณสามารถตั้งค่า Shader Effect ใน xml และคุณสามารถทำได้
app:stv_shaderEnable="true"
// set true to begin shader.
app:stv_shaderStartColor="@color/main_blue"
// set shader start color.
app:stv_shaderEndColor="@color/pink"
// set shader end color.
app:stv_shaderMode="rightToLeft"
// set shader mode. These are four mode:
// topTopBottom, bottomToTop, leftToRight, rightToLeft
แน่นอนว่าคุณสมบัติเหล่านี้สามารถเปลี่ยนแปลงได้โดยวิธี set/get
เช่น:
mSuperTextView.setShaderStartColor(Color.RED);
ขณะนี้ SuperTextView javadoc มีให้แล้ว คุณสามารถดาวน์โหลดได้จากที่นี่ (คลิก index.html
เพื่อเริ่มต้น): SuperTextView javadoc:http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?attname=
วิธีใช้ SuperTextView 1.3 ใน build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.3'
}
mSuperTextView.setAdjuster(new MoveEffectAdjuster())
.setAutoAdjust(true)
.startAnim();
คุณสมบัติ SuperTextView สามารถตั้งค่าใน XML ได้อย่างง่ายดาย และคุณสามารถเห็นผลได้ทันที เช่นเดียวกับการใช้ TextView
<SuperTextView
android:layout_width="50dp"
android:layout_height="50dp"
//Set Corner.
//If you want to get a circle, you just need to set the value of half of width.
app:stv_corner="25dp"
//Corner of left-top
app:stv_left_top_corner="true"
//Corner of right-top
app:stv_right_top_corner="true"
//Corner of left-bottom
app:stv_left_bottom_corner="true"
//Corner of right-bottom
app:stv_right_bottom_corner="true"
//Fill color
app:stv_solid="@color/red"
//Stroke color
app:stv_stroke_color="@color/black"
//Stroke width
app:stv_stroke_width="2dp"
//Set a state drawbale
//The default size is half of the SuperTextView.
app:stv_state_drawable="@drawable/emoji"
//The mode of the state drawable. Optional values:
// left、top、right、bottom、center(Default)、
//leftTop、rightTop、leftBottom、rightBottom、
//fill(Fill the SuperTextView. In this case, set state drawable size will not work.)
app:stv_state_drawable_mode="center"
//state drawable height
app:stv_state_drawable_height="30dp"
//state drawable width
app:stv_state_drawable_width="30dp"
//The padding of the left, it base on the value of state_drawable_mode.
app:stv_state_drawable_padding_left="10dp"
//The padding of the top, it base on the value of state_drawable_mode.
app:stv_state_drawable_padding_top="10dp"
//boolean. Whether to show the state drawble.
app:stv_isShowState="true"
//Whether to use the Stroke Text Function.
//Attention, Once you opne this function, setTextColor() will not work.
//That means you must to uses text_fill_color to set text color.
app:stv_text_stroke="true"
// Text stroke color. The default value is Color.BLACK.
app:stv_text_stroke_color="@color/black"
// Stroke text width.
app:stv_text_stroke_width="1dp"
// Stroke text color. The default value is Color.BLACK.
app:stv_text_fill_color="@color/blue"
//boolean. Whether to use the Adjuster Function.
//Use this function to do what you want to do.
//If open this function, but you haven't implemented your Adjuster, the DefaultAdjuster will be used.
//The DefaultAdjuster can auto adjust text size.
app:stv_autoAdjust="true"
/>
คุณสมบัติทั้งหมดสามารถตั้งค่าได้ในจาวา คุณสามารถรับคุณค่าของมันได้เช่นกัน เช่น:
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
โดยปกติแล้ว คุณจะต้องเขียนและจัดการไฟล์จำนวนมากเพื่อใช้เอฟเฟกต์ของแผนภูมิด้านบน แต่ตอนนี้ คุณสามารถทำสิ่งนี้ได้ง่ายๆ ใน XML
แตกต่างจาก Corner ทั่วไป SuperTextView สามารถรองรับการควบคุมตำแหน่งของมุมได้อย่างแม่นยำ หนึ่ง สอง สาม อะไรก็ได้ที่คุณต้องการ
ใช้ข้อความ Stroke ได้อย่างง่ายดาย!
แตกต่างจากสถานะทั่วไปที่ถอนได้ SuperTextView รองรับตัวเลือกการควบคุมที่แม่นยำยิ่งขึ้น คุณสามารถตั้งค่าสถานะที่สามารถถอนออกได้อย่างง่ายดาย เพียงใช้แอตทริบิวต์เดียว
Adjuster ได้รับการออกแบบมาเพื่อแทรกตัวเลือกบางอย่างในกระบวนการวาดของ SuperTextView มันมีความรู้สึกที่สำคัญมาก เช่น DefaultAdjuster สามารถปรับขนาดข้อความอัตโนมัติก่อนที่จะวาดข้อความ แน่นอนว่าคุณสามารถใช้มันทำอะไรก็ได้
หากคุณต้องการใช้ Adjuster คุณต้องเรียกใช้ SuperTextView.setAutoAdjust(true)
แน่นอน คุณสามารถเรียกใช้ SuperTextView.setAutoAdjust(false)
เพื่อหยุดการทำงานได้ตลอดเวลา คุณควรเรียกใช้วิธีการเหล่านี้อย่างระมัดระวัง เพราะเมื่อคุณเรียกใช้ SuperTextView.setAutoAdjust(true)
แต่ไม่ได้ตั้งค่า Adjuster มาก่อน DefaultAdjuster จะถูกนำมาใช้ทันทีจนกว่าคุณจะตั้งค่า Adjuster ด้วยตัวเอง
หากต้องการใช้ Adjuster คุณต้องขยาย SuperTextView.Adjuster และใช้วิธี adjust(SuperTextView v, Canvas canvas)
Adjuster.adjust() จะถูกเรียกใช้ทุกครั้งที่การจับฉลากเกิดขึ้น ซึ่งหมายความว่าคุณสามารถแทรกแซงกระบวนการวาดจากภายนอกได้
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
ข้อควรสนใจ หากคุณเริ่มสร้างแอนิเมชั่น คุณต้องระมัดระวังอย่างมากในการเขียนโค้ดใน adjuster() เพราะแอนิเมชั่นจะวาดที่ 60fps/s นั่นหมายความว่าเมธอดนี้จะถูกเรียกใช้ 60 ครั้งในหนึ่งวินาที! ดังนั้น อย่าสร้างอ็อบเจ็กต์ใหม่ในเมธอดนี้ มิฉะนั้นแอปของคุณจะได้รับความล่าช้าอย่างมาก! เพราะมันจะทำให้【Memory Thrashing】และ GC เกิดขึ้นบ่อยครั้ง เกี่ยวกับเหตุผลโดยละเอียด คุณสามารถดูบทความสองบทความของฉัน:
หากคุณแทนที่เมธอด onTouch(SuperTextView v, MotionEvent event)
ของ Adjuster คุณจะได้รับเหตุการณ์การสัมผัสของ SuperTextView สิ่งสำคัญมากคือต้องได้รับชุดเหตุการณ์การสัมผัสของ SuperTextView เพื่อจัดการ และคุณต้องคืนค่าจริงใน onTouch()
มิฉะนั้นคุณจะได้รับเหตุการณ์ ACTION_DOWN ไม่ใช่โฟลว์ของเหตุการณ์
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
@Override
public boolean onTouch(SuperTextView v, MotionEvent event) {
//you can get the touch event.
//If want to get a series of touch event, you must return true here.
}
}
เนื่องจาก SuperTextView เป็นตัวขับเคลื่อนแอนิเมชั่นในตัว คุณสามารถใช้ Adjuster เพื่อสร้างเอฟเฟกต์ที่ไม่น่าเชื่อได้ สิ่งที่คุณต้องทำทั้งหมดคือเรียกใช้ startAnim()
และ stopAnim()
เพื่อเริ่มหรือหยุดแอนิเมชันหลังจากที่ Adjuster ของคุณจดบันทึก
อย่างที่คุณเห็น Adjuster ปรับใช้เอฟเฟกต์ที่สวยงามเหล่านี้ การออกแบบ ปลั๊กอินแบบดึง นี้ทำให้คุณสามารถใช้ Adjuster ใหม่ใน SuperTextView ได้ตลอดเวลา คุณเพียงแค่ต้องสร้าง Adjuster ใหม่ จากนั้นเรียกใช้ setAdjuster()
@Alex_Cin
หวังว่าจะได้เห็น Ripple Effect ดังนั้นใน RippleAdjuster.java
ฉันได้แสดงวิธีใช้ Adjuster กับ Animation Driven เพื่อใช้ Ripple Effect 【ลิงก์ RippleAdjuster.java:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java 】
ดูสิ คุณสามารถใช้ Ripple Effect ของคุณได้
ตัวปรับ ได้รับการออกแบบมาอย่างดีสำหรับฟังก์ชันลำดับชั้น คุณเรียกใช้ Adjuster.setOpportunity(Opportunity opportunity)
เพื่อตั้งค่าลำดับชั้นของ Adjuster ของคุณใน SuperTextView
ใน SuperTextView ลำดับชั้นจากล่างขึ้นบนแบ่งออกเป็น:ลำดับชั้นพื้นหลัง、ลำดับชั้นที่วาดได้、ลำดับชั้นข้อความ คุณสามารถใช้โอกาสเพื่อกำหนดลำดับชั้นของ Adjuster ของคุณให้เป็นเลเยอร์ที่คุณต้องการได้
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
แผนภูมิโอกาส
ค่าเริ่มต้นคือ Opportunity.BEFORE_TEXT
เช่นเดียวกับแผนภูมิที่สอง
ในความเป็นจริง SuperTextView เหมือนผืนผ้าใบและคุณสามารถวาดความคิดสร้างสรรค์ของคุณลงไปได้ มันทำให้คุณบังคับในการสร้างสรรค์ และคุณไม่จำเป็นต้องเขียนโค้ดที่ไร้ประโยชน์เหล่านี้
ตอนนี้คุณสามารถเริ่มใช้ SuperTextView ได้แล้ว
- ถ้าคุณชอบ SuperTextView ฉันขอบคุณที่ไปที่ Github เพื่อให้ ดาว กับฉัน ? -
- นอกจากนี้ CoorChice จะแบ่งปันสินค้าแห้งบนแพลตฟอร์มบล็อกเป็นครั้งคราว รวมถึง เทคโนโลยีที่เกี่ยวข้องกับ Android , การเรียนรู้ของเครื่อง , อัลกอริธึม , เทคโนโลยีใหม่ และ ** ข้อมูลเชิงลึกและความคิดบางส่วนเกี่ยวกับการพัฒนาและปรับปรุงส่วนบุคคล ** ไปที่ 【หน้าแรกส่วนตัว】 ของ CoorChice เพื่อติดตามฉัน
- กลุ่ม SuperTextView QQ: 775951525
Copyright 2017 CoorChice
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.