GitAds
Hola, desarrollador, ¡bienvenido a utilizar SuperTextView !
¿Gracias y a decenas de miles de desarrolladores de Android por confiar en mí?。
SuperTextView se diferencia en que es solo un elemento de vista simple, pero no solo una vista.
Está vivo y dinámico, con una poderosa lógica integrada que continúa brindándole un soporte de desarrollo rico pero excepcionalmente simple.
SuperTextView le salva de la compleja lógica de renderizado. Con una simple llamada al método API , los deslumbrantes efectos de renderizado están disponibles al instante.
Simplemente disfrute de los increíbles efectos visuales que ha escrito y el resto se entregará a SuperTextView .
? haga clic aquí (o escanee el código QR a continuación) para descargar la demostración
【Portal】:《Documento de referencia de desarrollo de SuperTextView》: puede aprender a utilizar SuperTextView para crear su aplicación de manera más eficiente.
【Portal】:《Documento API de SuperTextView》: puede ver todas las API y propiedades disponibles de SuperTextView
Agréguelo en su build.gradle:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:VERSION_CODE'
}
El código de versión de la última versión se puede encontrar aquí.
Soporte v3.2.6 : armeabi-v7a
Soporte v3.2.6.64 : armeabi-v7a
, arm64-v8a
Soporte v3.2.6.99 : armeabi-v7a
, arm64-v8a
, x86
proguard-rules.pro
agregue -keep class com.coorchice.library.gifdecoder.JNI { *; }
En XML, utilice una 'Imagen de red' como imagen de fondo
< 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, configure la 'Imagen de red' para 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
no válidoFix Drawable escribe directamente el valor de color hexadecimal, no muestra el problema
Soporte dibujable para capa especificada
<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"
...
/>
Modo de soporte:
- `beforeText`,Before the text
- `afterText`,After the text
Java tiene funciones correspondientes para admitir la configuración dinámica.
Problema de invalidación del cambio de tipo de escala del modo de escala al arreglar Drawable1 como imagen de fondo
Optimizar trazos de texto
Optimiza la visualización de gif transparentes.
En la nueva versión v3.2.0
, SuperTextView se redefine nuevamente. ¿¡Desarrolladores, miren las sorpresas preparadas para ustedes!???
Esta vez, SuperTextView ofrece a los desarrolladores un potente soporte para controladores Gif .
Si en el pasado ha estado molesto por cómo mostrar un gráfico Gif en la plataforma Android, o está atrapado en el abismo de rendimiento de algunas bibliotecas Gif de terceros. Pero ahora, SuperTextView cambiará por completo esta situación.
Gif y SuperTextView son naturales y naturales, por lo que puede mostrar un diagrama Gif de la forma más familiar y natural. Es tan sencillo como mostrar una imagen normal como siempre.
Gracias al rendimiento ultraalto de c/c++ y al funcionamiento preciso de la memoria. SuperTextView Personalizó el potente motor del controlador Gif para plataformas móviles mediante c/c++ .
El motor Gif de SuperTextView , que puede manipular con precisión la memoria de píxeles de la imagen, solo actualiza la memoria de píxeles local cuando se actualiza el cuadro de la imagen Gif , lo que hace que la eficiencia de representación de imágenes Gif tenga un salto cualitativo.
A través de la tecnología de renderizado asincrónico fuera de la pantalla, SuperTextView puede garantizar una interfaz de aplicación fluida y fluida y una velocidad de respuesta sensible incluso cuando se muestran imágenes GIF de gran tamaño.
En la demostración anterior, el uso de SuperTextView muestra una imagen Gif con una imagen de 265 fotogramas, pero la interfaz de usuario sigue siendo muy fluida.
Muestra un diagrama Gif en SuperTextView , ¡súper fácil!
Puede configurarlo directamente en el documento de diseño XML o agregarlo en su código.
<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" />
Puede mostrar el diagrama Gif para la configuración de SuperTextView como si configurara una imagen normal.
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setDrawable(R.drawable.gif_1);
Así de simple y natural, SuperTextView permite a los desarrolladores mostrar un diagrama Gif sin darse cuenta.
En la lógica del núcleo de SuperTextView , SuperTextView clasifica inteligentemente el gráfico normal y el gráfico Gif , y luego los procesa y optimiza en consecuencia.
¿Qué pasa si tu Gif no es local sino en la nube?
¡No tienes que preocuparte por eso! Todo se entrega a SuperTextView .
stv_1 = (SuperTextView) findViewById(R.id.stv_1);
stv_1.setUrlImage("http://example.com/images/example.gif");
Con solo una línea de código, SuperTextView lo ayudará en segundo plano a cargar la imagen Gif y luego procesará la representación en la pantalla.
De hecho, los bits de visualización de imágenes Drawable1 y Drawable2 de SuperTextView se pueden utilizar para mostrar imágenes Gif . En resumen, todo es lo que conoces.
SuperTextView no solo muestra Gif , sino que también puedes controlar más detalles.
Puedes controlar Gif , reproducir o pausar en cualquier momento.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Play
gifDrawable.play();
// Pause
gifDrawable.stop();
}
En SuperTextView , siempre puede acceder a la imagen del marco que especifique, así como a la imagen que se puede extraer al marco especificado.
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);
}
Dado que SuperTextView puede admitir la representación incremental local, cuando su Gif admite este modo de representación, significa que es posible que deba habilitar ** el modo estricto llamando a
gifDrawable.setStrict(true)
para asegurarse de que el salto de fotograma o la imagen de extracción de fotogramas sean correctos. Esto puede llevar algún tiempo, por lo que debes intentar realizar las operaciones en ** modo estricto * en un subproceso asincrónico.
SuperTextView le permite modificar la velocidad de reproducción del gráfico Gif a voluntad.
if (stv.getDrawable() instanceof GifDrawable) {
// Get the GifDrawable first
GifDrawable gifDrawable = (GifDrawable) stv.getDrawable();
// Set the frame playback interval, 20 ms
gifDrawable.setFrameDuration(20);
}
Con SuperTextView puedes vislumbrar la información de un Gif .
Obtener tamaño GIF
// Get width
int width = gifDrawable.getWidth();
// Get height
int height = gifDrawable.getHeight();
Obtener información del marco 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 ** y ** Gif ** se renderizan gracias a una integración perfecta. Después de ** Drawable1 ** y ** Drawable2 **, todos los elementos de configuración en la pantalla ** Gif ** Figura también pueden entrar en vigor.
app:stv_state_drawable_rotate="90"
Echemos un vistazo a lo que sucede con un Gif en la posición dibujable original.
<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"/>
El efecto es...
Ahora intentemos girar Gif 90 grados.
<com.coorchice.library.SuperTextView
...
// set Gif to rotate 90 degrees
app:stv_state_drawable_rotate="90"
...
/>
SuperTextView increíble implementación Gif El filete del gráfico abre una nueva puerta para los desarrolladores.
Sin embargo, la realización de este efecto es sorprendentemente sencilla.
<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" />
Los desarrolladores pueden incluso agregar fácilmente un borde a 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"/>
El efecto se presenta instantáneamente...
En el pasado, algunas dinámicas interesantes a menudo se detenían en la complejidad y el costo de la implementación. Y SuperTextView te ofrece más posibilidades y tu inspiración puede ser gratuita.
Por ejemplo, la implementación de avatares dinámicos será más sencilla que nunca.
<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"
/>
En el código, puedes configurar un avatar dinámico web directamente.
stv.setUrlImage("http://gif_avatar.gif");
En la nueva versión de SuperTextView , Drawable1 y Drawable2 reciben nuevas capacidades: soporte para clics precisos.
SuperTextView Al monitorear la ubicación donde ocurre la acción de hacer clic, la acción de hacer clic se puede ubicar con precisión en el área donde ocurrió ( Drawable1 , Drawable2 u Otras áreas ) y luego activar las devoluciones de llamada de escucha en consecuencia.
Puede configurar el detector de acción de clic en Drawable para SuperTextView para dar una respuesta precisa cuando ocurre una acción.
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...
}
});
Ahora, cuando usas Drawable1 como imagen de fondo, puedes configurar diferentes modos de zoom para lograr tu efecto favorito.
stv.setScaleType(ScaleType.CENTER);
SuperTextView ofrece a los desarrolladores hasta 3 modos de zoom:
ScaleType.FIT_XY
Estire la imagen hasta convertirla en mosaico.
ScaleType.FIT_CENTER
Centrar la imagen de forma adaptativa.
ScaleType.CENTER
Recorta la imagen centrada. Valores predeterminados.
En el documento de diseño XML , Drawable1 y Drawable2 ahora admiten la configuración directa de color o 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"
El rendimiento de renderizado es al menos un 30% mejor que en el pasado.
Actualice el motor de carga de imágenes predeterminado para admitir el almacenamiento en caché inteligente. Quizás ahora no sea necesario introducir una biblioteca de carga de imágenes de terceros.
SuperTextView se creó para ayudar a los desarrolladores de Android a desarrollar aplicaciones de Android de manera más eficiente, conveniente y elegante.
Ahora la buena fe ha vuelto a intensificarse. El nuevo SuperTextView abrirá más posibilidades a los desarrolladores de Android y, como siempre, SuperTextView traerá funciones más eficientes.
Esta actualización de SuperTextView agrega una capacidad de coloración mágica y poderosa a StateDrawable . Los desarrolladores pueden cambiar fácilmente el color de un ícono sin tener que agregar un ícono de color diferente al proyecto. Esta tecnología le dará a sus aplicaciones de Android la oportunidad de adelgazar.
# modify the drawable color
app:stv_state_drawable_tint="@color/gray"
# modify the drawable2 color
app:stv_state_drawable2_tint="@color/red"
Con una línea de código tan simple, puedes darle instantáneamente a una imagen el poder de cambiar. El color que quieras depende de ti, por supuesto. Todo esto sucedió sin necesidad de introducir otra imagen.
En el código Java, hay una función set/get correspondiente, de modo que los desarrolladores pueden lanzar magia en cualquier momento, cambiando el color de una imagen.
Las mejoras de StateDrawable van más allá de las transformaciones de color. A SuperTextView se le ha dado la capacidad de cambiar la forma de StateDrawable. Con una misma imagen, los desarrolladores pueden combinar una infinidad de posibilidades.
Con unas pocas líneas de código, puedes transformar cualquier imagen como desees.
# Modify the drawable's rotation
app:stv_state_drawable_rotate="90"
# Modify the drawable's rotation
app:stv_state_drawable2_rotate="90"
No hay necesidad de código complicado, SuperTextView es tan simple y elegante como siempre.
De manera similar, en el código Java, también se proporciona la función set/get correspondiente.
Esta capacidad puede ayudar eficazmente a los desarrolladores a comprimir al extremo el volumen de aplicaciones de Android.
¡Este es el texto degradado!
Lo que ofrece SuperTextView es probablemente la solución más simple y elegante para implementar texto degradado hasta el momento. Con una configuración sencilla, puedes conseguir fantásticos efectos de texto degradado.
# 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"
Estas propiedades también proporcionan la interfaz set/get en Java, lo que facilita a los desarrolladores modificarlas en cualquier momento.
Ajustador agregó dos nuevas funciones:
onAttach()
: cuando el Ajustador está configurado en SuperTextView, se invocará.onDetach()
: cuando se elimina el Ajustador de un SuperTextView, se invocará.Al reescribir estas dos funciones en Ajustador, el desarrollador puede realizar el registro estatal, la inicialización, la cancelación del registro, la liberación de recursos y otras operaciones en el momento adecuado.
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
}
}
Esta función permite al desarrollador obtener todos los Ajustadores en un SuperTextView . Si no hay ningún Ajustador en SuperTextView , devolverá nulo.
Todas las propiedades de SuperTextView ahora tienen el prefijo stv_
.
Esto evita conflictos con los nombres de propiedades que SuperTextView puede generar cuando el desarrollador introduce otras bibliotecas de terceros.
Si el desarrollador está utilizando actualmente una versión anterior de SuperTextView , luego de actualizar a la nueva versión, debe anteponer los atributos en todos los xml con el prefijo stv_
.
app:corner="10dp"
corner es el nombre del atributo en la versión anterior. Después de actualizar a la nueva versión, debe agregar el prefijo stv_
al frente y convertirse en stv_corner
.
Si el desarrollador utiliza AndroidStudio , abra el cuadro de diálogo de reemplazo masivo desde Edit > Find > Replace
y siga las instrucciones a continuación.
Si solo SuperTextView usa el mismo espacio de nombres (como app
) en el proyecto del desarrollador, afortunadamente, puedes simplemente reemplazar app:
con app:stv_
.
A partir de SuperTextView v2.0, la función setAdjuster(Adjuster)
está marcada para el estado que se eliminará y en su lugar se agrega la nueva función addAdjuster(Adjuster)
.
En la nueva versión, la función setAdjuster(Adjuster)
se eliminará oficialmente. Si el desarrollador ha utilizado este método antes, cámbielo a addAdjuster(Adjuster)
.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.1.1'
}
Hoy en día, SuperTextView tiene una variedad de características comunes como filetes, bordes, trazos, decoloración de la prensa, diagramas de múltiples estados, diagramas de filete, ajustador versátil, carga de la imagen neta y más. Gracias a esto, los desarrolladores pueden lograr fácilmente una variedad de efectos muy engorrosos, ahorrar mucho tiempo de desarrollo, reducir efectivamente la complejidad de la página y reducir los costos de mantenimiento del proyecto.
Escribe el código, ¡debería ser muy agradable!
Hace ya unos meses, muchos desarrolladores sugirieron a CoorChice si era posible tener SuperTextView con la capacidad de cargar imágenes de red. De hecho, esto también se ha considerado CoorChice hace mucho tiempo, pero en los primeros días de SuperTextView , perfeccionar sus funciones principales sigue siendo el objetivo principal, por lo que no ha estado involucrado en funciones relacionadas con imágenes.
Hasta la última versión grande, SuperTextView v2.0, CoorChie intentó agregar la función de visualización de imágenes. Esto ha permitido ampliar el alcance de SuperTextView , así como la capacidad de agregar trazos, esquinas redondeadas y diagramas de estado a las imágenes. La documentación relacionada se puede encontrar en el siguiente enlace:
【Hola, SuperTextView】 - https://www.jianshu.com/p/1b91e11e441d
Esta vez obtuve una buena respuesta de los desarrolladores. Todo el mundo espera utilizar SuperTextView para mostrar y procesar imágenes. Después del último lanzamiento, los desarrolladores parecen estar más interesados en un SuperTextView que pueda mostrar la imagen de la red.
Entonces, ¡ahora regresa el tan esperado SuperTextView !
Para mostrar una imagen de red, solo necesita el siguiente código en SuperTextView :
SuperTextView stv_1 = (SuperTextView) findViewById(R.id.stv_1);
// fill in the picture Url
stv_1.setUrlImage(url);
El efecto es el mismo que el del segundo ejemplo de mostrar un avatar en la imagen de arriba.
Si desea mostrar la imagen de red como StateDrawable de SuperTextView , está bien.
// fill in the picture Url
stv_1.setUrlImage(url, false);
El segundo parámetro es falso para indicar que la imagen de red no se rellenará con todo el SuperTextView como fondo, sino como un diagrama de estado. Por supuesto, aquí se utilizará todo lo relacionado con el diagrama de estado. Como en el primer ejemplo anterior, todo el diseño, incluidas las imágenes, el texto y el fondo, se procesa en SuperTextView y las imágenes descargadas de la red se colocan como StateDrawable en el lugar.
SuperTextView Para que la biblioteca dependa de la pureza y del tamaño más pequeño posible, no existe un marco de carga de imágenes incorporado. Por lo tanto, de forma predeterminada, se utilizará un motor de imágenes simple incorporado para descargar imágenes, para garantizar que los desarrolladores puedan utilizar la capacidad de mostrar la imagen en red.
Sin embargo, CoorChice aún recomienda que los desarrolladores elijan un marco de carga de imágenes que esté actualmente en uso, según el proyecto, y lo configuren en SuperTextView para cargar la imagen. SuperTextView tiene la capacidad de adaptarse a cualquier marco de carga de imágenes. A continuación, CoorChice le mostrará cómo instalar un marco de imagen existente en SuperTextView con los ejemplos de Glide y Picasso.
En SuperTextView , el motor de carga de imágenes principal se abstrae en la interfaz Engine y el desarrollador necesita implementar un Engine según el marco de imagen utilizado.
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) {
}
});
}
}
Después de implementar Engine , el siguiente paso es instalarlo en SuperTextView .
Se recomienda instalar CoorChice en onCreate()
de la aplicación, de modo que cuando necesite usar SuperTextView para cargar y mostrar la imagen de red, pueda usar el marco de carga de imágenes de tres partes.
public class STVApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// 安装图片引擎
ImageEngine.install(new GlideEngine(this));
// ImageEngine.install(new PicassoEngine(this));
}
}
Una línea de código para una fácil instalación.
Cabe señalar que en cualquier momento, la instancia de Engine postinstalada siempre reemplazará la instancia de Engine previamente instalada, es decir, SuperTextView solo permite que exista una instancia de Engine globalmente.
Ahora puede hacer que SuperTextView cargue la imagen utilizando el marco de carga de imágenes de tres partes especificado.
dependencies {
compile 'com.github.chenBingX:SuperTextView:v3.0.0'
}
Desde el principio, CoorChice tiene una visión y espera poder crear dicho control: puede satisfacer la mayoría de sus necesidades de desarrollo, mostrar texto, imágenes, geometría, animación y estado, para que pueda usar un control para ser más eficiente. del trabajo de desarrollo. Es tan poderoso, como si tuviera una mentalidad mental, aceptara sus comentarios y presentara una imagen sorprendente de acuerdo con su mente. Con la llegada de 【SuperTextView v2.0】, estamos un paso más cerca de esta idea. ¡Ahora ven y mira 【SuperTextView v2.0】!
En 【SuperTextView v2.0】, se agregó soporte para visualización de imágenes. Pero no se trata sólo de mostrar imágenes, también es inteligente recortar la imagen a la forma deseada según lo que ingresas.
Agregue una esquina redondeada a la imagen, agregue un borde o conviértala directamente en un círculo. Todo lo que necesitas hacer es establecer algunas propiedades simples que serán visibles instantáneamente ante tus ojos.
¿Cómo utilizar SuperTextView para mostrar una imagen?
Simplemente agregue las siguientes dos líneas de código al xml.
<com.coorchice.library.SuperTextView
...
app:stv_state_drawable="@drawable/avatar1"
app:stv_drawableAsBackground="true"
...
/>
Si es un usuario leal de SuperTextView
, encontrará que el state_drawable
original ahora se puede usar para mostrar una imagen.
Ahora que tu imagen está frente a ti, ¿quizás quieras hacer algo diferente al respecto, por ejemplo, agregar una esquina redondeada o convertirla directamente en un círculo? No hay problema, SuperTextView
ahora está totalmente calificado para este tipo de trabajo.
<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"
...
/>
¡Tan fácil! Sobre la base del original sólo es necesario establecer una corner
razonable.
A veces es posible que necesites utilizar un borde para envolver la imagen, como en el ejemplo anterior. Así es, esto definitivamente está dentro del alcance de la capacidad 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
controla el color del borde y app:stv_stroke_width
controla el ancho del borde. Todo es tan fluido, un control inteligente debería ser así, ¿verdad?
Ante los complejos cambios en la demanda, 【SuperTextView】 dio origen a un segundo dibujable para hacer frente a esta complejidad.
state_drawable2
.
Ahora, CoorChice le mostrará cómo se implementan los dos efectos en la imagen de arriba.
<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"
...
/>
Como ya sabrá, state_drawable2
continúa con todas las operaciones fluidas de la primera generación. ¡Bajo el uso inteligente de tu dispositivo inteligente, 【SuperTextView】 podrá brillar!
Anteriormente, el diseño de Adjuster
hacía de 【SuperTextView】un alma y un control más inteligente. La inserción del proceso de dibujo, la captura de eventos táctiles, facilita cambiar el estado de un control desde el exterior. La creatividad comienza con el corazón y llega hasta aquí.
¡Ahora, 【SuperTextView】puede transportar hasta 3 Adjuster
al mismo tiempo! Tal vez tu creatividad sea más deslumbrante.
En el ejemplo anterior, CoorChice agrega los dos primeros efectos 【Barrido】 y 【Mover】 a un 【SuperTextView】, y el resultado es lo que ve.
Más Adjuster
significa más combinaciones y más sorpresas. En 【v1.4.0】, CoorChice también utiliza Adjuster
para implementar fácilmente la función de cambio de color de la prensa.
Esta es la era del Adjuster
, puedes usarlo para ser creativo.
setAdjuster(Adjuster)
original aún se conserva, pero las versiones futuras se eliminarán y deberá migrar lo antes posible. La nueva alternativa es addAdjuster(Adjuster)
.
app:stv_shaderMode="leftToRight"
que controla el modo Shader. La derecha es app:stv_shaderMode="leftTopRight"
. Si utiliza esta propiedad, corríjala después de actualizar 【SuperTextView v2.0】.set/getPressBgColor()
y set/getPressTextColor()
para controlar el color de fondo en el código. Sólo necesita configurar estas propiedades en el archivo xml de esta manera:
# 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()
. Puede obtener la información de las esquinas en SuperTextView
, a veces realmente desea utilizar este método. dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.4'
}
mSuperTextView.setFrameRate(30);
// set 30 fps
Un toque es decir cambio, imagina que no se puede detener. Artista, juega con tu creatividad!
Puedes configurar el efecto de sombreado en el xml y puedes hacerlo.
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
Por supuesto, estas propiedades se pueden cambiar mediante el método set/get
. p.ej:
mSuperTextView.setShaderStartColor(Color.RED);
Ahora, se proporciona el javadoc SuperTextView , puede descargarlo desde aquí (haga clic en index.html
para comenzar): Javadoc SuperTextView: http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?attname=
cómo usar SuperTextView 1.3 en build.gradle :
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
compile 'com.github.chenBingX:SuperTextView:v1.3'
}
mSuperTextView.setAdjuster(new MoveEffectAdjuster())
.setAutoAdjust(true)
.startAnim();
Las propiedades de SuperTextView se pueden configurar fácilmente en XML y se puede ver el efecto inmediatamente. Simplemente me gusta usar 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"
/>
Todos los atributos se pueden configurar en java. También puedes obtener su valor. p.ej:
mSuperTextView.setCorner(10);
mSuperTextView.getCorner();
Por lo general, debe escribir y administrar una gran cantidad de archivos para implementar el efecto del cuadro anterior. Pero ahora puedes hacer esto fácilmente en XML.
A diferencia del Corner general, SuperTextView puede permitir un control preciso de la ubicación de la esquina. Uno, dos, tres, lo que quieras.
¡Usar texto de trazo es muy fácil!
A diferencia del dibujable de estado general, SuperTextView admite opciones de control más precisas. Puede configurar fácilmente el estado del dibujable, solo para usar un atributo.
El ajustador está diseñado para insertar algunas opciones en el proceso de dibujo de SuperTextView . Tiene un sentido muy importante. Por ejemplo, DefaultAdjuster puede ajustar automáticamente el tamaño del texto antes de dibujarlo. Por supuesto, puedes usarlo para hacer cualquier cosa.
Si desea utilizar el Ajustador, debe invocar SuperTextView.setAutoAdjust(true)
. Por supuesto, puedes invocar SuperTextView.setAutoAdjust(false)
para detenerlo en cualquier momento. Debes invocar estos métodos con cuidado. Porque, una vez que invoca SuperTextView.setAutoAdjust(true)
, pero no configuró su Ajustador antes, el DefaultAdjuster se usará inmediatamente, hasta que usted mismo configure su Ajustador.
Para implementar un Ajustador, debe extender SuperTextView.Adjuster e implementar el método de adjust(SuperTextView v, Canvas canvas)
. Ajustador.adjust() se invocará cada vez que ocurra el sorteo, eso significa que puede intervenir el proceso de dibujo en el exterior.
public class YourAdjuster extends SuperTextView.Adjuster {
@Override
protected void adjust(SuperTextView v, Canvas canvas) {
//do your business。
}
}
Atención, si inicias la animación, debes tener mucho cuidado al escribir el código en el ajustador(). Porque la animación se dibujará a 60 fps/s. Eso significa que este método se invocará 60 veces por segundo. Por lo tanto, no cree ningún objeto nuevo en este método. De lo contrario, su aplicación sufrirá un gran retraso porque provocará 【Memory Thrashing】 y GC se producirá con frecuencia. Sobre el motivo detallado, puedes ver mis dos artículos:
Si anula el método onTouch(SuperTextView v, MotionEvent event)
del Ajustador, obtendrá los eventos táctiles de SuperTextView . Es muy importante manejar una serie de eventos táctiles de SuperTextView . Y debes devolver verdadero en onTouch()
; de lo contrario, solo obtendrás un evento ACTION_DOWN, no un flujo de eventos.
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.
}
}
Debido a que SuperTextView está impulsado por la animación incorporada, puede usar el Ajustador para implementar el efecto increíble. Todo lo que necesitas hacer es invocar startAnim()
y stopAnim()
para iniciar o detener la animación después de que tu Ajustador escriba.
Como puede ver, Ajustador implementa estos hermosos efectos. Este diseño de complemento de extracción le permite usar un nuevo Ajustador en SuperTextView en cualquier momento. Solo necesita crear un nuevo Ajustador y luego invocar setAdjuster()
.
@Alex_Cin
espera ver el efecto dominó, por lo que en RippleAdjuster.java
, he mostrado cómo usar el Ajustador con animación impulsada para implementar el efecto dominó. 【Enlace RippleAdjuster.java:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
Mira, puedes implementar tu efecto dominó.
El ajustador tiene un bonito diseño para la función de jerarquía. Invocas Adjuster.setOpportunity(Opportunity opportunity)
para establecer la jerarquía de tu Ajustador en SuperTextView .
En SuperTextView , la jerarquía se divide de abajo hacia arriba en: Jerarquía de fondo, Jerarquía dibujable, Jerarquía de texto. Puede usar Oportunidad para establecer la jerarquía de su Ajustador en la capa que desee.
public enum Opportunity {
BEFORE_DRAWABLE, //between backgournd layer and drawable layer
BEFORE_TEXT, //between drawable layer and text layer
AT_LAST //The top layer
}
Gráfico de oportunidades.
El valor predeterminado es Opportunity.BEFORE_TEXT
. Como el segundo gráfico.
De hecho, SuperTextView es como un lienzo y puedes dibujar tu creatividad en él. Te obliga a crear y nunca necesitas escribir este código inútil.
Ahora puedes empezar a utilizar SuperTextView .
- Si te gusta SuperTextView , te agradezco que vayas a Github para darme una estrella . !
- Además, CoorChice ocasionalmente compartirá productos secos en la plataforma de blogs, incluida tecnología relacionada con Android , aprendizaje automático , algoritmos , nuevas tecnologías y ** algunas ideas y pensamientos sobre el desarrollo y la mejora personal**. Vaya a la 【Página de inicio personal】 de CoorChice para seguirme.
- Grupo 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.