шрифты
шрифты
Как добавить шрифт в свое предложение?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
Это больше, чем вы спрашивалипарень писал(а):Как добавить шрифт в свое предложение?
Если нельзя добавить шрифт, то можно ли Рисовать их программно?
Рассказано как правильно добавлять шрифты.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: шрифты
Спасибо. Правильно ли я понимаю, что надо скачать теперь этот шрифт и положить в папку asset?
а использовать только программно? Или можно его указывать в XML ?
а использовать только программно? Или можно его указывать в XML ?
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: шрифты
Можно http://stackoverflow.com/questions/1228 ... -whole-app Но, я так полагаю, ты не очень владеешь android-ом, правильно? Решение, которое предложили тебе выше шикарно. Так что если могёшь и то, и то соединить воедино - дерзай. Если нет, то лучше используй статью и устанавливай программно. Результат будет тот же.парень писал(а):Можно ли по умолчанию сделать шрифт, типа в стиле или в теме?
Если не понятно пишу - звиняйте, я не выспался.
Re: шрифты
я лишь понял что если написать:rezak90 писал(а):видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?
Код: Выделить всё
tvContent.setTypeface(Typefaces.get(getActivity(), FontType.ITALIC));
а я спрашиваю есть ли способы чтобы в xml у эллемента я пишу например: font-famili:Roboto-italic и тогда это будет такой то шрифт???
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
есть, но опять таки ты не понял статью, если сделать как ты то будет утечка памятипарень писал(а):а я спрашиваю есть ли способы чтобы в xml у эллемента я пишу например: font-famili:Roboto-italic и тогда это будет такой то шрифт???
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: шрифты
печалькапарень писал(а):я лишь понял что если написать:rezak90 писал(а):видимо ты мою статью так и не понялпарень писал(а):Можно ли поумолчанию сделать шрифт, типа в стиле или в теме?то тогда шрифт именно этого эллемента будет fonts/Roboto-Italic.ttfКод: Выделить всё
tvContent.setTypeface(Typefaces.get(getActivity(), FontType.ITALIC));
а я спрашиваю есть ли способы чтобы в xml у эллемента я пишу например: font-famili:Roboto-italic и тогда это будет такой то шрифт???
Re: шрифты
так. ребят. что за комментарии? обьясните мне тогда.
в статье есть класс который сделан для того чтобы не было утечки памяти - верно? (кстати в 8 строчке есть эллемент html'a <span...> - это опечатка? )
если я потом задаю эллементу с помощью этого класса шрифт то утечки нету. сам я не знаю как это проверить но полагаюсь на вас.
Вопрос остался актуальным - есть ли готовый пример реализации шрифта таким образом чтобы всем эллементам TextView задавался шрифт выбранный мной?
Я так понял уже, благодаря ссылке adarash'a , что это возможно. для этого надо соединить два данных мне вами примера.
А еще я понял что мне надо менять структуру своего приложения. ибо уже сам в нем не могу найти тот или иной метод.
можете посоветовать "правльный" на ваш взгляд вариант? чтобы было понятно например где лучше обработки писать - во фрагменте или в главной активити, а если ссыль есть на новую активити из фрамента то как лучше - то где лучше обрабатывать результат в созданной активити или чтобы она возвращала данные а обработка их шла в "родителе" ...
Надеюсь что-то из мною написанного понятно (2 сутки как не спал еще...)
в статье есть класс который сделан для того чтобы не было утечки памяти - верно? (кстати в 8 строчке есть эллемент html'a <span...> - это опечатка? )
если я потом задаю эллементу с помощью этого класса шрифт то утечки нету. сам я не знаю как это проверить но полагаюсь на вас.
Вопрос остался актуальным - есть ли готовый пример реализации шрифта таким образом чтобы всем эллементам TextView задавался шрифт выбранный мной?
Я так понял уже, благодаря ссылке adarash'a , что это возможно. для этого надо соединить два данных мне вами примера.
А еще я понял что мне надо менять структуру своего приложения. ибо уже сам в нем не могу найти тот или иной метод.
можете посоветовать "правльный" на ваш взгляд вариант? чтобы было понятно например где лучше обработки писать - во фрагменте или в главной активити, а если ссыль есть на новую активити из фрамента то как лучше - то где лучше обрабатывать результат в созданной активити или чтобы она возвращала данные а обработка их шла в "родителе" ...
Надеюсь что-то из мною написанного понятно (2 сутки как не спал еще...)
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
не могу отстаю от намеченного плана на сутки
Итак, вроде должно получится так: (поправьте если я ошибся)
создаем класс (он для кеша шрифта):
далее создаем класс который будет обрабатывать вьюшку:
потом мы создаем attr.xml - Куда его засунуть?
далее в теме мы указываем это: это в mystyles.xml?
потом мы задаем несколько стилей для вьюшки с несколькими шрифтами - Верно?
И тогда мы в эклипсе при создании xml разметки, просто задаем стиль вьюшке.
Это так?
Итак, вроде должно получится так: (поправьте если я ошибся)
создаем класс (он для кеша шрифта):
Код: Выделить всё
public class Typefaces
{
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context context, FontType type)
{
synchronized (cache)
{
if (!cache.containsKey(type.name()))
{
Typeface tf = null;
switch (type)
{
case BLACK:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Black.ttf");
break;
case BLACK_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BlackItalic.ttf");
break;
case BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
break;
case BOLD_CONDENSED:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldCondensed.ttf");
break;
case BOLD_CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldCondensedItalic.ttf");
break;
case BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldItalic.ttf");
break;
case CONDENSED:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Condensed.ttf");
break;
case CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-CondensedItalic.ttf");
break;
case ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Italic.ttf");
break;
case LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
break;
case LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
break;
case MEDIUM:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Medium.ttf");
break;
case MEDIUM_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-MediumItalic.ttf");
break;
case REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Regular.ttf");
break;
case THIN:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Thin.ttf");
break;
case THIN_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-ThinItalic.ttf");
break;
default:
break;
}
cache.put(type.name(), tf);
}
return cache.get(type.name());
}
}
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_CONDENSED, BOLD_CONDENSED_ITALIC, BOLD_ITALIC, CONDENSED, CONDENSED_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC;
}
}
Код: Выделить всё
public class MyTextView extends android.widget.TextView
{
public MyTextView(Context context)
{
this(context, null);
}
public MyTextView(Context context, AttributeSet attrs)
{
this(context, attrs, 0);
}
public MyTextView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs);
if (this.isInEditMode()) return ;
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle);
final String customFont = a.getString(R.styleable.SomeStyle_font);
// this.setTypeface(Typeface.createFromAsset(context.getAssets(), customFont)
// Так должно браться из кеша. Верно?
this.setTypeface(Typefaces.get(context, FontType.ITALIC));
);
}
}
Код: Выделить всё
<declare-styleable name="SomeStyle">
<attr name="font" format="string" />
</declare-styleable>
Код: Выделить всё
<item name="android:textViewStyle">@style/MyTextView</item>
Код: Выделить всё
<style name="MyTextView1" parent="@android:style/Widget.TextView">
<item name="font">МОЙШРИФТ1.ttf</item>
</style><style name="MyTextView2" parent="@android:style/Widget.TextView">
<item name="font">МОЙШРИФТ2.ttf</item>
</style>
И тогда мы в эклипсе при создании xml разметки, просто задаем стиль вьюшке.
Это так?
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
Разобрался. Все работает. В кеш загружается. В XML выбирать шрифт можно!
Для того чтобы шрифт отображался нам в XML файле надо отображать не TextView, а наш, кастомный:
com.example.buhg.RobotoTextView - com.example.bum - имя нажего приложения, RobotoTextView - класс который создадим далее.
app:font="LIGHT" - указывает название шрифта, я их делал "под себя", и вы можете их изменить. В моем приложении для экспериментов добавлено 18 шрифтов Roboto. Обратите внимание что если название шрифта указать с ошибкой, вылетит ошибка и приложение упадет.
Далее создадим класс Typefaces - он необходим для того чтобы в кеш загружался наш шрифт и не вызывал перезаполнение памяти...
ну и затем создадим класс RobotoTextView:
typeA=FontType.valueOf(customFont); - если мы укажем в TextView что в первом коде неправильное название шрифта то именно здесь вылетит ошибка. Мои названия указаны в классе Typefaces:
Надеюсь кому то это поможет сэкономить то время что я потратил
И вопросик к более опытным - все верно я сделал?
update:
забыл указать что еще мы создаем файл attrs.xml и кидаем его в папку values.
Для того чтобы шрифт отображался нам в XML файле надо отображать не TextView, а наш, кастомный:
Код: Выделить всё
<com.example.buhg.RobotoTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="qwe 123 бублик"
android:textSize="25sp"
app:font="LIGHT" />
app:font="LIGHT" - указывает название шрифта, я их делал "под себя", и вы можете их изменить. В моем приложении для экспериментов добавлено 18 шрифтов Roboto. Обратите внимание что если название шрифта указать с ошибкой, вылетит ошибка и приложение упадет.
Далее создадим класс Typefaces - он необходим для того чтобы в кеш загружался наш шрифт и не вызывал перезаполнение памяти...
Код: Выделить всё
import java.util.Hashtable;
import android.content.Context;
import android.graphics.Typeface;
public class Typefaces
{
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context context, FontType type)
{
synchronized (cache)
{
if (!cache.containsKey(type.name()))
{
Typeface tf = null;
switch (type)
{
case BLACK:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Black.ttf");
break;
case BLACK_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BlackItalic.ttf");
break;
case BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Bold.ttf");
break;
case BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-BoldItalic.ttf");
break;
case ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Italic.ttf");
break;
case LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Light.ttf");
break;
case LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf");
break;
case MEDIUM:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Medium.ttf");
break;
case MEDIUM_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-MediumItalic.ttf");
break;
case REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Regular.ttf");
break;
case THIN:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-Thin.ttf");
break;
case THIN_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-ThinItalic.ttf");
break;
case CONDENSED_BOLD:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Bold.ttf");
break;
case CONDENSED_BOLD_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-BoldItalic.ttf");
break;
case CONDENSED_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Italic.ttf");
break;
case CONDENSED_LIGHT:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Light.ttf");
break;
case CONDENSED_LIGHT_ITALIC:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-LightItalic.ttf");
break;
case CONDENSED_REGULAR:
tf = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
break;
default:
break;
}
cache.put(type.name(), tf);
}
return cache.get(type.name());
}
}
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC, CONDENSED_BOLD, CONDENSED_BOLD_ITALIC, CONDENSED_ITALIC, CONDENSED_LIGHT, CONDENSED_LIGHT_ITALIC, CONDENSED_REGULAR;
}
}
Код: Выделить всё
import com.example.buhg.Typefaces.FontType;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.widget.TextView;
public class RobotoTextView extends TextView {
public RobotoTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
if (!isInEditMode()) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle);
final String customFont = a.getString(R.styleable.SomeStyle_font);
FontType typeA=FontType.THIN;
typeA=FontType.valueOf(customFont);
setTypeface(Typefaces.get(context, typeA));
}
}
public RobotoTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public RobotoTextView(Context context) {
this(context, null);
}
}
Код: Выделить всё
public enum FontType
{
BLACK, BLACK_ITALIC, BOLD, BOLD_ITALIC, ITALIC, LIGHT, LIGHT_ITALIC, MEDIUM, MEDIUM_ITALIC, REGULAR, THIN, THIN_ITALIC, CONDENSED_BOLD, CONDENSED_BOLD_ITALIC, CONDENSED_ITALIC, CONDENSED_LIGHT, CONDENSED_LIGHT_ITALIC, CONDENSED_REGULAR;
}
И вопросик к более опытным - все верно я сделал?
update:
забыл указать что еще мы создаем файл attrs.xml и кидаем его в папку values.
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SomeStyle">
<attr name="font" format="string" />
</declare-styleable>
</resources>
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: шрифты
Молодец. Одно забыл - иди проспись))))
Re: шрифты
что-то не так сделал? Или это юмор - который я уже не понимаю?
Мой первенец: MyMoney. Менеджер расходов
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.