TextView에 Vector drawable 사용
8052 단어 Android
안드로이드 및 Vector
안드로이드는 2년 전쯤부터 Vector 형태를 사용할 수 있게 됐다.
InstantApp의 출현을 통해 알 수 있듯이 현재의 모바일 응용 프로그램은 반드시 응용 프로그램의 용량을 줄여야 한다.
drawable (left|top|right|bottom)
갑작스럽게도 당신은 어떻게 이런 포석을 하려고 합니까?
간단하게 말하면LinerLayout에서oricontation을horizontal로 설정하고ImageView와TextView를 병렬하는 방법이 있다
Android에는 drawable이라는 TextView에서 drawable를 간단하게 설정할 수 있는 API가 있습니다.
위의 Vector 형식의 파일은 TextView에서도 설정할 수 있습니다.
그러나 Lolipop보다 낮은 OS 버전에서 사용할 때는 selector로 둘러서서 State List를 만들어야 한다.<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_android_black_24dp" />
</selector>
2017년에는 minsdk version을 21로 만들 수 있는 비즈니스 애플리케이션이 아직 많지 않아요.
텍스뷰에서 Vector Drawable를 사용하려면 drawable의 이중 관리가 됩니다.
제가 맡은 서비스의 아이콘은 모두 Vector Drawarble입니다. 이중 관리를 피하기 위해서입니다.
CompoundIconTextView라는 프로그램 라이브러리를 만들었습니다.
리소스 파일을 통해 비트맵을 만들어 Drawable 형식으로 변환하는 것은 매우 간단하다.
private Drawable resource2VectorDrawable(@DrawableRes final int resourceId, @ColorInt final int iconColor,
final int iconWidth, final int iconHeight) {
final Context context = getContext();
final Drawable drawable = AppCompatResources.getDrawable(context, resourceId);
if (drawable == null) {
throw new Resources.NotFoundException("Resource not found : %s." + resourceId);
}
// See if we need to 'fix' the drawableLeft
fixDrawable(drawable);
// Set color
DrawableCompat.setTint(drawable, iconColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
// Resize Bitmap
return new BitmapDrawable(context.getResources(),
Bitmap.createScaledBitmap(drawable2Bitmap(drawable, iconWidth, iconHeight), iconWidth, iconHeight, true));
}
private static Bitmap drawable2Bitmap(final Drawable drawable, final int iconWidth, final int iconHeight) {
final Bitmap bitmap = Bitmap.createBitmap(iconWidth, iconHeight, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
TextView의drawable는 icon의 세로 사이즈를 자유롭게 결정할 수 없지만 자유롭게 변경할 수 있습니다.
아이콘의 색깔도 자유롭게 바꿀 수 있어 사용하기에 매우 편리하다.
4 학과 이하에서vector의 색을 바꾸려면gradle에 다음과 같은 내용을 기술해야 합니다. 주의하십시오.android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
CompoundIconTextView : https://github.com/AAkira/CompoundIconTextView
support library로 대응했으면 좋겠네요.ω`)
Reference
이 문제에 관하여(TextView에 Vector drawable 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AAkira/items/d3979a589fef75f42b25
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
갑작스럽게도 당신은 어떻게 이런 포석을 하려고 합니까?
간단하게 말하면LinerLayout에서oricontation을horizontal로 설정하고ImageView와TextView를 병렬하는 방법이 있다
Android에는 drawable이라는 TextView에서 drawable를 간단하게 설정할 수 있는 API가 있습니다.
위의 Vector 형식의 파일은 TextView에서도 설정할 수 있습니다.
그러나 Lolipop보다 낮은 OS 버전에서 사용할 때는 selector로 둘러서서 State List를 만들어야 한다.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_android_black_24dp" />
</selector>
2017년에는 minsdk version을 21로 만들 수 있는 비즈니스 애플리케이션이 아직 많지 않아요.텍스뷰에서 Vector Drawable를 사용하려면 drawable의 이중 관리가 됩니다.
제가 맡은 서비스의 아이콘은 모두 Vector Drawarble입니다. 이중 관리를 피하기 위해서입니다.
CompoundIconTextView라는 프로그램 라이브러리를 만들었습니다.
리소스 파일을 통해 비트맵을 만들어 Drawable 형식으로 변환하는 것은 매우 간단하다.
private Drawable resource2VectorDrawable(@DrawableRes final int resourceId, @ColorInt final int iconColor,
final int iconWidth, final int iconHeight) {
final Context context = getContext();
final Drawable drawable = AppCompatResources.getDrawable(context, resourceId);
if (drawable == null) {
throw new Resources.NotFoundException("Resource not found : %s." + resourceId);
}
// See if we need to 'fix' the drawableLeft
fixDrawable(drawable);
// Set color
DrawableCompat.setTint(drawable, iconColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
// Resize Bitmap
return new BitmapDrawable(context.getResources(),
Bitmap.createScaledBitmap(drawable2Bitmap(drawable, iconWidth, iconHeight), iconWidth, iconHeight, true));
}
private static Bitmap drawable2Bitmap(final Drawable drawable, final int iconWidth, final int iconHeight) {
final Bitmap bitmap = Bitmap.createBitmap(iconWidth, iconHeight, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
TextView의drawable는 icon의 세로 사이즈를 자유롭게 결정할 수 없지만 자유롭게 변경할 수 있습니다.아이콘의 색깔도 자유롭게 바꿀 수 있어 사용하기에 매우 편리하다.
4 학과 이하에서vector의 색을 바꾸려면gradle에 다음과 같은 내용을 기술해야 합니다. 주의하십시오.
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
CompoundIconTextView : https://github.com/AAkira/CompoundIconTextView support library로 대응했으면 좋겠네요.ω`)
Reference
이 문제에 관하여(TextView에 Vector drawable 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AAkira/items/d3979a589fef75f42b25텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)