GitAds
안녕하세요,개발자, SuperTextView 사용을 환영합니다!
저를 믿어주신 수만 명의 Android 개발자와 여러분께 감사드립니다.
SuperTextView는 단순한 뷰 요소가 아니라 단순한 뷰 요소라는 점에서 다릅니다.
풍부하면서도 매우 간단한 개발 지원을 지속적으로 제공하는 강력한 임베디드 로직을 통해 살아있고 역동적입니다.
SuperTextView는 복잡한 렌더링 논리를 사용하지 않아도 됩니다. 간단한 API 메소드 호출만으로 눈부신 렌더링 효과를 즉시 사용할 수 있습니다.
당신이 작성한 놀라운 시각 효과를 즐기고 나머지는 SuperTextView 로 전달됩니다.
? 데모 를 다운로드하려면 여기를 클릭하세요(또는 아래 qr 코드를 스캔하세요).
【포털】: 《SuperTextView 개발 참조 문서》- SuperTextView를 사용하여 애플리케이션을 보다 효율적으로 구축하는 방법을 배울 수 있습니다.
【포털】: 《SuperTextView API 문서》 — SuperTextView의 사용 가능한 API 및 속성을 모두 볼 수 있습니다.
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
잘못되었습니다.Drawable이 16진수 색상 값을 직접 쓰는 문제가 표시되지 않는 문제 수정
지정된 레이어에 대한 드로어블 지원
<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에는 동적 구성을 지원하는 해당 기능이 있습니다.
Drawable1을 배경 이미지로 고정할 때 스케일 모드 scaleType 스위치 무효화 문제
텍스트 획 최적화
투명 gif 표시 최적화
새로운 v3.2.0
버전에서는 SuperTextView가 다시 정의됩니다. 개발자 여러분, 여러분을 위해 준비한 놀라움을 살펴보세요!???
이번에 SuperTextView는 개발자에게 강력한 Gif 드라이버 지원을 제공합니다.
과거에 Android 플랫폼에서 Gif 차트를 표시하는 방법에 대해 화가 났거나 일부 타사 Gif 라이브러리의 성능 저하에 갇혀 있었다면. 하지만 이제 SuperTextView는 이러한 상황을 완전히 바꿔줄 것입니다.
Gif 와 SuperTextView는 자연스럽고 자연스럽기 때문에 가장 친숙하고 자연스러운 방식으로 Gif 다이어그램을 표시할 수 있습니다. 평소처럼 일반 사진을 보여주는 것만큼 간단합니다.
c/C++ 의 초고성능과 정밀한 메모리 작동 덕분입니다. SuperTextView는 c/C++를 사용하여 모바일 플랫폼용 강력한 Gif 드라이버 엔진을 사용자 정의했습니다.
이미지 픽셀 메모리를 정확하게 조작할 수 있는 SuperTextView 의 Gif 엔진은 Gif 이미지의 프레임 새로 고침 시 로컬 픽셀 메모리만 업데이트하여 Gif 이미지 렌더링 효율성을 질적으로 향상시켰습니다.
비동기 오프스크린 렌더링 기술을 통해 SuperTextView는 대형 GIF 이미지를 표시할 때에도 부드럽고 매끄러운 애플리케이션 인터페이스와 민감한 응답 속도를 보장할 수 있습니다.
위의 데모에서 SuperTextView를 사용하면 265 프레임 이미지의 Gif 이미지가 표시되지만 사용자 인터페이스는 여전히 매우 부드럽습니다.
SuperTextView 에 GIF 다이어그램을 표시하세요. 아주 쉽습니다!
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" />
일반 이미지를 구성하는 것처럼 SuperTextView 구성에 대한 Gif 다이어그램을 표시할 수 있습니다.
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 이미지를 로드한 다음 화면 렌더링을 처리하도록 도와줍니다.
실제로 SuperTextView 의 Drawable1 및 Drawable2 이미지 표시 비트를 사용하여 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"
원래 Drawable 위치에 있는 Gif 에 무슨 일이 일어나는지 살펴보겠습니다.
<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 또는 기타 영역 )에서 정확하게 위치를 찾은 다음 그에 따라 Listening 콜백을 트리거할 수 있습니다.
SuperTextView 에 대한 Drawable 의 클릭 동작 리스너를 설정하여 동작이 발생할 때 정확한 응답을 할 수 있습니다.
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 코드에서는 해당 설정/가져오기 기능도 제공됩니다.
이 기능은 개발자가 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"
또한 이러한 속성은 Java에서 설정/가져오기 인터페이스를 제공하므로 개발자가 언제든지 쉽게 수정할 수 있습니다.
조정자는 두 가지 새로운 기능을 추가했습니다:
onAttach()
: 조정자가 SuperTextView 로 설정되면 호출됩니다.onDetach()
: 조정자가 SuperTextView 에서 제거되면 호출됩니다.adjuster에서 이 두 가지 기능을 다시 작성함으로써 개발자는 상태 등록, 초기화, 등록 취소, 리소스 해제 및 기타 작업을 적시에 수행할 수 있습니다.
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 에 조정자가 없으면 null을 반환합니다.
SuperTextView 의 모든 속성에는 이제 stv_
접두사가 붙습니다.
이렇게 하면 개발자가 다른 타사 라이브러리를 도입할 때 SuperTextView가 생성할 수 있는 속성 이름과의 충돌을 방지할 수 있습니다.
개발자가 현재 이전 버전의 SuperTextView를 사용하고 있는 경우 새 버전으로 업그레이드한 후 모든 xml의 속성 앞에 stv_
접두사를 붙여야 합니다.
app:corner="10dp"
Corner는 이전 버전의 속성 이름입니다. 새 버전으로 업그레이드한 후에는 앞에 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 초창기에는 여전히 핵심 기능의 완성도를 최우선 목표로 삼아 이미지 관련 기능에는 관여하지 않았습니다.
CoorChie는 마지막 빅 버전인 SuperTextView v2.0까지 사진 표시 기능을 추가하려고 했습니다. 이를 통해 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);
위 이미지에 아바타를 표시한 두 번째 예와 효과는 동일합니다.
SuperTextView 의 StateDrawable로 네트 그림을 표시하려면 괜찮습니다.
// fill in the picture Url
stv_1.setUrlImage(url, false);
두 번째 매개변수는 false 로, 넷 그림이 전체 SuperTextView를 배경으로 채우지 않고 상태 다이어그램으로 채워지는 것을 나타냅니다. 물론, 상태 다이어그램에 관한 모든 것이 여기서 사용됩니다. 위의 첫 번째 예와 같이 그림, 텍스트, 배경을 포함한 전체 레이아웃이 SuperTextView 에서 처리되고, 넷에서 다운로드한 그림이 그 자리에 StateDrawable 로 배치됩니다.
SuperTextView 순수성과 가능한 최소 크기에 의존하는 라이브러리를 유지하기 위해 내장된 이미지 로드 프레임워크가 없습니다. 따라서 기본적으로 내장된 간단한 이미지 엔진을 사용하여 사진을 다운로드하여 개발자가 네트 사진을 표시하는 기능을 사용할 수 있도록 합니다.
그러나 CoorChice에서는 여전히 개발자가 프로젝트에 따라 현재 사용 중인 이미지 로딩 프레임워크를 선택하고 이를 SuperTextView 로 설정하여 그림을 로드할 것을 권장합니다. SuperTextView 에는 모든 이미지 로드 프레임워크에 적응할 수 있는 기능이 있습니다. 아래 CoorChice에서는 Glide 및 Picasso 예제를 사용하여 SuperTextView 에 기존 이미지 프레임워크를 설치하는 방법을 보여줍니다.
SuperTextView 에서 핵심 이미지 로딩 엔진은 인터페이스 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));
}
}
한 줄의 코드로 쉽게 설치할 수 있습니다.
언제든지 사후 설치된 엔진 인스턴스는 항상 이전에 설치된 엔진 인스턴스를 대체한다는 점에 유의해야 합니다. 즉, SuperTextView는 전역적으로 하나의 엔진 인스턴스만 존재하도록 허용합니다.
이제 지정된 타사 이미지 로드 프레임워크를 사용하여 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
1세대의 모든 원활한 작업을 계속합니다. 여러분의 스마트한 활용으로 【SuperTextView】가 빛날 수 있습니다!
이전에는 Adjuster
의 디자인으로 인해 【SuperTextView】가 영혼과 스마트한 제어가 되었습니다. 드로잉 프로세스를 삽입하고 터치 이벤트를 캡처하면 외부에서 컨트롤 상태를 쉽게 변경할 수 있습니다. 창의성은 마음에서 시작되어 여기로 갑니다.
이제 【SuperTextView】는 동시에 최대 3명의 Adjuster
보유할 수 있습니다! 어쩌면 당신의 창의력이 더욱 눈부시게 될 것입니다.
위의 예에서 CoorChice는 【SuperTextView】에 【Sweep】과 【Move】 두 가지 초기 효과를 추가하고 결과는 여러분이 보는 것과 같습니다.
더 많은 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);
이제 SuperTextView javadoc이 제공됩니다. 여기에서 다운로드할 수 있습니다(시작하려면 index.html
클릭). SuperTextView javadoc: http://ogemdlrap.bkt.clouddn.com/SuperTextView%E6%96%87%E6%A1%A3% 20.zip?attname=
build.gradle 에서 SuperTextView 1.3을 사용하는 방법 :
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에서 이 작업을 쉽게 수행할 수 있습니다.
일반 Corner와 다르게 SuperTextView는 Corner의 위치를 정밀하게 제어할 수 있도록 지원합니다. 하나, 둘, 셋, 원하는 대로.
스트로크 텍스트를 사용하는 것은 매우 쉽습니다!
일반적인 상태 드로어블과 달리 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。
}
}
주의하세요. 애니메이션을 시작한다면 adjuster()에 코드를 작성하는 데 매우 주의해야 합니다. 애니메이션은 60fps/s로 그려지기 때문입니다. 즉, 이 메소드는 1초에 60번 호출됩니다. 따라서 이 메소드에서 새 객체를 생성하지 마십시오. 그렇지 않으면 앱이 큰 지연을 겪을 것입니다! 【Memory Thrashing】이 발생하고 GC가 자주 발생하기 때문입니다. 자세한 이유에 대해서는 다음 두 기사를 참조하세요.
adjuster의 onTouch(SuperTextView v, MotionEvent event)
메서드를 재정의하면 SuperTextView 의 터치 이벤트를 받게 됩니다. 처리할 SuperTextView 의 일련의 터치 이벤트를 가져오는 것이 매우 중요합니다. 그리고 onTouch()
에서 true를 반환해야 합니다. 그렇지 않으면 이벤트 흐름이 아닌 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 에는 애니메이션이 내장되어 있으므로 조절기를 사용하여 믿을 수 없는 효과를 구현할 수 있습니다. 당신이 해야 할 일은 adjuster가 기록한 후 애니메이션을 시작하거나 중지하기 위해 startAnim()
및 stopAnim()
호출하는 것뿐입니다.
보시다시피, 이 아름다운 효과는 조절자에 의해 구현됩니다. 이 풀 플러그인 디자인을 통해 언제든지 SuperTextView 에서 새로운 조정자를 사용할 수 있습니다. 새로운 조절자를 생성한 다음 setAdjuster()
호출하기만 하면 됩니다.
@Alex_Cin
Ripple Effect를 보고 싶어하므로 RippleAdjuster.java
에서 Ripple Effect를 구현하기 위해 Animation Driven과 함께 adjuster를 사용하는 방법을 보여주었습니다. 【RippleAdjuster.java 링크:https://github.com/chenBingX/SuperTextView/blob/master/app/src/main/java/com/coorchice/supertextview/SuperTextView/Adjuster/RippleAdjuster.java】
Ripple Effect를 구현할 수 있습니다.
조정자 는 계층 구조 기능을 훌륭하게 설계했습니다. SuperTextView 에서 조정자의 계층 구조를 설정하려면 Adjuster.setOpportunity(Opportunity opportunity)
호출합니다.
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.