GitAds
Bonjour, développeur, bienvenue dans SuperTextView !
Merci ainsi qu'aux dizaines de milliers de développeurs Android pour votre confiance en moi ?。
SuperTextView est différent en ce sens qu'il s'agit simplement d'un simple élément de vue, mais pas seulement d'une vue.
Il est vivant et dynamique, avec une logique intégrée puissante qui continue de vous fournir un support de développement riche mais exceptionnellement simple.
SuperTextView vous évite une logique de rendu complexe. Un simple appel de méthode API , les effets de rendu éblouissants sont instantanément disponibles.
Vous profitez simplement des effets visuels étonnants que vous avez écrits, et le reste sera confié à SuperTextView .
? cliquez ici (ou scannez le code QR ci-dessous) pour télécharger la démo
【Portail】:《Document de référence de développement SuperTextView》 - Vous pouvez apprendre à utiliser SuperTextView pour créer votre application plus efficacement
【Portail】:《Document API SuperTextView》— Vous pouvez afficher toutes les API et propriétés disponibles de SuperTextView
Ajoutez-le dans votre build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
Le code de version de la dernière version peut être trouvé ici.
Prise en charge de la version 3.2.6 : armeabi-v7a
Prise en charge de la version 3.2.6.64 : armeabi-v7a
、 arm64-v8a
Prise en charge de la version 3.2.6.99 : armeabi-v7a
, arm64-v8a
, x86
proguard-rules.pro
veuillez ajouter -keep class com.coorchice.library.gifdecoder.JNI { *; }
En XML, utilisez une « image réseau » comme image d'arrière-plan
< 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 " />
En XML, définissez «l'image réseau» pour 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
invalideFix Drawable écrit directement la valeur de couleur hexadécimale, n'affiche pas le problème
Prise en charge dessinable pour la couche spécifiée
<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"
...
/>
Mode d'assistance :
- `beforeText`,Before the text
- `afterText`,After the text
Java a des fonctions correspondantes pour prendre en charge la configuration dynamique.
Problème d'invalidation du commutateur scaleType en mode échelle lors de la correction de Drawable1 comme image d'arrière-plan
Optimiser les traits de texte
Optimiser l'affichage des gif transparents
Dans la nouvelle version v3.2.0
, SuperTextView se redéfinit à nouveau. Développeurs, jetez un œil aux surprises préparées pour vous !???
Cette fois, SuperTextView apporte aux développeurs une puissante prise en charge des pilotes Gif .
Si dans le passé, vous avez été contrarié par la façon d'afficher un graphique Gif sur la plate-forme Android, ou si vous êtes coincé dans l'abîme des performances de certaines bibliothèques Gif tierces. Mais désormais, SuperTextView va complètement changer cette situation.
Gif et SuperTextView sont naturels et naturels, vous pouvez donc afficher un diagramme Gif de la manière la plus familière et la plus naturelle. C'est aussi simple que d'afficher une image normale comme d'habitude.
Grâce aux ultra-hautes performances de c/c++ et au fonctionnement précis de la mémoire. SuperTextView Personnalisez le puissant moteur de pilote Gif pour les plates-formes mobiles en utilisant c/c++ .
Le moteur Gif de SuperTextView , qui peut manipuler avec précision la mémoire des pixels de l'image, ne met à jour la mémoire des pixels locaux que lors de l'actualisation de l'image Gif , ce qui fait que l'efficacité du rendu de l'image Gif a fait un saut qualitatif.
Grâce à la technologie de rendu asynchrone hors écran, SuperTextView peut garantir une interface d'application fluide et fluide et une vitesse de réponse sensible, même lors de l'affichage de grandes images Gif .
Dans la démo ci-dessus, l'utilisation de SuperTextView affiche une image Gif avec une image de 265 images, mais l'interface utilisateur est toujours très fluide.
Afficher un diagramme Gif dans SuperTextView , super simple !
Vous pouvez le configurer directement dans le document de mise en page XML ou l'ajouter dans votre code.
<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" />
Vous pouvez afficher le diagramme Gif pour la configuration SuperTextView comme si vous configuriez une image normale.
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
C'est aussi simple et naturel que SuperTextView permet aux développeurs d'afficher un diagramme Gif sans aucune conscience.
Dans la logique du noyau de SuperTextView , SuperTextView classe intelligemment le graphique normal et le graphique Gif , puis traite et optimise en conséquence.
Et si votre Gif n'était pas local mais dans le cloud ?
Vous n'avez pas à vous en soucier ! Tout est confié à SuperTextView .
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
Avec une seule ligne de code, SuperTextView vous aidera en arrière-plan à charger l'image Gif puis à traiter le rendu à l'écran.
En fait, les bits d'affichage d'image Drawable1 et Drawable2 de SuperTextView peuvent être utilisés pour afficher des images Gif . Bref, tout est ce que vous connaissez.
SuperTextView affiche non seulement Gif , mais vous pouvez également contrôler plus de détails.
Vous pouvez contrôler Gif , lire ou mettre en pause à tout moment.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
Dans SuperTextView , vous pouvez toujours accéder à l'image du cadre que vous spécifiez, ainsi qu'à l'image qui peut être extraite dans le cadre spécifié.
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);
}
Étant donné que SuperTextView peut prendre en charge le rendu incrémentiel local, lorsque votre Gif prend en charge ce mode de rendu, cela signifie que vous devrez peut-être activer ** le mode strict en appelant
gifDrawable.setStrict(true)
, pour vous assurer que le saut d'image ou l'image d'extraction d'image est correct. Cela peut prendre un certain temps, vous devriez donc essayer d'effectuer les opérations en ** mode strict * dans un thread asynchrone.
SuperTextView vous permet de modifier à volonté la vitesse de lecture du graphique 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);
}
Avec SuperTextView, vous pouvez avoir un aperçu des informations d'un Gif .
Obtenir la taille du Gif
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
Obtenir des informations sur le cadre 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 ** et ** Gif ** rendus grâce à une intégration transparente, après ** Drawable1 ** et ** Drawable2 ** tous les éléments de configuration dans l'affichage ** Gif ** Figure peuvent également entrer en vigueur.
app:stv_state_drawable_rotate="90"
Jetons un coup d'œil à ce qui se passe avec un Gif dans la position Drawable d'origine.
<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"/>
L'effet est...
Essayons maintenant de faire pivoter Gif de 90 degrés.
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
SuperTextView implémentation incroyable de Gif Le congé du graphique ouvre une nouvelle porte aux développeurs.
Cependant, la réalisation de cet effet est étonnamment simple.
<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" />
Les développeurs peuvent même facilement ajouter une bordure à un 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"/>
L'effet est instantanément présenté...
Dans le passé, certaines dynamiques intéressantes s’arrêtaient souvent à la complexité et au coût de la mise en œuvre. Et SuperTextView vous offre plus de possibilités et votre inspiration peut être libre.
Par exemple, la mise en œuvre d’avatars dynamiques sera plus simple que jamais.
<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"
/>
Dans le code, vous pouvez configurer directement un avatar dynamique web.
stv.setUrlImage("http://gif_avatar.gif");
Dans la nouvelle version de SuperTextView , Drawable1 et Drawable2 bénéficient de nouvelles fonctionnalités : la prise en charge de clics précis.
SuperTextView En surveillant l'emplacement où l'action de clic se produit, l'action de clic peut être localisée avec précision dans la zone où elle s'est produite ( Drawable1 , Drawable2 ou Autres zones ), puis déclencher en conséquence des rappels d'écoute.
Vous pouvez définir l'écouteur d'action de clic sur Drawable pour SuperTextView pour fournir une réponse précise lorsqu'une action se produit.
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...
}
});
Désormais, lorsque vous utilisez Drawable1 comme image d'arrière-plan, vous pouvez configurer différents modes de zoom pour obtenir votre effet préféré.
stv.setScaleType(ScaleType.CENTER);
SuperTextView offre aux développeurs jusqu'à 3 modes de zoom :
ScaleType.FIT_XY
Étirez l'image en mosaïque.
ScaleType.FIT_CENTER
Centrez l’image de manière adaptative.
ScaleType.CENTER
Recadrez l'image au centre. Valeurs par défaut.
Dans le document de mise en page XML , Drawable1 et Drawable2 prennent désormais en charge la définition directe de la couleur ou 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"
Les performances de rendu sont au moins 30 % meilleures que par le passé.
Mettez à niveau le moteur de chargement d'images par défaut pour prendre en charge la mise en cache intelligente. Peut-être que maintenant, vous n'avez plus besoin d'introduire une bibliothèque de chargement d'images tierce.
SuperTextView a été conçu pour aider les développeurs Android à développer des applications Android de manière plus efficace, plus pratique et plus élégante.
Aujourd’hui, la bonne foi s’est encore intensifiée. Le nouveau SuperTextView ouvrira davantage de possibilités aux développeurs Android et, comme toujours, SuperTextView apportera des fonctionnalités plus efficaces.
Cette mise à jour de SuperTextView ajoute une capacité de coloration magique et puissante à StateDrawable . Les développeurs peuvent facilement changer la couleur d'une icône sans avoir à ajouter une icône de couleur différente au projet. Cette technologie donnera une chance à vos applications Android d’affiner.
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
Avec une ligne de code aussi simple, vous pouvez instantanément donner à une image le pouvoir de changer. La couleur que vous souhaitez dépend de vous, bien sûr. Tout cela s’est produit sans qu’il soit nécessaire d’introduire une autre image.
Dans le code Java, il existe une fonction set/get qui lui correspond, afin que les développeurs puissent lancer de la magie à tout moment, en changeant la couleur d'une image.
Les améliorations de StateDrawable vont au-delà des transformations de couleurs. SuperTextView a la possibilité de modifier la forme de StateDrawable. Avec la même image, les développeurs peuvent combiner une infinité de possibilités.
Avec quelques lignes de code, vous pouvez transformer n'importe quelle image à votre guise.
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
Pas besoin de code compliqué, SuperTextView est toujours aussi simple et élégant.
De même, dans le code Java, la fonction set/get correspondante est également fournie.
Cette capacité peut efficacement aider les développeurs à compresser à l'extrême le volume des applications Android.
C'est le texte dégradé !
Ce que propose SuperTextView est probablement la solution la plus simple et la plus élégante pour implémenter du texte dégradé à ce jour. Avec une configuration simple, vous pouvez obtenir des effets de texte dégradés sympas.
# 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"
Ces propriétés fournissent également l'interface set/get en Java, permettant aux développeurs de les modifier facilement à tout moment.
Ajusteur a ajouté deux nouvelles fonctions :
onAttach()
: lorsque l'Adjuster est défini sur un SuperTextView sera invoqué.onDetach()
: lorsque l'Adjuster est supprimé d'un SuperTextView, il sera invoqué.En réécrivant ces deux fonctions dans Adjuster, le développeur peut effectuer l'enregistrement d'état, l'initialisation, la désinscription, la libération des ressources et d'autres opérations au bon moment.
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
}
}
Cette fonction permet au développeur d'obtenir tous les ajusteurs dans un SuperTextView . S'il n'y a pas d'ajusteur dans SuperTextView , il renverra null.
Toutes les propriétés de SuperTextView sont désormais préfixées par stv_
.
Cela évite les conflits avec les noms de propriétés que SuperTextView peut générer lorsque d'autres bibliothèques tierces sont introduites par le développeur.
Si le développeur utilise actuellement une version précédente de SuperTextView , après la mise à niveau vers la nouvelle version, vous devez préfixer les attributs dans tous les fichiers XML avec le préfixe stv_
.
app:corner="10dp"
corner est le nom de l'attribut dans l'ancienne version. Après la mise à niveau vers la nouvelle version, vous devez ajouter le préfixe stv_
au début et devenir stv_corner
.
Si le développeur utilise AndroidStudio , ouvrez la boîte de dialogue de remplacement groupé depuis Edit > Find > Replace
et suivez les instructions ci-dessous.
Si seul SuperTextView utilise le même espace de noms (tel que app
) dans le projet du développeur, alors heureusement, vous pouvez simplement remplacer app:
par app:stv_
.
À partir de SuperTextView v2.0, la fonction setAdjuster(Adjuster)
est marquée pour l'état à supprimer, et la nouvelle fonction addAdjuster(Adjuster)
est ajoutée à la place.
Dans la nouvelle version, la fonction setAdjuster(Adjuster)
sera officiellement supprimée. Si le développeur a déjà utilisé cette méthode, veuillez la remplacer par addAdjuster(Adjuster)
.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
Aujourd'hui, SuperTextView possède une gamme de fonctionnalités communes telles que les congés, les bordures, les traits, la décoloration de la presse, les diagrammes multi-états, les tracés de congés, l'ajusteur polyvalent, le chargement de l'image nette, et bien plus encore. Grâce à cela, les développeurs peuvent facilement obtenir une variété d'effets très fastidieux, gagner beaucoup de temps de développement, réduire efficacement la complexité de la page et réduire les coûts de maintenance du projet.
Écrivez le code, ça devrait être tellement agréable !
Il y a quelques mois déjà, de nombreux développeurs ont suggéré à CoorChice s'il était possible d'avoir SuperTextView avec la possibilité de charger une image nette. En fait, c'est aussi CoorChice qui a été envisagé il y a longtemps, mais au début de SuperTextView , perfectionner ses fonctions de base est toujours l'objectif principal, il n'a donc pas été impliqué dans les fonctions liées à l'image.
Jusqu'à la dernière grande version, SuperTextView v2.0, CoorChie essayait d'ajouter la fonction d'affichage d'images. Cela a permis d'étendre la portée de SuperTextView , ainsi que la possibilité d'ajouter des traits, des coins arrondis et des diagrammes d'état aux images. La documentation connexe peut être trouvée sur le lien suivant :
【Bonjour, SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
Cette fois, j'ai reçu une bonne réponse de la part des développeurs. Tout le monde a hâte d'utiliser SuperTextView pour afficher et traiter des images. Après la dernière version, les développeurs semblent plus intéressés par un SuperTextView capable d'afficher l'image nette.
Alors maintenant, le SuperTextView tant attendu revient !
Pour afficher une image nette, vous n'avez besoin que du code suivant dans SuperTextView :
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
L'effet est le même que celui du deuxième exemple d'affichage d'un avatar dans l'image ci-dessus.
Si vous souhaitez afficher l'image nette en tant que StateDrawable de SuperTextView , c'est très bien.
// fill in the picture Url
stv_1.setUrlImage(url, false);
Le deuxième paramètre est faux pour indiquer que l'image nette ne sera pas remplie avec l'intégralité de SuperTextView comme arrière-plan, mais comme diagramme d'état. Bien entendu, tout ce qui concerne le diagramme d’état sera utilisé ici. Comme dans le premier exemple ci-dessus, la mise en page entière, y compris les images, le texte et l'arrière-plan, est traitée dans un SuperTextView , et les images téléchargées depuis le net sont placées en tant que StateDrawable à cet endroit.
SuperTextView Afin de maintenir la bibliothèque dépendante de la pureté et de la plus petite taille possible, il n'y a pas de cadre de chargement d'image intégré. Ainsi, par défaut, un simple moteur d'image intégré sera utilisé pour télécharger des images, afin de garantir que les développeurs puissent utiliser la possibilité d'afficher l'image nette.
Cependant, CoorChice recommande toujours aux développeurs de choisir un framework de chargement d'image actuellement utilisé, en fonction du projet, et de le définir sur SuperTextView pour charger l'image. SuperTextView a la capacité de s'adapter à n'importe quel cadre de chargement d'image. Ci-dessous, CoorChice vous montrera comment installer un cadre d'image existant dans SuperTextView avec les exemples Glide et Picasso.
Dans SuperTextView , le moteur de chargement d'image principal est résumé dans l'interface Engine et le développeur doit implémenter un Engine en fonction du cadre d'image utilisé.
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) {
}
});
}
}
Après avoir implémenté Engine , l'étape suivante consiste à l'installer dans SuperTextView .
CoorChice, il est recommandé d'installer dans onCreate()
de l'application, de sorte que lorsque vous devez utiliser SuperTextView pour charger et afficher l'image nette, vous puissiez utiliser le cadre de chargement d'image tripartite.
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安装图片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
Une ligne de code pour une installation facile.
Il convient de noter qu'à tout moment, l'instance de moteur post-installée remplacera toujours l'instance de moteur précédemment installée, c'est-à-dire que SuperTextView ne permet qu'à une seule instance de moteur d'exister globalement.
Vous pouvez désormais demander à SuperTextView de charger l'image à l'aide du cadre de chargement d'image tiers spécifié.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
Depuis toujours, CoorChice a une vision et espère pouvoir créer un tel contrôle : il peut répondre à la plupart de vos besoins de développement, afficher du texte, des images, de la géométrie, de l'animation, de l'état, afin que vous puissiez utiliser un contrôle pour être efficace. du travail de développement. Il est si puissant, comme s'il était mental, acceptant votre contribution et présentant une image époustouflante selon votre esprit. Avec l'arrivée de 【SuperTextView v2.0】, nous nous rapprochons de cette idée. Maintenant, venez voir 【SuperTextView v2.0】 !
Dans 【SuperTextView v2.0】, la prise en charge de l'affichage des images a été ajoutée. Mais il ne s'agit pas seulement d'afficher des images, il est également judicieux de recadrer l'image selon la forme souhaitée en fonction de votre saisie.
Ajoutez un coin arrondi à l'image, ajoutez une bordure ou transformez-la directement en cercle. Tout ce que vous avez à faire est de définir quelques propriétés simples qui sont instantanément visibles sous vos yeux.
Comment utiliser SuperTextView pour afficher une image ?
Ajoutez simplement les deux lignes de code suivantes au XML.
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
Si vous êtes un utilisateur fidèle de SuperTextView
, vous constaterez que le state_drawable
original peut désormais être utilisé pour afficher une image.
Maintenant que votre photo est devant vous, peut-être souhaitez-vous faire quelque chose de différent, par exemple ajouter un coin arrondi ou devenir directement un cercle ? Pas de problème, SuperTextView
est désormais pleinement qualifié pour ce genre de travaux.
<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"
...
/>
Tellement facile ! Sur la base de l'original, il vous suffit de définir un corner
raisonnable.
Parfois, vous devrez peut-être utiliser une bordure pour envelopper votre image, comme dans l'exemple ci-dessus. C'est vrai, cela fait certainement partie de la portée de la fonctionnalité 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
contrôle la couleur de la bordure et app:stv_stroke_width
contrôle la largeur de la bordure. Tout est si fluide, un contrôle intelligent devrait être comme ça, n'est-ce pas ?
Face aux changements complexes de la demande, 【SuperTextView】 a donné naissance à un deuxième dessin pour faire face à cette complexité.
state_drawable2
.
CoorChice va maintenant vous montrer comment les deux effets de l'image ci-dessus sont implémentés.
<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"
...
/>
Comme vous le savez, state_drawable2
continue toutes les opérations fluides de la première génération. Sous l'utilisation judicieuse de votre intelligence, 【SuperTextView】 pourra briller !
Auparavant, la conception d' Adjuster
faisait de 【SuperTextView】 une âme et un contrôle plus intelligent. L'insertion du processus de dessin, la capture d'événements tactiles, permet de changer facilement l'état d'un contrôle depuis l'extérieur. La créativité commence par le cœur et va ici.
Désormais, 【SuperTextView】 peut transporter jusqu'à 3 Adjuster
en même temps ! Peut-être que votre créativité sera plus éblouissante.
Dans l'exemple ci-dessus, CoorChice ajoute les deux premiers effets « Sweep » et « Move » à un [SuperTextView], et le résultat est ce que vous voyez.
Plus d’ Adjuster
signifie plus de combinaisons et plus de surprises. Dans 【v1.4.0】, CoorChice utilise également Adjuster
pour implémenter facilement la fonction de changement de couleur de la presse.
C’est l’ère de Adjuster
, vous pouvez l’utiliser pour être créatif.
setAdjuster(Adjuster)
d'origine est toujours conservée, mais les versions futures seront supprimées et vous devrez migrer dès que possible. La nouvelle alternative est addAdjuster(Adjuster)
.
app:stv_shaderMode="leftToRight"
qui contrôle le mode Shader. La droite est app:stv_shaderMode="leftTopRight"
. Si vous utilisez cette propriété, veuillez la corriger après la mise à niveau de 【SuperTextView v2.0】.set/getPressBgColor()
et set/getPressTextColor()
pour contrôler la couleur d'arrière-plan dans le code. Il vous suffit de définir ces propriétés dans le fichier XML comme ceci :
# 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()
. Vous pouvez obtenir les informations sur les coins dans le SuperTextView
, parfois vous souhaitez vraiment utiliser cette méthode. dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
Une touche à savoir le changement, imaginer ne peut pas être arrêté. Artiste, jouez avec votre créativité!
Vous pouvez définir l'effet Shader dans le XML, et vous pouvez。
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
Bien entendu, ces propriétés peuvent être modifiées par la méthode set/get
. par exemple :
mSuperTextView.setShaderStartColor(Color.RED);
Maintenant, le javadoc SuperTextView est fourni, vous pouvez le télécharger ici (cliquez sur index.html
pour commencer) : Javadoc SuperTextView : http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?attname=
comment utiliser SuperTextView 1.3 dans build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.3'
}
mSuperTextView.setAdjuster(new MoveEffectAdjuster())
.setAutoAdjust(true)
.startAnim();
Les propriétés SuperTextView peuvent être définies facilement dans le XML et vous pouvez voir l'effet immédiatement. J'aime juste utiliser 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"
/>
Tous les attributs peuvent être définis dans Java. Vous pouvez également obtenir leur valeur. par exemple :
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
Habituellement, vous devez écrire et gérer de nombreux fichiers pour mettre en œuvre l'effet du graphique ci-dessus. Mais maintenant, vous pouvez facilement le faire dans le XML.
Différent du coin général, SuperTextView peut prendre en charge un contrôle précis de l'emplacement du coin. Un, deux, trois, ce que vous voulez.
Utiliser le texte Stroke est si simple !
Différent de l'état général dessinable, SuperTextView prend en charge des options de contrôle plus précises. Vous pouvez facilement définir un état dessinable, simplement pour utiliser un attribut.
Ajusteur est conçu pour insérer certaines options dans le processus de dessin du SuperTextView . Cela a un sens très important. Par exemple, DefaultAdjuster peut ajuster automatiquement la taille du texte avant que le texte ne soit dessiné. Bien sûr, vous pouvez l’utiliser pour faire n’importe quoi.
Si vous souhaitez utiliser Adjuster, vous devez invoquer SuperTextView.setAutoAdjust(true)
. Bien sûr, vous pouvez invoquer SuperTextView.setAutoAdjust(false)
pour l'arrêter à tout moment. Vous devez invoquer ces méthodes avec précaution. Parce que, une fois que vous avez invoqué SuperTextView.setAutoAdjust(true)
, mais que vous n'avez pas défini votre Ajusteur auparavant, le DefaultAdjuster sera utilisé immédiatement. Jusqu'à ce que vous vous définissiez Ajusteur.
Pour implémenter un ajusteur, vous devez étendre SuperTextView.Adjuster et implémenter la méthode adjust(SuperTextView v, Canvas canvas)
. Adjuster.adjust() sera invoqué chaque fois que le tirage aura lieu, ce qui signifie que vous pourrez intervenir dans le processus de dessin à l'extérieur.
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
Attention, si vous démarrez une animation, vous devez faire très attention à écrire le code dans l'ajusteur(). Parce que l'animation sera dessinée à 60fps/s. Cela signifie que cette méthode sera invoquée 60 fois par seconde! Alors, ne créez aucun nouvel objet dans cette méthode. Sinon, votre application aura un gros retard! Parce que cela provoquera un « Memory Thrashing » et le GC se produira fréquemment. Pour la raison détaillée, vous pouvez voir mes deux articles :
Si vous remplacez la méthode onTouch(SuperTextView v, MotionEvent event)
de l'Adjuster, vous obtiendrez les événements tactiles du SuperTextView . Il est très important de gérer une série d’événements tactiles de SuperTextView . Et vous devez retourner true dans onTouch()
, sinon vous obtiendrez simplement un événement ACTION_DOWN, pas un flux d'événements.
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.
}
}
Étant donné que SuperTextView est piloté par l'animation intégrée, vous pouvez utiliser Adjuster pour implémenter l'effet incroyable. Tout ce que vous devez faire est d'invoquer startAnim()
et stopAnim()
pour démarrer ou arrêter l'animation après avoir noté votre Ajusteur.
Comme vous pouvez le voir, ces magnifiques effets sont mis en œuvre par Adjuster. Cette conception de plugin pull vous permet d'utiliser un nouvel ajusteur dans SuperTextView à tout moment. Il vous suffit de créer un nouvel Ajusteur, puis d'appeler setAdjuster()
.
@Alex_Cin
espère voir l'effet Ripple, donc dans RippleAdjuster.java
, j'ai montré comment utiliser Adjuster avec Animation Driven pour implémenter l'effet Ripple. 【Lien RippleAdjuster.java:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
Vous voyez, vous pouvez mettre en œuvre votre effet d’entraînement.
L'ajusteur est doux conçu la fonction hiérarchique. Vous invoquez Adjuster.setOpportunity(Opportunity opportunity)
pour définir la hiérarchie de votre ajusteur dans SuperTextView .
Dans SuperTextView , la hiérarchie est divisée de bas en haut en : hiérarchie d'arrière-plan, hiérarchie dessinable, hiérarchie du texte. Vous pouvez utiliser Opportunité pour définir la hiérarchie de votre Ajusteur sur la couche souhaitée.
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
Tableau des opportunités.
La valeur par défaut est Opportunity.BEFORE_TEXT
. Comme le deuxième tableau.
En fait, SuperTextView ressemble à une toile sur laquelle vous pouvez dessiner votre création. Cela vous oblige à créer, et vous n'avez jamais besoin d'écrire ce code inutile.
Vous pouvez maintenant commencer à utiliser SuperTextView .
- Si vous aimez SuperTextView , je vous remercie d'aller sur le Github pour me donner une étoile ? !
- De plus, CoorChice partagera occasionnellement des produits secs sur la plateforme de blog, y compris la technologie liée à Android , l'apprentissage automatique , l'algorithme , les nouvelles technologies , Et ** quelques idées et réflexions sur le développement et l'amélioration personnels **. Accédez à la page d'accueil personnelle de CoorChice pour me suivre.
- Groupe QQ SuperTextView : 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.