use of android.text.style.RelativeSizeSpan in project SmartMesh_Android by SmartMeshFoundation.
the class IncomeDetailAdapter method getView.
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = View.inflate(context, R.layout.item_income_details, null);
holder.incomeTime = view.findViewById(R.id.incomeTime);
holder.incomeLine = view.findViewById(R.id.incomeLine);
holder.incomeBottomLine = view.findViewById(R.id.incomeBottomLine);
holder.incomeImage = view.findViewById(R.id.incomeImage);
holder.incomeContent = view.findViewById(R.id.incomeContent);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
IncomeDetailVo.DataBean dataBean = dataBeans.get(i);
holder.incomeTime.setText(DateUtil.getMMdd(dataBean.getDate() * 1000));
String content = context.getString(R.string.income_detail_content, dataBean.getAction(), dataBean.getSource(), dataBean.getRevenue(), dataBean.getType().toUpperCase());
SpannableStringBuilder style = new SpannableStringBuilder(content);
int start = dataBean.getAction().length() + dataBean.getAction().length() + 2;
int end = start + dataBean.getRevenue().length() + 1;
// 设置指定位置文字的颜色
style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.text_color_3F7AE0)), start, end, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 粗体
style.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 1.1f表示默认字体大小的1.1倍
style.setSpan(new RelativeSizeSpan(1.1f), start, end, Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
// 设置指定位置文字的颜色
style.setSpan(new ForegroundColorSpan(context.getResources().getColor(R.color.text_color_323232)), 0, dataBean.getAction().length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// 粗体
style.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, dataBean.getAction().length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
holder.incomeContent.setText(style);
if (i == 0) {
holder.incomeLine.setVisibility(View.INVISIBLE);
holder.incomeImage.setImageResource(R.mipmap.icon_income_checked);
holder.incomeTime.setTextColor(context.getResources().getColor(R.color.text_color_3F7AE0));
holder.incomeTime.setVisibility(View.VISIBLE);
holder.incomeImage.setVisibility(View.VISIBLE);
} else {
holder.incomeLine.setVisibility(View.VISIBLE);
holder.incomeImage.setImageResource(R.mipmap.icon_income_unchecked);
holder.incomeTime.setTextColor(context.getResources().getColor(R.color.text_color_999999));
if (dataBeans.get(i).getDate() == dataBeans.get(i - 1).getDate()) {
holder.incomeTime.setVisibility(View.INVISIBLE);
holder.incomeImage.setVisibility(View.GONE);
} else {
holder.incomeTime.setVisibility(View.VISIBLE);
holder.incomeImage.setVisibility(View.VISIBLE);
}
}
if (i == dataBeans.size() - 1) {
holder.incomeBottomLine.setVisibility(View.INVISIBLE);
} else {
holder.incomeBottomLine.setVisibility(View.VISIBLE);
}
return view;
}
use of android.text.style.RelativeSizeSpan in project ForPDA by RadiationX.
the class HtmlToSpannedConverter method withinParagraph.
private static void withinParagraph(StringBuilder out, Spanned text, int start, int end) {
int next;
for (int i = start; i < end; i = next) {
next = text.nextSpanTransition(i, end, CharacterStyle.class);
CharacterStyle[] style = text.getSpans(i, next, CharacterStyle.class);
for (int j = 0; j < style.length; j++) {
if (style[j] instanceof StyleSpan) {
int s = ((StyleSpan) style[j]).getStyle();
if ((s & Typeface.BOLD) != 0) {
out.append("<b>");
}
if ((s & Typeface.ITALIC) != 0) {
out.append("<i>");
}
}
if (style[j] instanceof TypefaceSpan) {
String s = ((TypefaceSpan) style[j]).getFamily();
if ("monospace".equals(s)) {
out.append("<tt>");
}
}
if (style[j] instanceof SuperscriptSpan) {
out.append("<sup>");
}
if (style[j] instanceof SubscriptSpan) {
out.append("<sub>");
}
if (style[j] instanceof UnderlineSpan) {
out.append("<u>");
}
if (style[j] instanceof StrikethroughSpan) {
out.append("<span style=\"text-decoration:line-through;\">");
}
if (style[j] instanceof URLSpan) {
out.append("<a href=\"");
out.append(((URLSpan) style[j]).getURL());
out.append("\">");
}
if (style[j] instanceof ImageSpan) {
out.append("<img src=\"");
out.append(((ImageSpan) style[j]).getSource());
out.append("\">");
// Don't output the dummy character underlying the image.
i = next;
}
if (style[j] instanceof AbsoluteSizeSpan) {
AbsoluteSizeSpan s = ((AbsoluteSizeSpan) style[j]);
float sizeDip = s.getSize();
if (!s.getDip()) {
Application application = App.get();
sizeDip /= application.getResources().getDisplayMetrics().density;
}
// px in CSS is the equivalance of dip in Android
out.append(String.format("<span style=\"font-size:%.0fpx\";>", sizeDip));
}
if (style[j] instanceof RelativeSizeSpan) {
float sizeEm = ((RelativeSizeSpan) style[j]).getSizeChange();
out.append(String.format("<span style=\"font-size:%.2fem;\">", sizeEm));
}
if (style[j] instanceof ForegroundColorSpan) {
int color = ((ForegroundColorSpan) style[j]).getForegroundColor();
out.append(String.format("<span style=\"color:#%06X;\">", 0xFFFFFF & color));
}
if (style[j] instanceof BackgroundColorSpan) {
int color = ((BackgroundColorSpan) style[j]).getBackgroundColor();
out.append(String.format("<span style=\"background-color:#%06X;\">", 0xFFFFFF & color));
}
}
withinStyle(out, text, i, next);
for (int j = style.length - 1; j >= 0; j--) {
if (style[j] instanceof BackgroundColorSpan) {
out.append("</span>");
}
if (style[j] instanceof ForegroundColorSpan) {
out.append("</span>");
}
if (style[j] instanceof RelativeSizeSpan) {
out.append("</span>");
}
if (style[j] instanceof AbsoluteSizeSpan) {
out.append("</span>");
}
if (style[j] instanceof URLSpan) {
out.append("</a>");
}
if (style[j] instanceof StrikethroughSpan) {
out.append("</span>");
}
if (style[j] instanceof UnderlineSpan) {
out.append("</u>");
}
if (style[j] instanceof SubscriptSpan) {
out.append("</sub>");
}
if (style[j] instanceof SuperscriptSpan) {
out.append("</sup>");
}
if (style[j] instanceof TypefaceSpan) {
String s = ((TypefaceSpan) style[j]).getFamily();
if (s.equals("monospace")) {
out.append("</tt>");
}
}
if (style[j] instanceof StyleSpan) {
int s = ((StyleSpan) style[j]).getStyle();
if ((s & Typeface.BOLD) != 0) {
out.append("</b>");
}
if ((s & Typeface.ITALIC) != 0) {
out.append("</i>");
}
}
}
}
}
use of android.text.style.RelativeSizeSpan in project AndroidLife by CaMnter.
the class SpanRecyclerAdapter method setSpanContent.
@SuppressLint("SetTextI18n")
public void setSpanContent(TextView labelTV, TextView contentTV, String content, int position) {
SpannableStringBuilder ssb = new SpannableStringBuilder(content);
String sub = "Save";
int start = content.indexOf("Save");
switch(position) {
case URL_SPAN:
{
labelTV.setText("URLSpan");
ssb.setSpan(new URLSpan("https://github.com/CaMnter"), start, sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
// 在单击链接时凡是有要执行的动作,都必须设置MovementMethod对象
contentTV.setMovementMethod(LinkMovementMethod.getInstance());
// 设置点击后的颜色,这里涉及到ClickableSpan的点击背景
contentTV.setHighlightColor(0xff8FABCC);
break;
}
case UNDERLINE_SPAN:
{
labelTV.setText("UnderlineSpan");
ssb.setSpan(new UnderlineSpan(), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case TYPEFACE_SPAN:
{
labelTV.setText("TypefaceSpan ( Examples include \"monospace\", \"serif\", and \"sans-serif\". )");
ssb.setSpan(new TypefaceSpan("serif"), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case TEXT_APPERARANCE_SPAN:
{
labelTV.setText("TextAppearanceSpan");
ColorStateList colorStateList;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
colorStateList = this.activity.getColorStateList(R.color.selector_apperarance_span);
} else {
colorStateList = this.activity.getResources().getColorStateList(R.color.selector_apperarance_span);
}
ssb.setSpan(new TextAppearanceSpan("serif", Typeface.BOLD_ITALIC, this.activity.getResources().getDimensionPixelSize(R.dimen.text_appearance_span), colorStateList, colorStateList), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case TAB_STOP_SPAN:
{
labelTV.setText("TabStopSpan.Standard");
String[] subs = content.split(" ");
ssb = new SpannableStringBuilder();
/**
* TabStopSpan. Standard related to \t and \n
* TabStopSpan.Standard 跟 \t 和 \n 有关系
*/
for (String sub1 : subs) {
ssb.append("\t").append(sub1).append(" ");
ssb.append("\n");
}
ssb.setSpan(new TabStopSpan.Standard(126), 0, ssb.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case SUPERS_SCRIPT_SPAN:
{
labelTV.setText("SuperscriptSpan");
ssb.replace(start, start + sub.length(), "Save6");
Parcel parcel = Parcel.obtain();
parcel.writeInt(6);
int sixPosition = ssb.toString().indexOf("6");
ssb.setSpan(new SuperscriptSpan(parcel), sixPosition, sixPosition + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
parcel.recycle();
contentTV.setText(ssb);
break;
}
case SUB_SCRIPT_SPAN:
{
labelTV.setText("SubscriptSpan");
ssb.replace(start, start + sub.length(), "Save6");
Parcel parcel = Parcel.obtain();
parcel.writeInt(6);
int sixPosition = ssb.toString().indexOf("6");
ssb.setSpan(new SubscriptSpan(parcel), sixPosition, sixPosition + 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
parcel.recycle();
contentTV.setText(ssb);
break;
}
case STRIKE_THROUGH_SPAN:
{
labelTV.setText("StrikethroughSpan");
ssb.setSpan(new StrikethroughSpan(), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case SCALE_X_SPAN:
{
labelTV.setText("ScaleXSpan");
ssb.setSpan(new ScaleXSpan(2.0f), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case STYLE_SPAN:
{
labelTV.setText("StyleSpan ( Typeface.NORMAL,Typeface.BOLD,Typeface.ITALIC,Typeface.BOLD_ITALIC ) ");
ssb.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case RELATIVE_SIZE_SPAN:
{
labelTV.setText("RelativeSizeSpan");
ssb.setSpan(new RelativeSizeSpan(6.0f), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case QUOTO_SPAN:
{
labelTV.setText("QuoteSpan");
ssb.setSpan(new QuoteSpan(0xff000000), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case MASK_FILTER_SPAN:
{
labelTV.setText("MaskFilterSpan ( BlurMaskFilter EmbossMaskFilter ) \n Activity: android:hardwareAccelerated=\"false\"\n ");
MaskFilterSpan embossMaskFilterSpan = new MaskFilterSpan(new EmbossMaskFilter(new float[] { 3, 3, 9 }, 3.0f, 12, 16));
ssb.setSpan(embossMaskFilterSpan, start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
String you = "you";
int indexYou = content.indexOf(you);
MaskFilterSpan blurMaskFilterSpan = new MaskFilterSpan(new BlurMaskFilter(3, BlurMaskFilter.Blur.OUTER));
ssb.setSpan(blurMaskFilterSpan, indexYou, indexYou + you.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case LEADING_MARGIN_SPAN:
{
labelTV.setText("LeadingMarginSpan");
ssb.append(" ").append(ssb.toString()).append(ssb.toString()).append(ssb.toString());
ssb.setSpan(new LeadingMarginSpan.Standard(96, 36), 0, ssb.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case IMAGE_SPAN:
{
labelTV.setText("ImageSpan");
ssb.replace(start, start + sub.length(), " Save");
ssb.setSpan(new ImageSpan(this.activity, R.drawable.ic_mm_normal, ImageSpan.ALIGN_BASELINE), 0, 1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case ICON_MARGIN_SPAN:
{
labelTV.setText("IconMarginSpan");
Bitmap bitmap = BitmapFactory.decodeResource(this.activity.getResources(), R.drawable.ic_mm_normal);
ssb.setSpan(new IconMarginSpan(bitmap, 60), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// bitmap.recycle();
contentTV.setText(ssb);
break;
}
case FOREGROUND_COLOR_SPAN:
{
labelTV.setText("ForegroundColorSpan");
ssb.setSpan(new ForegroundColorSpan(0xff303F9F), start, start + sub.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
contentTV.setText(ssb);
break;
}
case DRAWABLE_MARGIN_SPAN:
{
labelTV.setText("DrawableMarginSpan");
ssb.setSpan(new DrawableMarginSpan(ResourcesUtils.getDrawable(this.activity, R.drawable.ic_mm_normal), 6), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
break;
}
case BULLET_SPAN:
{
labelTV.setText("BulletSpan");
ssb.setSpan(new BulletSpan(66, 0xff303F9F), start, start + sub.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
break;
}
case BACKGROUND_COLOR_SPAN:
{
labelTV.setText("BackgroundColorSpan");
String you = "you";
int indexYou = content.indexOf(you);
ssb.setSpan(new BackgroundColorSpan(0x2f303F9F), start, start + sub.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new BackgroundColorSpan(0x2fFF4081), indexYou, indexYou + you.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
break;
}
case ALIGNMENT_SPAN_STANDARD:
{
labelTV.setText("AlignmentSpan.Standard");
ssb.setSpan(new AlignmentSpan.Standard(Layout.Alignment.ALIGN_CENTER), 0, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
break;
}
case ABSOLUTE_SIZE_SPAN:
{
labelTV.setText("AbsoluteSizeSpan");
ssb.setSpan(new AbsoluteSizeSpan(26, true), start, start + sub.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
break;
}
case CLICKABLE_SPAN:
{
labelTV.setText("ClickableSpan ( Please click \"Save\" )");
SpanClickableSpan spanClickableSpan = new SpanClickableSpan(0xffFF4081, new ClickableSpanNoUnderline.OnClickListener<SpanClickableSpan>() {
/**
* ClickableSpan被点击
*
* @param widget widget
* @param span span
*/
@Override
public void onClick(View widget, SpanClickableSpan span) {
String urlString = span.getUrlString();
if (TextUtils.isEmpty(urlString))
return;
Uri uri = Uri.parse(urlString);
Context context = widget.getContext();
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName());
try {
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
Log.w("URLSpan", "Activity was not found for intent, " + intent.toString());
}
}
});
spanClickableSpan.setUrlString("https://github.com/CaMnter");
ssb.setSpan(spanClickableSpan, start, start + sub.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
contentTV.setText(ssb);
// 在单击链接时凡是有要执行的动作,都必须设置MovementMethod对象
contentTV.setMovementMethod(LinkMovementMethod.getInstance());
// 设置点击后的颜色,这里涉及到ClickableSpan的点击背景
contentTV.setHighlightColor(0x00000000);
break;
}
}
}
use of android.text.style.RelativeSizeSpan in project memetastic by gsantner.
the class FontPreferenceCompat method loadFonts.
private void loadFonts(Context context, @Nullable AttributeSet attrs) {
_defaultValue = _fontValues[0];
if (attrs != null) {
for (int i = 0; i < attrs.getAttributeCount(); i++) {
String attrName = attrs.getAttributeName(i);
String attrValue = attrs.getAttributeValue(i);
if (attrName.equalsIgnoreCase("defaultValue")) {
if (attrValue.startsWith("@")) {
int resId = Integer.valueOf(attrValue.substring(1));
attrValue = getContext().getString(resId);
}
_defaultValue = attrValue;
break;
}
}
}
for (File file : getAdditionalFonts()) {
_fontNames = appendToArray(_fontNames, file.getName().replace(".ttf", "").replace(".TTF", ""));
_fontValues = appendToArray(_fontValues, file.getAbsolutePath());
}
Spannable[] fontText = new Spannable[_fontNames.length];
for (int i = 0; i < _fontNames.length; i++) {
fontText[i] = new SpannableString(_fontNames[i] + "\n" + _fontValues[i]);
fontText[i].setSpan(new TypefaceObjectSpan(typeface(getContext(), _fontValues[i], null)), 0, _fontNames[i].length(), 0);
fontText[i].setSpan(new RelativeSizeSpan(0.7f), _fontNames[i].length() + 1, fontText[i].length(), 0);
}
setDefaultValue(_defaultValue);
setEntries(fontText);
setEntryValues(_fontValues);
}
use of android.text.style.RelativeSizeSpan in project openScale by oliexdev.
the class FloatMeasurementView method setPreviousValueInner.
private void setPreviousValueInner(float newPreviousValue) {
previousValue = newPreviousValue;
if (!getUpdateViews()) {
return;
}
if (previousValue >= 0.0f) {
final float diff = value - previousValue;
char symbol;
if (diff > 0.0) {
symbol = SYMBOL_UP;
} else if (diff < 0.0) {
symbol = SYMBOL_DOWN;
} else {
symbol = SYMBOL_NEUTRAL;
}
SpannableStringBuilder text = new SpannableStringBuilder(nameText);
text.append("\n");
int start = text.length();
text.append(symbol);
text.setSpan(new ForegroundColorSpan(Color.GRAY), start, text.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
start = text.length();
text.append(' ');
text.append(formatValue(diff, true));
text.setSpan(new RelativeSizeSpan(0.8f), start, text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
setNameView(text);
} else {
setNameView(nameText);
}
}
Aggregations