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