GitAds
Hai, Pengembang, Selamat datang menggunakan SuperTextView !
Terima kasih dan puluhan ribu pengembang Android atas kepercayaan Anda kepada saya?。
SuperTextView berbeda karena hanya elemen tampilan sederhana, namun bukan sekadar tampilan.
Ini hidup dan dinamis, dengan logika tertanam yang kuat yang terus memberi Anda dukungan pengembangan yang kaya namun sangat sederhana.
SuperTextView menyelamatkan Anda dari logika rendering yang rumit. Panggilan metode API sederhana, efek rendering yang memukau tersedia secara instan.
Anda tinggal menikmati efek visual luar biasa yang Anda tulis, dan sisanya akan diserahkan ke SuperTextView .
? klik di sini (atau pindai kode qr di bawah) untuk mengunduh Demo
【Portal】:《Dokumen Referensi Pengembangan SuperTextView》- Anda dapat mempelajari cara menggunakan SuperTextView untuk membangun aplikasi Anda dengan lebih efisien
【Portal】:《Dokumen API SuperTextView》— Anda dapat melihat semua api dan properti SuperTextView yang tersedia
Tambahkan di build.gradle Anda:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
Kode versi rilis terbaru dapat ditemukan di sini.
dukungan v3.2.6 : armeabi-v7a
dukungan v3.2.6.64 : armeabi-v7a
, arm64-v8a
dukungan v3.2.6.99 : armeabi-v7a
, arm64-v8a
, x86
proguard-rules.pro
harap tambahkan -keep class com.coorchice.library.gifdecoder.JNI { *; }
Dalam XML, gunakan 'Gambar Jaringan' sebagai gambar latar belakang
< 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 " />
Dalam XML, atur 'Network Image' untuk 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
tidak validPerbaiki Drawable langsung menulis nilai warna heksadesimal, tidak menampilkan masalah
Dukungan Drawable untuk lapisan tertentu
<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"
...
/>
Modus dukungan:
- `beforeText`,Before the text
- `afterText`,After the text
Java memiliki fungsi terkait untuk mendukung konfigurasi dinamis.
Masalah pembatalan validasi sakelar scaleType mode skala saat memperbaiki Drawable1 sebagai gambar latar belakang
Optimalkan goresan teks
Optimalkan tampilan gif transparan
Di versi v3.2.0
yang baru, SuperTextView mendefinisikan ulang dirinya lagi. Pengembang, lihatlah kejutan yang disiapkan untuk Anda!???
Kali ini, SuperTextView menghadirkan dukungan driver Gif yang kuat untuk pengembang.
Jika di masa lalu, Anda merasa kesal tentang cara menampilkan bagan Gif di platform Android, atau Anda terjebak dalam jurang kinerja beberapa perpustakaan Gif tiga pihak. Namun sekarang, SuperTextView akan mengubah situasi ini sepenuhnya.
Gif dan SuperTextView bersifat alami dan alami, sehingga Anda dapat menampilkan diagram Gif dengan cara yang paling familiar dan alami. Sesederhana menampilkan gambar normal seperti biasa.
Berkat kinerja c/c++ yang sangat tinggi dan pengoperasian memori yang presisi. SuperTextView Menyesuaikan mesin driver Gif yang kuat untuk platform seluler dengan menggunakan c/c++ .
Mesin Gif SuperTextView , yang secara akurat dapat memanipulasi memori piksel gambar, hanya memperbarui memori piksel lokal ketika bingkai gambar Gif disegarkan, yang membuat efisiensi rendering gambar Gif Mendapat lompatan kualitatif.
Melalui teknologi rendering di luar layar asinkron, SuperTextView dapat memastikan antarmuka aplikasi yang halus dan mulus serta kecepatan respons yang sensitif bahkan saat menampilkan gambar Gif berukuran besar.
Pada Demo di atas, menggunakan SuperTextView menampilkan gambar Gif dengan gambar 265 frame, namun antarmuka pengguna masih sangat mulus.
Tampilkan diagram Gif di SuperTextView , sangat mudah!
Anda dapat mengonfigurasinya langsung di dokumen tata letak XML atau menambahkannya ke kode Anda.
<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" />
Anda dapat menampilkan diagram Gif untuk konfigurasi SuperTextView seperti mengkonfigurasi gambar normal.
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
Sesederhana dan sealami itu, SuperTextView memungkinkan pengembang menampilkan diagram Gif tanpa disadari.
Dalam logika kernel SuperTextView , SuperTextView dengan cerdas mengklasifikasikan grafik normal dan grafik Gif , lalu memproses dan mengoptimalkannya.
Bagaimana jika Gif Anda bukan lokal tetapi di cloud?
Anda tidak perlu khawatir! Semuanya diserahkan kepada SuperTextView .
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
Hanya dengan satu baris kode, SuperTextView akan membantu Anda di latar belakang untuk memuat gambar Gif dan kemudian memproses rendering ke layar.
Faktanya, bit tampilan gambar Drawable1 dan Drawable2 dari SuperTextView dapat digunakan untuk menampilkan gambar Gif . Singkatnya, semuanya adalah apa yang Anda kenal.
SuperTextView tidak hanya menampilkan Gif , tetapi Anda juga dapat mengontrol lebih banyak detail.
Anda dapat mengontrol Gif , memutar, atau menjeda kapan saja.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
Di SuperTextView , Anda selalu dapat menjangkau gambar dari bingkai yang Anda tentukan, serta gambar yang dapat diekstraksi ke bingkai yang ditentukan.
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);
}
Karena SuperTextView dapat mendukung perenderan tambahan lokal, jika Gif Anda mendukung mode perenderan ini, itu berarti Anda mungkin perlu mengaktifkan ** mode ketat dengan memanggil
gifDrawable.setStrict(true)
, untuk memastikan bahwa lompatan bingkai atau gambar ekstraksi bingkai sudah benar. Ini bisa memakan waktu lama, jadi Anda harus mencoba melakukan operasi dalam ** mode ketat * di thread asinkron.
SuperTextView memungkinkan Anda mengubah kecepatan pemutaran bagan Gif sesuka hati.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Set the frame playback interval, 20 ms
gifDrawable.setFrameDuration(20);
}
Dengan SuperTextView Anda dapat melihat sekilas informasi Gif .
Dapatkan ukuran Gif
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
Dapatkan informasi bingkai 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 ** dan ** Gif ** dirender berdasarkan integrasi yang mulus, setelah ** Drawable1 ** dan ** Drawable2 ** semua item konfigurasi di tampilan ** Gif ** Gambar juga dapat mulai berlaku.
app:stv_state_drawable_rotate="90"
Mari kita lihat apa yang terjadi dengan Gif di posisi Drawable asli.
<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"/>
Efeknya adalah...
Sekarang mari kita coba Gif memutar 90 derajat.
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
SuperTextView implementasi luar biasa Gif Fillet grafik membuka pintu baru bagi pengembang.
Namun, realisasi dari efek ini sangatlah sederhana.
<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" />
Pengembang bahkan dapat dengan mudah menambahkan batas ke 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"/>
Efeknya langsung disajikan...
Di masa lalu, beberapa dinamika yang menarik sering kali berhenti pada kompleksitas dan biaya implementasi. Dan SuperTextView memberi Anda lebih banyak kemungkinan, dan inspirasi Anda bisa gratis.
Misalnya, penerapan avatar dinamis akan lebih sederhana dari sebelumnya.
<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"
/>
Dalam kode tersebut, Anda dapat mengonfigurasi avatar dinamis web secara langsung.
stv.setUrlImage("http://gif_avatar.gif");
Dalam versi baru SuperTextView , Drawable1 dan Drawable2 diberikan kemampuan baru - dukungan untuk klik yang tepat.
SuperTextView Dengan memantau lokasi terjadinya aksi klik, aksi klik dapat ditempatkan secara akurat di area terjadinya ( Drawable1 , Drawable2 atau Other area ), lalu memicu callback Listening yang sesuai.
Anda dapat mengatur pemroses tindakan klik pada Drawable untuk SuperTextView untuk membuat respons yang akurat ketika suatu tindakan terjadi.
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...
}
});
Sekarang, saat Anda menggunakan Drawable1 sebagai gambar latar belakang, Anda dapat mengonfigurasi mode zoom yang berbeda untuk mendapatkan efek favorit Anda.
stv.setScaleType(ScaleType.CENTER);
SuperTextView memberi pengembang hingga 3 mode zoom:
ScaleType.FIT_XY
Regangkan gambar menjadi ubin.
ScaleType.FIT_CENTER
Pusatkan gambar secara adaptif.
ScaleType.CENTER
Pangkas gambar di tengah. Default.
Dalam dokumen tata letak XML , Drawable1 dan Drawable2 kini mendukung pengaturan langsung warna atau 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"
Kinerja rendering setidaknya 30% lebih baik dibandingkan sebelumnya.
Tingkatkan mesin pemuatan gambar default untuk mendukung caching cerdas. Mungkin saat ini, Anda tidak perlu memperkenalkan perpustakaan pemuatan gambar pihak ketiga.
SuperTextView dibuat untuk membantu pengembang Android mengembangkan aplikasi Android dengan lebih efisien, nyaman, dan elegan.
Kini bonafiditasnya kembali meningkat. SuperTextView baru akan membuka lebih banyak kemungkinan bagi pengembang Android, dan, seperti biasa, SuperTextView akan menghadirkan fitur yang lebih efisien.
Pembaruan pada SuperTextView ini menambahkan kemampuan pewarnaan yang ajaib dan kuat pada StateDrawable . Pengembang dapat dengan mudah mengubah warna ikon tanpa harus menambahkan ikon warna berbeda ke proyek. Teknologi ini akan memberikan kesempatan pada aplikasi Android Anda untuk mengecil.
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
Dengan sebaris kode sederhana, Anda dapat langsung memberikan gambar kemampuan untuk berubah. Tentu saja, warna apa pun yang Anda inginkan terserah Anda. Semua ini terjadi tanpa perlu memperkenalkan gambaran lain.
Dalam kode Java, terdapat fungsi set / get yang sesuai, sehingga pengembang dapat memberikan sihir kapan saja, mengubah warna gambar.
Peningkatan StateDrawable lebih dari sekadar transformasi warna. SuperTextView telah diberikan kemampuan untuk mengubah bentuk StateDrawable. Dengan gambaran yang sama, pengembang dapat menggabungkan kemungkinan yang tak terbatas.
Dengan beberapa baris kode, Anda dapat mengubah gambar apa pun sesuai keinginan.
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
Tidak perlu kode yang rumit, SuperTextView sesederhana dan elegan seperti biasanya.
Demikian pula, dalam kode Java, fungsi set/get yang sesuai juga disediakan.
Kemampuan ini secara efektif dapat membantu pengembang memampatkan volume aplikasi Android secara ekstrim.
Ini adalah teks gradien!
Apa yang ditawarkan SuperTextView mungkin merupakan solusi paling sederhana dan elegan untuk mengimplementasikan teks gradien sejauh ini. Dengan konfigurasi sederhana, Anda dapat mencapai efek teks gradien yang keren.
# 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"
Properti ini juga menyediakan antarmuka set/get di Java, sehingga memudahkan pengembang untuk memodifikasinya kapan saja.
Adjuster menambahkan dua fungsi baru:
onAttach()
: ketika Adjuster diatur ke SuperTextView akan dipanggil.onDetach()
: ketika Adjuster dihapus dari SuperTextView akan dipanggil.Dengan menulis ulang kedua fungsi ini di Adjuster, pengembang dapat melakukan registrasi status, inisialisasi, pembatalan registrasi, pelepasan sumber daya, dan operasi lainnya pada waktu yang tepat.
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
}
}
Fungsi ini memungkinkan pengembang untuk mendapatkan semua Adjuster di SuperTextView . Jika tidak ada Adjuster di SuperTextView , maka akan menghasilkan null.
Semua properti SuperTextView sekarang diawali dengan stv_
.
Hal ini menghindari konflik dengan nama properti yang mungkin dihasilkan SuperTextView ketika perpustakaan pihak ketiga lainnya diperkenalkan oleh pengembang.
Jika pengembang saat ini menggunakan SuperTextView versi sebelumnya, maka setelah memutakhirkan ke versi baru, Anda perlu mengawali atribut di semua xml dengan awalan stv_
.
app:corner="10dp"
corner adalah nama atribut di versi lama. Setelah memutakhirkan ke versi baru, Anda perlu menambahkan awalan stv_
di depan dan menjadi stv_corner
.
Jika pengembang menggunakan AndroidStudio , buka dialog penggantian massal dari Edit > Find > Replace
dan ikuti petunjuk di bawah.
Jika hanya SuperTextView yang menggunakan namespace yang sama (seperti app
) di proyek pengembang, untungnya, Anda cukup mengganti app:
dengan app:stv_
.
Dimulai dengan SuperTextView v2.0, fungsi setAdjuster(Adjuster)
ditandai agar statusnya dihapus, dan fungsi baru addAdjuster(Adjuster)
ditambahkan sebagai gantinya.
Di versi baru, fungsi setAdjuster(Adjuster)
akan dihapus secara resmi. Jika pengembang pernah menggunakan cara ini sebelumnya, silakan ubah menjadi addAdjuster(Adjuster)
.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
Saat ini, SuperTextView memiliki serangkaian fitur umum seperti fillet, batas, guratan, perubahan warna pers, diagram multi-status, plot fillet, Adjuster serbaguna, memuat gambar bersih, dan banyak lagi. Berkat ini, pengembang dapat dengan mudah mencapai berbagai efek yang sangat rumit, menghemat banyak waktu pengembangan, secara efektif mengurangi kompleksitas halaman, mengurangi biaya pemeliharaan proyek.
Tulis kodenya, pasti menyenangkan!
Beberapa bulan yang lalu, banyak pengembang telah menyarankan kepada CoorChice apakah mungkin untuk memiliki SuperTextView dengan kemampuan memuat gambar bersih. Faktanya, CoorChice juga telah dipertimbangkan sejak lama, namun pada masa-masa awal SuperTextView , menyempurnakan fungsi intinya masih menjadi tujuan utama, sehingga belum terlibat dalam fungsi terkait gambar.
Hingga versi besar terakhir, SuperTextView v2.0, CoorChie mencoba menambahkan fungsi tampilan gambar. Hal ini memungkinkan cakupan SuperTextView diperluas, serta kemampuan untuk menambahkan goresan, sudut membulat, dan diagram keadaan ke gambar. Dokumentasi terkait dapat dilihat pada tautan berikut:
【Halo, SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
Kali ini, saya mendapat respon yang baik dari para pengembang. Semua orang menantikan penggunaan SuperTextView untuk menampilkan dan memproses gambar. Setelah rilis terakhir, pengembang tampaknya lebih tertarik pada SuperTextView yang dapat menampilkan gambar bersih.
Jadi, sekarang, SuperTextView yang telah lama ditunggu-tunggu telah hadir kembali!
Untuk menampilkan gambar bersih, Anda hanya memerlukan kode berikut di SuperTextView :
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
Efeknya sama seperti contoh kedua menampilkan avatar pada gambar di atas.
Jika Anda ingin menampilkan gambar bersih sebagai StateDrawable dari SuperTextView , tidak masalah.
// fill in the picture Url
stv_1.setUrlImage(url, false);
Parameter kedua adalah false untuk menunjukkan bahwa gambar bersih tidak akan diisi dengan seluruh SuperTextView sebagai latar belakang, tetapi sebagai diagram keadaan. Tentu saja, segala sesuatu tentang diagram keadaan akan digunakan di sini. Seperti pada contoh pertama di atas, seluruh tata letak, termasuk gambar, teks, dan latar belakang, diproses dalam SuperTextView , dan gambar yang diunduh dari internet ditempatkan sebagai StateDrawable di tempatnya.
SuperTextView Untuk menjaga perpustakaan bergantung pada kemurnian dan ukuran sekecil mungkin, tidak ada kerangka pemuatan gambar bawaan. Jadi secara default, mesin gambar sederhana yang ada di dalamnya akan digunakan untuk mengunduh gambar, untuk memastikan bahwa pengembang dapat menggunakan kemampuan untuk menampilkan gambar bersih.
Namun, CoorChice tetap menyarankan agar pengembang memilih kerangka pemuatan gambar yang sedang digunakan, bergantung pada proyeknya, dan mengaturnya ke SuperTextView untuk memuat gambar. SuperTextView memiliki kemampuan untuk beradaptasi dengan kerangka pemuatan gambar apa pun. Di bawah CoorChice akan menunjukkan kepada Anda cara memasang kerangka gambar yang ada ke dalam SuperTextView dengan contoh Glide dan Picasso.
Di SuperTextView , mesin pemuatan gambar inti diabstraksi ke dalam antarmuka Engine , dan pengembang perlu mengimplementasikan Engine bergantung pada bingkai gambar yang digunakan.
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) {
}
});
}
}
Setelah mengimplementasikan Engine , langkah selanjutnya adalah menginstalnya ke SuperTextView .
CoorChice disarankan untuk menginstal di onCreate()
aplikasi, sehingga ketika Anda perlu menggunakan SuperTextView untuk memuat dan menampilkan gambar bersih, Anda dapat menggunakan kerangka pemuatan gambar tiga pihak.
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安装图片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
Satu baris kode untuk kemudahan instalasi.
Perlu dicatat bahwa setiap saat, instance Engine pasca-instal akan selalu menggantikan instance Engine yang diinstal sebelumnya, yaitu SuperTextView hanya mengizinkan satu instance Engine ada secara global.
Sekarang Anda dapat membuat SuperTextView memuat gambar menggunakan kerangka pemuatan gambar tiga pihak yang ditentukan.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
Selama ini, CoorChice memiliki visi dan berharap untuk dapat membuat kontrol seperti itu: dapat memenuhi sebagian besar kebutuhan pengembangan Anda, menampilkan teks, gambar, geometri, animasi, status, sehingga Anda dapat menggunakan kontrol agar efisien. Lengkapi sebagian besar dari pekerjaan pembangunan. Saking kuatnya, seolah-olah berpikiran mental, menerima masukan Anda, dan menyajikan gambaran menakjubkan sesuai pikiran Anda. Dengan hadirnya 【SuperTextView v2.0】, kami selangkah lebih dekat dengan ide ini. Sekarang, datang dan lihat 【SuperTextView v2.0】!
Di 【SuperTextView v2.0】, dukungan untuk tampilan gambar telah ditambahkan. Namun ini bukan hanya tentang menampilkan gambar, tetapi juga cerdas dalam memotong gambar ke bentuk yang Anda inginkan berdasarkan masukan Anda.
Tambahkan sudut membulat pada gambar, tambahkan batas, atau ubah langsung menjadi lingkaran. Yang perlu Anda lakukan hanyalah mengatur beberapa properti sederhana yang langsung terlihat di depan mata Anda.
Bagaimana cara menggunakan SuperTextView untuk menampilkan gambar?
Cukup tambahkan dua baris kode berikut ke xml.
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
Jika Anda adalah pengguna setia SuperTextView
, Anda akan menemukan bahwa state_drawable
asli kini dapat digunakan untuk menampilkan gambar.
Sekarang gambar Anda ada di depan Anda, mungkin Anda ingin melakukan sesuatu yang berbeda, misalnya menambahkan sudut membulat, atau langsung menjadi lingkaran? Tidak masalah, SuperTextView
sekarang sepenuhnya memenuhi syarat untuk pekerjaan semacam ini.
<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"
...
/>
Sangat Mudah! Berdasarkan aslinya Anda hanya perlu mengatur corner
yang masuk akal.
Terkadang Anda mungkin perlu menggunakan pembatas untuk membungkus gambar Anda, seperti pada contoh di atas. Benar sekali, ini jelas berada dalam cakupan kemampuan 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
mengontrol warna batas, dan app:stv_stroke_width
mengontrol lebar batas. Semuanya lancar sekali, kontrol yang cerdas seharusnya seperti ini, bukan?
Dalam menghadapi perubahan permintaan yang kompleks, 【SuperTextView】 melahirkan drawable kedua untuk mengatasi kompleksitas ini.
state_drawable2
.
Sekarang, CoorChice akan menunjukkan kepada Anda bagaimana kedua efek pada gambar di atas diterapkan.
<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"
...
/>
Seperti yang Anda ketahui, state_drawable2
melanjutkan semua kelancaran operasi generasi pertama. Di bawah penggunaan kecerdasan Anda secara bijak, 【SuperTextView】 akan mampu bersinar!
Sebelumnya, desain Adjuster
menjadikan 【SuperTextView】 jiwa dan kontrol yang lebih cerdas. Penyisipan proses menggambar, penangkapan peristiwa sentuhan, memudahkan untuk mengubah keadaan kontrol dari luar. Kreativitas dimulai dari hati dan mengarah ke sini.
Sekarang, 【SuperTextView】dapat membawa hingga 3 Adjuster
secara bersamaan! Mungkin kreativitas Anda akan lebih mempesona.
Dalam contoh di atas, CoorChice menambahkan dua efek awal 【Sweep】 dan 【Move】 ke 【SuperTextView】, dan hasilnya adalah apa yang Anda lihat.
Lebih banyak Adjuster
berarti lebih banyak kombinasi dan lebih banyak kejutan. Di 【v1.4.0】, CoorChice juga menggunakan Adjuster
untuk mengimplementasikan fungsi perubahan warna pers dengan mudah.
Ini eranya Adjuster
, Anda bisa memanfaatkannya untuk berkreasi.
setAdjuster(Adjuster)
asli masih dipertahankan, tetapi versi mendatang akan dihapus dan Anda harus bermigrasi sesegera mungkin. Alternatif baru adalah addAdjuster(Adjuster)
.
app:stv_shaderMode="leftToRight"
yang mengontrol mode Shader. Yang kanan adalah app:stv_shaderMode="leftTopRight"
. Jika Anda menggunakan properti ini, harap perbaiki setelah memutakhirkan 【SuperTextView v2.0】.set/getPressBgColor()
dan set/getPressTextColor()
untuk mengontrol warna latar belakang dalam kode. Anda hanya perlu mengatur properti ini pada file xml seperti ini:
# 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()
. Anda bisa mendapatkan informasi sudut di SuperTextView
, terkadang Anda sangat ingin menggunakan metode ini. dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
Sebuah sentuhan yakni perubahan, imajinasi tak dapat dihentikan. Artis, mainkan kreativitasmu!
Anda dapat mengatur Efek Shader di xml, dan Anda bisa。
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
Tentu saja, properti ini dapat diubah dengan metode set/get
. misalnya:
mSuperTextView.setShaderStartColor(Color.RED);
Sekarang, javadoc SuperTextView telah disediakan, Anda dapat mengunduhnya dari sini(klik index.html
untuk memulai): SuperTextView javadoc:http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?namaatt=
cara menggunakan SuperTextView 1.3 di build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.3'
}
mSuperTextView.setAdjuster(new MoveEffectAdjuster())
.setAutoAdjust(true)
.startAnim();
Properti SuperTextView dapat diatur dalam XML dengan mudah, dan Anda dapat langsung melihat efeknya. Sama seperti menggunakan 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"
/>
Semua atribut dapat diatur di java. Anda juga bisa mendapatkan nilainya. misalnya:
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
Biasanya, Anda harus menulis dan mengelola banyak file untuk menerapkan efek bagan di atas. Namun sekarang, Anda dapat dengan mudah melakukan ini di XML.
Berbeda dari Corner pada umumnya, SuperTextView dapat mendukung kontrol lokasi sudut secara tepat. Satu, dua, tiga, apa pun yang Anda inginkan.
Gunakan teks Stroke dengan sangat mudah!
Berbeda dari drawable keadaan umum, SuperTextView mendukung opsi kontrol yang lebih presisi. Anda dapat dengan mudah mengatur status drawable, hanya dengan menggunakan satu atribut.
Adjuster dirancang untuk menyisipkan beberapa opsi dalam proses menggambar SuperTextView . Ini mempunyai arti yang sangat penting. misalnya DefaultAdjuster dapat menyesuaikan ukuran teks secara otomatis sebelum teks digambar. Tentu saja, Anda dapat menggunakannya untuk melakukan apa saja.
Jika Anda ingin menggunakan Adjuster, Anda harus memanggil SuperTextView.setAutoAdjust(true)
. Tentu saja, Anda dapat memanggil SuperTextView.setAutoAdjust(false)
untuk menghentikannya kapan saja. Anda harus menggunakan metode ini dengan hati-hati. Sebab, setelah Anda memanggil SuperTextView.setAutoAdjust(true)
, namun tidak menyetel Adjuster Anda sebelumnya, DefaultAdjuster akan langsung digunakan. Hingga Anda menyetel sendiri Adjuster.
Untuk mengimplementasikan Adjuster, Anda perlu memperluas SuperTextView.Adjuster, dan mengimplementasikan metode adjust(SuperTextView v, Canvas canvas)
. Adjuster.adjust() akan dipanggil setiap kali pengundian terjadi, itu berarti Anda dapat mengintervensi proses pengundian di luar.
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
Perhatian, jika Anda memulai animasi, Anda harus sangat berhati-hati dalam menulis kode di adjuster(). Karena animasinya akan digambar 60fps/s. Artinya, metode ini akan dipanggil 60 kali dalam satu detik! Jadi, jangan membuat objek baru dalam metode ini. Jika tidak, aplikasi Anda akan mengalami kelambatan yang besar! Karena akan menyebabkan 【Memory Thrashing】, dan GC sering terjadi. Mengenai alasan detailnya, Anda dapat melihat dua artikel saya ini:
Jika Anda mengganti metode onTouch(SuperTextView v, MotionEvent event)
dari Adjuster, Anda akan mendapatkan event touch dari SuperTextView . Sangat penting untuk menangani serangkaian peristiwa sentuh SuperTextView . Dan Anda harus mengembalikan nilai true di onTouch()
, Jika tidak, Anda hanya akan mendapatkan acara ACTION_DOWN, bukan alur acara.
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.
}
}
Karena SuperTextView didorong oleh animasi bawaan, Anda dapat menggunakan Adjuster untuk mengimplementasikan efek yang luar biasa. Yang perlu Anda lakukan hanyalah memanggil startAnim()
dan stopAnim()
untuk memulai atau menghentikan animasi setelah Adjuster Anda menulis.
Seperti yang Anda lihat, efek indah ini diterapkan oleh Adjuster. Desain plugin tarik ini membuat Anda dapat menggunakan Adjuster baru di SuperTextView kapan saja. Anda hanya perlu membuat Adjuster baru, lalu memanggil setAdjuster()
.
@Alex_Cin
berharap dapat melihat Efek Ripple, jadi di RippleAdjuster.java
, saya telah menunjukkan cara menggunakan Adjuster dengan Animation Driven untuk mengimplementasikan Efek Ripple. 【Tautan RippleAdjuster.java:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
Lihat, Anda dapat menerapkan Efek Ripple Anda.
Adjuster dengan manis merancang fungsi hierarki. Anda memanggil Adjuster.setOpportunity(Opportunity opportunity)
untuk mengatur hierarki Adjuster Anda di SuperTextView .
Di SuperTextView , hierarki dari bawah ke atas dibagi menjadi: Hierarki Latar Belakang, Hirarki Drawable, Hierarki Teks. Anda dapat menggunakan Peluang untuk mengatur hierarki Adjuster Anda ke lapisan yang Anda inginkan.
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
Bagan peluang.
Nilai defaultnya adalah Opportunity.BEFORE_TEXT
. Seperti grafik kedua.
Faktanya, SuperTextView seperti kanvas, dan Anda dapat menggambar materi iklan Anda di atasnya. Itu membuat Anda memaksakan diri untuk berkreasi, dan Anda tidak perlu menulis kode yang tidak berguna ini.
Sekarang Anda dapat mulai menggunakan SuperTextView .
- Jika Anda menyukai SuperTextView , saya berterima kasih kepada Github untuk memberi saya bintang ? !
- Selain itu, CoorChice sesekali akan berbagi barang-barang kering di platform blog, termasuk teknologi terkait Android , pembelajaran mesin , algoritme , teknologi baru , dan **beberapa wawasan dan pemikiran tentang pengembangan dan peningkatan pribadi**. Kunjungi 【Personal Homepage】 CoorChice untuk mengikuti saya.
- Grup 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.