GitAds
Hallo, Entwickler, willkommen bei der Verwendung von SuperTextView !
Vielen Dank und Zehntausende Android-Entwickler für Ihr Vertrauen in mich?
SuperTextView unterscheidet sich darin, dass es nur ein einfaches Ansichtselement, aber nicht nur eine Ansicht ist.
Es ist lebendig und dynamisch, mit leistungsstarker eingebetteter Logik, die Ihnen weiterhin umfassende, aber außergewöhnlich einfache Entwicklungsunterstützung bietet.
SuperTextView erspart Ihnen komplexe Rendering-Logik. Mit einem einfachen API- Methodenaufruf sind die umwerfenden Rendering-Effekte sofort verfügbar.
Sie genießen einfach die erstaunlichen visuellen Effekte, die Sie geschrieben haben, und der Rest wird an SuperTextView übergeben.
? Klicken Sie hier (oder scannen Sie den QR-Code unten), um die Demo herunterzuladen
【Portal】:《SuperTextView Development Reference Document》 – Sie können lernen, wie Sie SuperTextView verwenden, um Ihre Anwendung effizienter zu erstellen
【Portal】:《SuperTextView API-Dokument》 – Sie können alle verfügbaren APIs und Eigenschaften von SuperTextView anzeigen
Fügen Sie es in Ihr build.gradle ein:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
Den Versionscode der neuesten Version finden Sie hier.
v3.2.6- Unterstützung: armeabi-v7a
v3.2.6.64- Unterstützung: armeabi-v7a
, arm64-v8a
v3.2.6.99- Unterstützung: armeabi-v7a
, arm64-v8a
, x86
proguard-rules.pro
bitte hinzufügen -keep class com.coorchice.library.gifdecoder.JNI { *; }
Verwenden Sie in XML ein „Netzwerkbild“ als Hintergrundbild
< 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 " />
Legen Sie in XML das „Netzwerkbild“ für StateDrawable2 fest
< 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
ungültigFix Drawable schreibt direkt hexadezimale Farbwerte, zeigt das Problem nicht an
Zeichenbare Unterstützung für die angegebene Ebene
<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"
...
/>
Unterstützungsmodus:
- `beforeText`,Before the text
- `afterText`,After the text
Java verfügt über entsprechende Funktionen zur Unterstützung der dynamischen Konfiguration.
Problem mit der Ungültigmachung des ScaleType-Schalters im Skalierungsmodus, wenn Drawable1 als Hintergrundbild festgelegt wird
Textstriche optimieren
Optimieren Sie die Anzeige von transparentem GIF
In der neuen Version v3.2.0
definiert sich SuperTextView erneut neu. Entwickler, werfen Sie einen Blick auf die Überraschungen, die für Sie vorbereitet sind!???
Dieses Mal bietet SuperTextView Entwicklern leistungsstarke Unterstützung für GIF -Treiber.
Wenn Sie sich in der Vergangenheit darüber geärgert haben, wie ein GIF -Diagramm auf der Android-Plattform angezeigt wird, oder wenn Sie im Leistungsabgrund einiger GIF- Bibliotheken von Drittanbietern stecken. Aber jetzt wird SuperTextView diese Situation völlig ändern.
Gif und SuperTextView sind natürlich und natürlich, sodass Sie ein Gif -Diagramm auf die vertrauteste und natürlichste Weise anzeigen können. Es ist so einfach wie das Anzeigen eines normalen Bildes wie gewohnt.
Dank der ultrahohen Leistung von c/c++ und der präzisen Arbeitsweise des Speichers. SuperTextView hat die leistungsstarke GIF -Treiber-Engine für mobile Plattformen mithilfe von c/c++ angepasst.
Die Gif- Engine von SuperTextView kann den Bildpixelspeicher genau manipulieren und aktualisiert nur den lokalen Pixelspeicher, wenn der Rahmen des Gif -Bilds aktualisiert wird. Dadurch ist die Effizienz der Gif- Bildwiedergabe qualitativ sprunghaft gestiegen.
Durch die asynchrone Off-Screen-Rendering-Technologie kann SuperTextView auch bei der Anzeige großer GIF- Bilder eine reibungslose und reibungslose Anwendungsoberfläche und eine sensible Reaktionsgeschwindigkeit gewährleisten.
In der obigen Demo zeigt die Verwendung von SuperTextView ein GIF -Bild mit einem 265 -Frame-Bild, aber die Benutzeroberfläche ist immer noch sehr flüssig.
Zeigen Sie ein GIF -Diagramm in SuperTextView an, ganz einfach!
Sie können es direkt im XML- Layoutdokument konfigurieren oder in Ihren Code einfügen.
<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" />
Sie können das GIF -Diagramm für die SuperTextView -Konfiguration genauso anzeigen wie für die Konfiguration eines normalen Bildes.
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
Es ist so einfach und natürlich, dass SuperTextView Entwicklern die Anzeige eines GIF- Diagramms ohne jegliches Wissen ermöglicht.
In der Kernellogik von SuperTextView klassifiziert SuperTextView das normale Diagramm und das Gif -Diagramm intelligent und verarbeitet und optimiert es dann entsprechend.
Was ist, wenn Ihr GIF nicht lokal, sondern in der Cloud ist?
Sie müssen sich darüber keine Sorgen machen! Alles wird an SuperTextView übergeben.
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
Mit nur einer Codezeile unterstützt Sie SuperTextView im Hintergrund dabei, das GIF -Bild zu laden und dann das Rendering auf dem Bildschirm zu verarbeiten.
Tatsächlich können die Bildanzeigebits Drawable1 und Drawable2 von SuperTextView zum Anzeigen von GIF- Bildern verwendet werden. Kurz gesagt, alles ist das, was Sie kennen.
SuperTextView zeigt nicht nur GIF an, sondern Sie können auch weitere Details steuern.
Sie können GIF jederzeit steuern, abspielen oder anhalten.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
In SuperTextView können Sie immer auf das Bild des von Ihnen angegebenen Rahmens sowie auf das Bild zugreifen, das in den angegebenen Rahmen extrahiert werden kann.
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);
}
Da SuperTextView lokales inkrementelles Rendering unterstützen kann, bedeutet dies, dass Sie, wenn Ihr GIF diesen Rendering-Modus unterstützt, möglicherweise den ** strengen Modus aktivieren müssen, indem Sie
gifDrawable.setStrict(true)
aufrufen , um sicherzustellen, dass der Frame-Sprung oder das Frame-Extraktionsbild korrekt ist. Dies kann einige Zeit dauern, daher sollten Sie versuchen, die Vorgänge im **strikten Modus* in einem asynchronen Thread auszuführen .
Mit SuperTextView können Sie die Wiedergabegeschwindigkeit des GIF- Diagramms nach Belieben ändern.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Set the frame playback interval, 20 ms
gifDrawable.setFrameDuration(20);
}
Mit SuperTextView können Sie einen Blick auf die Informationen eines Gifs werfen.
GIF- Größe ermitteln
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
Holen Sie sich GIF- Rahmeninformationen
// 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 ** und ** Gif ** werden durch nahtlose Integration gerendert, nach ** Drawable1 ** und ** Drawable2 ** können auch alle Konfigurationselemente in der Anzeige ** Gif ** Abbildung in Kraft treten.
app:stv_state_drawable_rotate="90"
Werfen wir einen Blick darauf, was mit einem Gif in der ursprünglichen Drawable -Position passiert.
<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"/>
Der Effekt ist...
Versuchen wir nun, Gif um 90 Grad zu drehen.
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
SuperTextView unglaubliche Implementierung Gif Die Verrundung des Diagramms öffnet eine neue Tür für Entwickler.
Allerdings ist die Realisierung dieses Effekts verblüffend einfach.
<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" />
Entwickler können sogar problemlos einen Rahmen zu einem GIF hinzufügen.
<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"/>
Der Effekt stellt sich sofort ein...
In der Vergangenheit scheiterten einige coole Dynamiken oft an der Komplexität und den Kosten der Implementierung. Und SuperTextView bietet Ihnen mehr Möglichkeiten und Sie können sich frei inspirieren lassen.
So wird beispielsweise die Implementierung dynamischer Avatare einfacher denn je.
<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"
/>
Im Code können Sie direkt einen webdynamischen Avatar konfigurieren.
stv.setUrlImage("http://gif_avatar.gif");
In der neuen Version von SuperTextView erhalten Drawable1 und Drawable2 neue Funktionen – Unterstützung für präzise Klicks.
SuperTextView Durch die Überwachung des Ortes, an dem die Klickaktion stattfindet, kann die Klickaktion genau in dem Bereich lokalisiert werden, in dem sie stattgefunden hat ( Drawable1 , Drawable2 oder Andere Bereiche ) und dann entsprechende Listening-Rückrufe auslösen.
Sie können den Click-Action-Listener auf Drawable für SuperTextView festlegen, um eine genaue Antwort zu geben, wenn eine Aktion ausgeführt wird.
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...
}
});
Wenn Sie nun Drawable1 als Hintergrundbild verwenden, können Sie verschiedene Zoommodi dafür konfigurieren, um Ihren Lieblingseffekt zu erzielen.
stv.setScaleType(ScaleType.CENTER);
SuperTextView bietet Entwicklern bis zu 3 Zoommodi:
ScaleType.FIT_XY
Strecken Sie das Bild, um es zu kacheln.
ScaleType.FIT_CENTER
Zentrieren Sie das Bild adaptiv.
ScaleType.CENTER
Schneiden Sie das Bild zentriert zu. Standardeinstellungen.
Im XML- Layoutdokument unterstützen Drawable1 und Drawable2 jetzt die direkte Einstellung von Farbe oder 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"
Die Rendering-Leistung ist mindestens 30 % besser als in der Vergangenheit.
Aktualisieren Sie die Standard-Bildlade-Engine, um intelligentes Caching zu unterstützen. Vielleicht müssen Sie jetzt keine Bildladebibliothek eines Drittanbieters einführen.
SuperTextView wurde entwickelt, um Android-Entwicklern dabei zu helfen, Android-Anwendungen effizienter, bequemer und eleganter zu entwickeln.
Jetzt sind die Bona-fides erneut eskaliert. Das neue SuperTextView wird Android-Entwicklern mehr Möglichkeiten eröffnen und wie immer wird SuperTextView effizientere Funktionen mit sich bringen.
Dieses Update von SuperTextView fügt StateDrawable eine magische und leistungsstarke Farbfunktion hinzu. Entwickler können die Farbe eines Symbols problemlos ändern, ohne dem Projekt ein anderes Farbsymbol hinzufügen zu müssen. Diese Technologie gibt Ihren Android-Anwendungen die Möglichkeit, schlanker zu werden.
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
Mit einer so einfachen Codezeile können Sie einem Bild sofort die Möglichkeit geben, sich zu verändern. Welche Farbe Sie wünschen, liegt natürlich bei Ihnen. All dies geschah, ohne dass ein weiteres Bild eingefügt werden musste.
Im Java-Code gibt es eine entsprechende Set/Get-Funktion, sodass Entwickler jederzeit zaubern und die Farbe eines Bildes ändern können.
Die Verbesserungen von StateDrawable gehen über Farbtransformationen hinaus. SuperTextView hat die Möglichkeit erhalten, die Form von StateDrawable zu ändern. Mit demselben Bild können Entwickler unendlich viele Möglichkeiten kombinieren.
Mit ein paar Zeilen Code können Sie jedes Bild nach Ihren Wünschen umwandeln.
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
Kein komplizierter Code erforderlich, SuperTextView ist so einfach und elegant wie eh und je.
In ähnlicher Weise wird im Java-Code auch die entsprechende Set/Get-Funktion bereitgestellt.
Diese Fähigkeit kann Entwicklern effektiv dabei helfen, das Volumen von Android-Anwendungen extrem zu komprimieren.
Das ist der Verlaufstext!
Was SuperTextView bietet, ist wahrscheinlich die bisher einfachste und eleganteste Lösung zur Implementierung von Verlaufstexten. Mit einer einfachen Konfiguration können Sie coole Verlaufstexteffekte erzielen.
# 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"
Diese Eigenschaften stellen auch die Set/Get-Schnittstelle in Java bereit, sodass Entwickler sie jederzeit leicht ändern können.
Adjuster hat zwei neue Funktionen hinzugefügt:
onAttach()
: Wenn Adjuster auf eine SuperTextView eingestellt ist, wird SuperTextView aufgerufen.onDetach()
: Wenn Adjuster aus einem SuperTextView entfernt wird, wird es aufgerufen.Durch das Umschreiben dieser beiden Funktionen in Adjuster kann der Entwickler die Statusregistrierung, Initialisierung, Aufhebung der Registrierung, Ressourcenfreigabe und andere Vorgänge zum richtigen Zeitpunkt durchführen.
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
}
}
Mit dieser Funktion kann der Entwickler alle Adjuster in einer SuperTextView abrufen. Wenn in SuperTextView kein Adjuster vorhanden ist, wird null zurückgegeben.
Allen Eigenschaften von SuperTextView wird jetzt stv_
vorangestellt.
Dadurch werden Konflikte mit den Eigenschaftsnamen vermieden, die SuperTextView möglicherweise generiert, wenn der Entwickler andere Bibliotheken von Drittanbietern einführt.
Wenn der Entwickler derzeit eine frühere Version von SuperTextView verwendet, müssen Sie nach dem Upgrade auf die neue Version den Attributen in allen XML-Dateien das Präfix stv_
voranstellen.
app:corner="10dp"
Ecke ist der Name des Attributs in der alten Version. Nach dem Upgrade auf die neue Version müssen Sie das Präfix stv_
vorne hinzufügen und zu stv_corner
werden.
Wenn der Entwickler AndroidStudio verwendet, öffnen Sie das Dialogfeld „Massenersetzung“ über Edit > Find > Replace
und befolgen Sie die nachstehenden Anweisungen.
Wenn nur SuperTextView im Projekt des Entwicklers denselben Namespace (z. B. app
) verwendet, können Sie app:
glücklicherweise einfach durch app:stv_
ersetzen.
Ab SuperTextView v2.0 ist die Funktion setAdjuster(Adjuster)
für den zu entfernenden Status markiert und stattdessen die neue Funktion addAdjuster(Adjuster)
hinzugefügt.
In der neuen Version wird die Funktion setAdjuster(Adjuster)
offiziell entfernt. Wenn der Entwickler diese Methode bereits verwendet hat, ändern Sie sie bitte in addAdjuster(Adjuster)
.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
Heutzutage verfügt SuperTextView über eine Reihe gemeinsamer Funktionen wie Verrundungen, Ränder, Striche, Druckverfärbungen, Diagramme mit mehreren Zuständen, Verrundungsdiagramme, einen vielseitigen Adjuster , das Laden des Nettobilds und mehr. Dadurch können Entwickler problemlos eine Vielzahl sehr umständlicher Effekte erzielen, viel Entwicklungszeit sparen, die Komplexität der Seite effektiv reduzieren und die Projektwartungskosten senken.
Schreiben Sie den Code, er sollte so angenehm sein!
Bereits vor einigen Monaten haben viele Entwickler CoorChice vorgeschlagen, ob es möglich sei, SuperTextView mit der Möglichkeit zum Laden von Nettobildern zu haben. Tatsächlich wurde dies auch bei CoorChice schon vor langer Zeit in Betracht gezogen, aber in den frühen Tagen von SuperTextView war die Perfektionierung seiner Kernfunktionen immer noch das Hauptziel, sodass es nicht an bildbezogenen Funktionen beteiligt war.
Bis zur letzten großen Version, SuperTextView v2.0, versuchte CoorChie , die Bildanzeigefunktion hinzuzufügen. Dadurch konnte der Umfang des SuperTextView erweitert werden und es wurde die Möglichkeit geschaffen, Bildern Striche, abgerundete Ecken und Zustandsdiagramme hinzuzufügen. Die entsprechende Dokumentation finden Sie unter folgendem Link:
【Hallo, SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
Diesmal bekam ich eine gute Antwort von den Entwicklern. Jeder freut sich darauf, SuperTextView zum Anzeigen und Verarbeiten von Bildern zu verwenden. Nach der letzten Veröffentlichung scheinen Entwickler mehr an einem SuperTextView interessiert zu sein, der das Netzbild anzeigen kann.
Jetzt kommt das lang erwartete SuperTextView zurück!
Um ein Nettobild anzuzeigen, benötigen Sie in SuperTextView lediglich den folgenden Code:
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
Der Effekt ist der gleiche wie im zweiten Beispiel für die Anzeige eines Avatars im Bild oben.
Wenn Sie das Netzbild als StateDrawable von SuperTextView anzeigen möchten, ist das kein Problem.
// fill in the picture Url
stv_1.setUrlImage(url, false);
Der zweite Parameter ist falsch, um anzugeben, dass das Nettobild nicht mit der gesamten SuperTextView als Hintergrund, sondern als Zustandsdiagramm gefüllt wird. Natürlich wird hier alles rund um das Zustandsdiagramm verwendet. Wie im ersten Beispiel oben wird das gesamte Layout, einschließlich Bilder, Text und Hintergrund, in einem SuperTextView verarbeitet und aus dem Netz heruntergeladene Bilder werden als StateDrawable an der Stelle platziert.
SuperTextView Um die Reinheit und die kleinstmögliche Größe der Bibliothek sicherzustellen, gibt es kein integriertes Bildlade-Framework. Daher wird standardmäßig eine einfache integrierte Bild-Engine zum Herunterladen von Bildern verwendet, um sicherzustellen, dass Entwickler die Möglichkeit nutzen können, das Netzbild anzuzeigen.
CoorChice empfiehlt Entwicklern jedoch weiterhin, je nach Projekt ein Bildlade-Framework auszuwählen, das derzeit verwendet wird, und es auf SuperTextView einzustellen, um das Bild zu laden. SuperTextView kann sich an jedes Bildlade-Framework anpassen. Im Folgenden zeigt Ihnen CoorChice anhand der Glide- und Picasso-Beispiele, wie Sie ein vorhandenes Bildframework in SuperTextView installieren.
In SuperTextView wird die Kern-Engine zum Laden von Bildern in die Schnittstelle Engine abstrahiert, und der Entwickler muss je nach verwendetem Bildrahmen eine Engine implementieren.
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) {
}
});
}
}
Nach der Implementierung von Engine besteht der nächste Schritt darin, es in SuperTextView zu installieren.
Es wird empfohlen, CoorChice im onCreate()
der Anwendung zu installieren, sodass Sie, wenn Sie SuperTextView zum Laden und Anzeigen des Netzbildes verwenden müssen, das Bildlade-Framework eines Drittanbieters verwenden können.
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安装图片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
Eine Codezeile für eine einfache Installation.
Es ist zu beachten, dass die nachinstallierte Engine- Instanz jederzeit die zuvor installierte Engine- Instanz ersetzt, d. h. SuperTextView lässt nur die globale Existenz einer Engine- Instanz zu.
Jetzt können Sie SuperTextView das Bild mithilfe des angegebenen Bildlade-Frameworks eines Drittanbieters laden lassen.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
CoorChice hat immer eine Vision und erwartet, ein solches Steuerelement erstellen zu können: Es kann die meisten Ihrer Entwicklungsanforderungen erfüllen und Text, Bilder, Geometrie, Animation und Status anzeigen, sodass Sie ein Steuerelement effizient nutzen können der Entwicklungsarbeit. Es ist so kraftvoll, als wäre es geistig eingestellt, nimmt Ihre Eingaben an und präsentiert ein atemberaubendes Bild entsprechend Ihrem Verstand. Mit der Einführung von „SuperTextView v2.0“ sind wir dieser Idee einen Schritt näher gekommen. Kommen Sie und sehen Sie sich „SuperTextView v2.0“ an!
In 【SuperTextView v2.0】 wurde Unterstützung für die Bildanzeige hinzugefügt. Aber es geht nicht nur um die Anzeige von Bildern, es ist auch sinnvoll, das Bild basierend auf Ihren Eingaben auf die gewünschte Form zuzuschneiden.
Fügen Sie dem Bild eine abgerundete Ecke hinzu, fügen Sie einen Rand hinzu oder verwandeln Sie es direkt in einen Kreis. Sie müssen lediglich ein paar einfache Eigenschaften festlegen, die sofort vor Ihren Augen sichtbar sind.
Wie verwende ich SuperTextView, um ein Bild anzuzeigen?
Fügen Sie einfach die folgenden zwei Codezeilen zur XML hinzu.
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
Wenn Sie ein treuer Benutzer von SuperTextView
sind, werden Sie feststellen, dass das ursprüngliche state_drawable
jetzt zum Anzeigen eines Bildes verwendet werden kann.
Da Ihr Bild nun vor Ihnen liegt, möchten Sie vielleicht etwas anderes daran machen, zum Beispiel eine abgerundete Ecke hinzufügen oder es direkt in einen Kreis verwandeln? Kein Problem, SuperTextView
ist jetzt für diese Art von Arbeit voll qualifiziert.
<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"
...
/>
So einfach! Anhand des Originals müssen Sie lediglich die corner
sinnvoll festlegen.
Manchmal müssen Sie möglicherweise einen Rahmen verwenden, um Ihr Bild zu umschließen, wie im obigen Beispiel. Das ist richtig, dies liegt definitiv im Rahmen der SuperTextView
-Fähigkeit.
<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
steuert die Farbe des Rahmens und app:stv_stroke_width
steuert die Breite des Rahmens. Alles ist so reibungslos, eine intelligente Steuerung sollte so sein, oder?
Angesichts komplexer Nachfrageänderungen hat „SuperTextView“ ein zweites Zeichenprogramm entwickelt, um dieser Komplexität gerecht zu werden.
state_drawable2
.
Jetzt zeigt Ihnen CoorChice, wie die beiden Effekte im obigen Bild umgesetzt werden.
<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"
...
/>
Wie Sie wissen, setzt state_drawable2
alle reibungslosen Abläufe der ersten Generation fort. Mit der klugen Nutzung Ihres Smarts wird „SuperTextView“ glänzen können!
Zuvor machte das Design von Adjuster
„SuperTextView“ zu einer Seele und einer intelligenteren Steuerung. Durch die Einfügung des Zeichenprozesses, also der Erfassung von Berührungsereignissen, lässt sich der Zustand eines Steuerelements ganz einfach von außen ändern. Kreativität beginnt im Herzen und geht hierher.
Jetzt kann „SuperTextView“ bis zu 3 Adjuster
gleichzeitig transportieren! Vielleicht wird Ihre Kreativität umwerfender sein.
Im obigen Beispiel fügt CoorChice die beiden frühen Effekte „Sweep“ und „Move“ zu einer „SuperTextView“ hinzu, und das Ergebnis ist das, was Sie sehen.
Mehr Adjuster
bedeutet mehr Kombinationen und mehr Überraschungen. In 【v1.4.0】 verwendet CoorChice auch Adjuster
um die Funktion zum Ändern der Druckfarbe einfach zu implementieren.
Dies ist die Ära des Adjuster
, Sie können sie nutzen, um kreativ zu sein.
setAdjuster(Adjuster)
-Methode weiterhin erhalten bleibt, zukünftige Versionen jedoch entfernt werden und Sie so schnell wie möglich migrieren müssen. Die neue Alternative ist addAdjuster(Adjuster)
.
app:stv_shaderMode="leftToRight"
die den Shader-Modus steuert, wurde korrigiert. Das rechte ist app:stv_shaderMode="leftTopRight"
. Wenn Sie diese Eigenschaft verwenden, korrigieren Sie sie bitte nach dem Upgrade von 【SuperTextView v2.0】.set/getPressBgColor()
und set/getPressTextColor()
hinzugefügt, um die Hintergrundfarbe im Code zu steuern. Sie müssen diese Eigenschaften nur wie folgt in der XML-Datei festlegen:
# 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()
. Sie können die Informationen zu den Ecken im SuperTextView
abrufen, manchmal möchten Sie diese Methode wirklich verwenden. dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
Eine Berührung, nämlich Veränderung, kann nicht aufgehalten werden. Künstler, spiele deiner Kreativität freien Lauf!
Sie können den Shader-Effekt in der XML festlegen und Folgendes tun:
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
Natürlich können diese Eigenschaften mit der set/get
-Methode geändert werden. z.B:
mSuperTextView.setShaderStartColor(Color.RED);
Jetzt steht SuperTextView Javadoc zur Verfügung. Sie können es hier herunterladen (klicken Sie auf index.html
, um zu beginnen): SuperTextView Javadoc: http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?attname=
So verwenden Sie SuperTextView 1.3 im 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 -Eigenschaften können einfach im XML festgelegt werden und Sie können die Auswirkung sofort sehen. Ich verwende einfach gerne 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"
/>
Alle Attribute können in Java festgelegt werden. Sie können auch ihren Wert ermitteln. z.B:
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
Normalerweise müssen Sie viele Dateien schreiben und verwalten, um den Effekt des obigen Diagramms umzusetzen. Aber jetzt können Sie dies ganz einfach im XML tun.
Im Gegensatz zu allgemeinen Ecken kann SuperTextView die präzise Steuerung der Eckenposition unterstützen. Eins, zwei, drei, was immer Sie wollen.
Die Verwendung von Strichtext ist so einfach!
Im Gegensatz zu General State Drawable unterstützt SuperTextView präzisere Steuerungsoptionen. Sie können den Status „Zeichnbar“ ganz einfach festlegen, indem Sie nur ein Attribut verwenden.
Adjuster wurde entwickelt, um einige Optionen in den Zeichenprozess von SuperTextView einzufügen. Es hat einen sehr wichtigen Sinn. Beispielsweise kann der DefaultAdjuster die Textgröße automatisch anpassen, bevor der Text gezeichnet wird. Natürlich können Sie damit alles machen.
Wenn Sie Adjuster verwenden möchten, müssen Sie SuperTextView.setAutoAdjust(true)
aufrufen. Natürlich können Sie SuperTextView.setAutoAdjust(false)
jederzeit aufrufen, um es zu stoppen. Sie sollten diese Methoden sorgfältig aufrufen. Denn sobald Sie SuperTextView.setAutoAdjust(true)
aufrufen, aber Ihren Adjuster zuvor nicht festgelegt haben, wird der DefaultAdjuster sofort verwendet, bis Sie sich selbst einen Adjuster festlegen.
Um einen Adjuster zu implementieren, müssen Sie SuperTextView.Adjuster erweitern und adjust(SuperTextView v, Canvas canvas)
implementieren. Adjuster.adjust() wird immer dann aufgerufen, wenn die Auslosung erfolgt, das heißt, Sie können von außen in den Auslosungsprozess eingreifen.
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
Achtung, wenn Sie die Animation starten, müssen Sie sehr vorsichtig sein, den Code in den Adjuster() zu schreiben. Denn die Animation wird mit 60 fps/s gezeichnet. Das bedeutet, dass diese Methode 60 Mal pro Sekunde aufgerufen wird. Erstellen Sie daher in dieser Methode kein neues Objekt. Andernfalls kommt es bei Ihrer App zu einer großen Verzögerung!, da dies zu „Memory Thrashing“ führt und GC häufig auftritt. Über den detaillierten Grund können Sie meine beiden Artikel lesen:
Wenn Sie die Methode onTouch(SuperTextView v, MotionEvent event)
des Adjusters überschreiben, erhalten Sie die Berührungsereignisse des SuperTextView . Es ist sehr wichtig, eine Reihe von Touch-Ereignissen von SuperTextView zu verarbeiten. Und Sie müssen in onTouch()
true zurückgeben. Andernfalls erhalten Sie nur ein ACTION_DOWN-Ereignis und keinen Ereignisfluss.
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.
}
}
Da SuperTextView die eingebaute Animation steuert, können Sie Adjuster verwenden, um den unglaublichen Effekt umzusetzen. Alles, was Sie tun müssen, ist startAnim()
und stopAnim()
aufzurufen, um die Animation zu starten oder zu stoppen, nachdem Ihr Justierer sie notiert hat.
Wie Sie sehen können, wird dieser schöne Effekt von Adjuster umgesetzt. Durch dieses Pull-Plugin- Design können Sie jederzeit einen neuen Adjuster im SuperTextView verwenden. Sie müssen lediglich einen neuen Adjuster erstellen und dann setAdjuster()
aufrufen.
@Alex_Cin
hofft, den Ripple-Effekt zu sehen, deshalb habe ich in RippleAdjuster.java
gezeigt, wie man Adjuster mit Animation Driven verwendet, um den Ripple-Effekt zu implementieren. 【RippleAdjuster.java-Link: https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
Sehen Sie, Sie können Ihren Ripple-Effekt implementieren.
Der Einsteller hat die Hierarchiefunktion süß gestaltet. Sie rufen Adjuster.setOpportunity(Opportunity opportunity)
auf, um die Hierarchie Ihres Adjusters im SuperTextView festzulegen.
In SuperTextView ist die Hierarchie von unten nach oben unterteilt in:Hintergrundhierarchie、Zeichnbare Hierarchie、Texthierarchie. Sie können Opportunity verwenden, um die Hierarchie Ihres Adjusters auf die gewünschte Ebene festzulegen.
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
Chancendiagramm.
Der Standardwert ist Opportunity.BEFORE_TEXT
. Wie das zweite Diagramm.
Tatsächlich ist SuperTextView wie eine Leinwand, auf der Sie Ihr Motiv zeichnen können. Es erfordert viel Kraft bei der Erstellung und Sie müssen nie diesen nutzlosen Code schreiben.
Jetzt können Sie SuperTextView verwenden.
- Wenn Ihnen SuperTextView gefällt, danke ich Ihnen, auf Github zu gehen und mir einen Stern zu geben? !
- Darüber hinaus wird CoorChice gelegentlich Trockengüter auf der Blog-Plattform teilen, darunter Android-bezogene Technologie , maschinelles Lernen , Algorithmen , neue Technologien und **einige Einblicke und Gedanken zur persönlichen Entwicklung und Verbesserung**. Gehen Sie zur „Persönlichen Homepage“ von CoorChice, um mir zu folgen.
- SuperTextView QQ-Gruppe: 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.