/**
* Tries to pull the Custom Attribute directly from the TextView.
*
* @param context Activity Context
* @param attrs View Attributes
* @param attributeId if -1 returns null.
* @return null if attribute is not defined or added to View
*/
@FontRes
static int pullFontPathFromView(Context context, AttributeSet attrs, int[] attributeId) {
if (attributeId == null || attrs == null)
return 0;
final String attributeName;
try {
attributeName = context.getResources().getResourceEntryName(attributeId[0]);
} catch (Resources.NotFoundException e) {
// invalid attribute ID
return 0;
}
final int stringResourceId = attrs.getAttributeResourceValue(null, attributeName, -1);
return stringResourceId > 0
? stringResourceId
: attrs.getAttributeIntValue(null, attributeName, 0);
}
java类android.support.annotation.FontRes的实例源码
CalligraphyUtils.java 文件源码
项目:DownloadableCalligraphy
阅读 36
收藏 0
点赞 0
评论 0
CalligraphyUtils.java 文件源码
项目:DownloadableCalligraphy
阅读 31
收藏 0
点赞 0
评论 0
/**
* Tries to pull the Font Path from the View Style as this is the next decendent after being
* defined in the View's xml.
*
* @param context Activity Activity Context
* @param attrs View Attributes
* @param attributeId if -1 returns null.
* @return null if attribute is not defined or found in the Style
*/
@FontRes
static int pullFontPathFromStyle(Context context, AttributeSet attrs, int[] attributeId) {
if (attributeId == null || attrs == null)
return 0;
final TypedArray typedArray = context.obtainStyledAttributes(attrs, attributeId);
if (typedArray != null) {
try {
// First defined attribute
int fontFromAttribute = typedArray.getResourceId(0, 0);
if (fontFromAttribute != 0) {
return fontFromAttribute;
}
} catch (Exception ignore) {
// Failed for some reason.
} finally {
typedArray.recycle();
}
}
return 0;
}
CalligraphyUtils.java 文件源码
项目:DownloadableCalligraphy
阅读 27
收藏 0
点赞 0
评论 0
/**
* Tries to pull the Font Path from the Text Appearance.
*
* @param context Activity Context
* @param attrs View Attributes
* @param attributeId if -1 returns null.
* @return returns null if attribute is not defined or if no TextAppearance is found.
*/
@FontRes
static int pullFontPathFromTextAppearance(final Context context, AttributeSet attrs, int[] attributeId) {
if (attributeId == null || attrs == null)
return 0;
int textAppearanceId = -1;
// For prevent using default component font
final ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(context, android.R.style.Theme_NoDisplay);
final TypedArray typedArrayAttr = contextThemeWrapper.obtainStyledAttributes(attrs, ANDROID_ATTR_TEXT_APPEARANCE);
if (typedArrayAttr != null) {
try {
textAppearanceId = typedArrayAttr.getResourceId(0, 0);
} catch (Exception ignored) {
// Failed for some reason
return 0;
} finally {
typedArrayAttr.recycle();
}
}
final Integer textAppearanceAttrs = getFontFromTextAppearance(context, attributeId, textAppearanceId);
if (textAppearanceAttrs != null) return textAppearanceAttrs;
return 0;
}
CalligraphyUtils.java 文件源码
项目:DownloadableCalligraphy
阅读 31
收藏 0
点赞 0
评论 0
/**
* Last but not least, try to pull the Font Path from the Theme, which is defined.
*
* @param context Activity Context
* @param styleAttrId Theme style id
* @param attributeId if -1 returns null.
* @return null if no theme or attribute defined.
*/
@FontRes
static int pullFontPathFromTheme(Context context, int styleAttrId, int[] attributeId) {
if (styleAttrId == -1 || attributeId == null)
return 0;
final Resources.Theme theme = context.getTheme();
final TypedValue value = new TypedValue();
theme.resolveAttribute(styleAttrId, value, true);
final TypedArray typedArray = theme.obtainStyledAttributes(value.resourceId, attributeId);
try {
return typedArray.getResourceId(0, 0);
} catch (Exception ignore) {
// Failed for some reason.
return 0;
} finally {
typedArray.recycle();
}
}
CalligraphyFactory.java 文件源码
项目:DownloadableCalligraphy
阅读 52
收藏 0
点赞 0
评论 0
private Typeface getDefaultTypeface(Context context, @FontRes int fontFamily) {
if (fontFamily == 0) {
fontFamily = CalligraphyConfig.get().getFontFamily();
}
if (fontFamily != 0) {
return ResourcesCompat.getFont(context, fontFamily);
}
return null;
}
TabbedViewPager.java 文件源码
项目:anotherViewPager
阅读 30
收藏 0
点赞 0
评论 0
private void setTabFont(int textViewId, @FontRes int font, int position) {
if (font == 0)
return;
Typeface typeface = ResourcesCompat.getFont(getContext(), font);
setTabFont(textViewId, typeface, position);
}
CalligraphyConfig.java 文件源码
项目:DownloadableCalligraphy
阅读 29
收藏 0
点赞 0
评论 0
/**
* @return mFontFamily for text views might be null
*/
@FontRes
public int getFontFamily() {
return mFontFamily;
}
TabbedViewPager.java 文件源码
项目:anotherViewPager
阅读 29
收藏 0
点赞 0
评论 0
public TabbedViewPager setSelectedTabFont(@FontRes int font) {
selectedTabFont = font;
return this;
}
CustomDownloadableFontProvider.java 文件源码
项目:Downloadable-Fonts
阅读 25
收藏 0
点赞 0
评论 0
public CustomDownloadableFontProvider(@FontRes int resourceFont) {
this.resourceFont = resourceFont;
}
BaselineGridTextView.java 文件源码
项目:plaid
阅读 25
收藏 0
点赞 0
评论 0
public @FontRes int getFontResId() {
return fontResId;
}
CalligraphyConfig.java 文件源码
项目:DownloadableCalligraphy
阅读 24
收藏 0
点赞 0
评论 0
/**
* Set the default font if you don't define one else where in your styles.
*
* @param defaultFont a path to a font file in the assets folder, e.g. "fonts/Roboto-light.ttf",
* passing null will default to the device font-family.
* @return this builder.
*/
public Builder setDefaultFont(@FontRes int defaultFont) {
this.isFontSet = defaultFont != 0;
this.fontFamily = defaultFont;
return this;
}
ReflowText.java 文件源码
项目:plaid
阅读 26
收藏 0
点赞 0
评论 0
@FontRes int getFontResId();