android.text.style.MaskFilterSpan#android.text.style.ScaleXSpan源码实例Demo

下面列出了android.text.style.MaskFilterSpan#android.text.style.ScaleXSpan 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: arcusandroid   文件: Version1EditText.java
private void applySpacing() {

        if (this == null || this.originalText == null) return;

        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < originalText.length(); i++) {
            builder.append(originalText.charAt(i));
            if (i + 1 < originalText.length()) {
                builder.append("\u00A0");
            }
        }
        SpannableString finalText = new SpannableString(builder.toString());

        if (builder.toString().length() > 1) {
            for (int i = 1; i < builder.toString().length(); i += 2) {
                finalText.setSpan(new ScaleXSpan((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
        super.setText(finalText, BufferType.SPANNABLE);
    }
 
源代码2 项目: arcusandroid   文件: Version1Button.java
private void applySpacing() {
    final CharSequence originalText = getText();
    if (originalText == null || originalText.equals("")) return;
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < originalText.length(); i++) {
        builder.append(originalText.charAt(i));
        if (i + 1 < originalText.length()) {
            builder.append("\u00A0");
        }
    }
    SpannableString finalText = new SpannableString(builder.toString());
    if (builder.toString().length() > 1) {
        for (int i = 1; i < builder.toString().length(); i += 2) {
            finalText.setSpan(new ScaleXSpan((spacing + 1) / 10), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    super.setText(finalText, BufferType.SPANNABLE);
}
 
源代码3 项目: FimiX8-RE   文件: ChangeTextSpaceView.java
private void applySpacing() {
    if (this != null && this.originalText != null) {
        int i;
        StringBuilder builder = new StringBuilder();
        for (i = 0; i < this.originalText.length(); i++) {
            builder.append(this.originalText.charAt(i));
            if (i + 1 < this.originalText.length()) {
                builder.append(" ");
            }
        }
        SpannableString finalText = new SpannableString(builder.toString());
        if (builder.toString().length() > 1) {
            for (i = 1; i < builder.toString().length(); i += 2) {
                finalText.setSpan(new ScaleXSpan((this.spacing + 1.0f) / 10.0f), i, i + 1, 33);
            }
        }
        super.setText(finalText, BufferType.SPANNABLE);
    }
}
 
源代码4 项目: FimiX8-RE   文件: LetterSpacingTextView.java
private void applySpacing() {
    CharSequence originalText = getText();
    if (this != null && originalText != null) {
        int i;
        StringBuilder builder = new StringBuilder();
        for (i = 0; i < originalText.length(); i++) {
            builder.append(originalText.charAt(i));
            if (i + 1 < originalText.length()) {
                builder.append(" ");
            }
        }
        SpannableString finalText = new SpannableString(builder.toString());
        if (builder.toString().length() > 1) {
            for (i = 1; i < builder.toString().length(); i += 2) {
                finalText.setSpan(new ScaleXSpan((this.spacing + 1.0f) / 10.0f), i, i + 1, 33);
            }
        }
        super.setText(finalText, BufferType.SPANNABLE);
    }
}
 
源代码5 项目: KerningViews   文件: KerningTextView.java
private void applyKerning() {
    if (originalText == null) {
        return;
    }

    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < originalText.length(); i++) {
        builder.append(originalText.charAt(i));
        if (i + 1 < originalText.length()) {
            builder.append("\u00A0");
        }
    }

    SpannableString finalText = new SpannableString(builder.toString());
    if (builder.toString().length() > 1) {
        for (int i = 1; i < builder.toString().length(); i += 2) {
            finalText.setSpan(
                    new ScaleXSpan((kerningFactor) / 10),
                    i,
                    i + 1,
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
    }
    super.setText(finalText, BufferType.SPANNABLE);
}
 
源代码6 项目: FirebaseUI-Android   文件: SpacedEditText.java
private SpannableStringBuilder getSpacedOutString(CharSequence text) {
    SpannableStringBuilder builder = new SpannableStringBuilder();
    int textLength = text.length();
    int lastSpaceIndex = -1;

    //Insert a space in front of all characters upto the last character
    //Scale the space without scaling the character to preserve font appearance
    for (int i = 0; i < textLength - 1; i++) {
        builder.append(text.charAt(i));
        builder.append(" ");
        lastSpaceIndex += 2;
        builder.setSpan(new ScaleXSpan(mProportion), lastSpaceIndex, lastSpaceIndex + 1,
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }

    //Append the last character
    if (textLength != 0) builder.append(text.charAt(textLength - 1));

    return builder;
}
 
源代码7 项目: FirebaseUI-Android   文件: SpacedEditTextTest.java
/**
 * 1. Tests whether the content is set to the expected value.
 * 2. Tests whether the original content is set to the original value.
 * 3. Tests that the styles applied have the expected proportion
 * 4. Tests that the styles have been applied only on the spaces to preserve fonts appearance.
 */
private void testSpacing(String expectedSpacedText, String expectedOriginalText,
                         SpacedEditText editText) {
    final Editable editable = editText.getText();
    final ScaleXSpan[] spans = editable.getSpans(0, editText.length(), ScaleXSpan.class);

    assertEquals(expectedSpacedText, editable.toString());
    assertEquals(expectedOriginalText, editText.getUnspacedText().toString());

    for (ScaleXSpan span : spans) {
        assertEquals(SPACING_PROPORTION, span.getScaleX());

        final int spanStart = editable.getSpanStart(span);
        final int spanEnd = editable.getSpanEnd(span);

        assertEquals(" ", editable.toString().substring(spanStart, spanEnd));
    }
}
 
源代码8 项目: SpanEZ   文件: SpanEZTest.java
@Test
public void scale_x_should_add_only_one_span() {
    spanBuilder.scaleX(range, INTEGER_ARG)
               .apply();

    verify((SpanEZ) spanBuilder, times(1))
            .addSpan(isA(TargetRange.class), isA(ScaleXSpan.class));
}
 
源代码9 项目: spanner   文件: Spans.java
/**
 * @see android.text.style.ScaleXSpan#ScaleXSpan(float)
 */
public static Span scaleXSize(@FloatRange(from = 0.0) final float proportion) {
    return new Span(new SpanBuilder() {
        @Override
        public Object build() {
            return new ScaleXSpan(proportion);
        }
    });
}
 
源代码10 项目: text-decorator   文件: TextDecorator.java
public TextDecorator scaleX(final float proportion, final String... texts) {
  int index;

  for (String text : texts) {
    if (content.contains(text)) {
      index = content.indexOf(text);
      decoratedContent.setSpan(new ScaleXSpan(proportion), index, index + text.length(), flags);
    }
  }

  return this;
}
 
源代码11 项目: auid2   文件: MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    final SpannableStringBuilder ssb = new SpannableStringBuilder();
    final int flag = Spannable.SPAN_EXCLUSIVE_EXCLUSIVE;
    int start;
    int end;

    // Regular text
    ssb.append("This text is normal, but ");

    // Bold text
    start = ssb.length();
    ssb.append("this text is bold");
    end = ssb.length();
    ssb.setSpan(new StyleSpan(Typeface.BOLD), start, end, flag);

    // Inline image
    ssb.append('\n');
    start = end + 1;
    ssb.append('\uFFFC'); // Unicode replacement character
    end = ssb.length();
    ssb.setSpan(new ImageSpan(this, R.mipmap.ic_launcher), start, end, flag);

    // Stretched text
    start = end;
    ssb.append("This text is wide");
    end = ssb.length();
    ssb.setSpan(new ScaleXSpan(2f), start, end, flag);

    // Assign to TextView
    final TextView tv = (TextView) findViewById(R.id.textView);
    tv.setText(ssb);
}
 
源代码12 项目: Trestle   文件: Trestle.java
private static void setUpScaleXSpan(Span span, SpannableString ss, int start, int end) {
    float scaleX = span.getScaleX();
    if (Float.floatToRawIntBits(scaleX) != 0) {
        ss.setSpan(
                new ScaleXSpan(scaleX),
                start,
                end,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}
 
源代码13 项目: Augendiagnose   文件: ColorDialogPreference.java
/**
 * Update the summary of the preference.
 */
private void updateSummary() {
	SpannableString summary = new SpannableString(getContext().getString(R.string.button_select_color));
	int overlayColor = PreferenceUtil.getSharedPreferenceInt(R.string.key_overlay_color, Color.RED);
	summary.setSpan(new ForegroundColorSpan(overlayColor), 0, summary.length(), 0);
	summary.setSpan(new RelativeSizeSpan(1.2f), 0, summary.length(), 0); // MAGIC_NUMBER
	summary.setSpan(new ScaleXSpan(5), 0, summary.length(), 0); // MAGIC_NUMBER
	setSummary(summary);
}
 
源代码14 项目: DevUtils   文件: SpannableStringUtils.java
/**
 * 更新 CharSequence 字符
 */
private void updateCharCharSequence() {
    if (mText.length() == 0) return;
    int start = mBuilder.length();
    if (start == 0 && lineHeight != -1) { // bug of LineHeightSpan when first line
        mBuilder.append(Character.toString((char) 2)).append("\n")
                .setSpan(new AbsoluteSizeSpan(0), 0, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        start = 2;
    }
    mBuilder.append(mText);
    int end = mBuilder.length();
    if (verticalAlign != -1) {
        mBuilder.setSpan(new VerticalAlignSpan(verticalAlign), start, end, flag);
    }
    if (foregroundColor != COLOR_DEFAULT) {
        mBuilder.setSpan(new ForegroundColorSpan(foregroundColor), start, end, flag);
    }
    if (backgroundColor != COLOR_DEFAULT) {
        mBuilder.setSpan(new BackgroundColorSpan(backgroundColor), start, end, flag);
    }
    if (first != -1) {
        mBuilder.setSpan(new LeadingMarginSpan.Standard(first, rest), start, end, flag);
    }
    if (quoteColor != COLOR_DEFAULT) {
        mBuilder.setSpan(new CustomQuoteSpan(quoteColor, stripeWidth, quoteGapWidth), start, end, flag);
    }
    if (bulletColor != COLOR_DEFAULT) {
        mBuilder.setSpan(new CustomBulletSpan(bulletColor, bulletRadius, bulletGapWidth), start, end, flag);
    }
    if (fontSize != -1) {
        mBuilder.setSpan(new AbsoluteSizeSpan(fontSize, fontSizeIsDp), start, end, flag);
    }
    if (proportion != -1) {
        mBuilder.setSpan(new RelativeSizeSpan(proportion), start, end, flag);
    }
    if (xProportion != -1) {
        mBuilder.setSpan(new ScaleXSpan(xProportion), start, end, flag);
    }
    if (lineHeight != -1) {
        mBuilder.setSpan(new CustomLineHeightSpan(lineHeight, alignLine), start, end, flag);
    }
    if (isStrikethrough) {
        mBuilder.setSpan(new StrikethroughSpan(), start, end, flag);
    }
    if (isUnderline) {
        mBuilder.setSpan(new UnderlineSpan(), start, end, flag);
    }
    if (isSuperscript) {
        mBuilder.setSpan(new SuperscriptSpan(), start, end, flag);
    }
    if (isSubscript) {
        mBuilder.setSpan(new SubscriptSpan(), start, end, flag);
    }
    if (isBold) {
        mBuilder.setSpan(new StyleSpan(Typeface.BOLD), start, end, flag);
    }
    if (isItalic) {
        mBuilder.setSpan(new StyleSpan(Typeface.ITALIC), start, end, flag);
    }
    if (isBoldItalic) {
        mBuilder.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), start, end, flag);
    }
    if (fontFamily != null) {
        mBuilder.setSpan(new TypefaceSpan(fontFamily), start, end, flag);
    }
    if (typeface != null) {
        mBuilder.setSpan(new CustomTypefaceSpan(typeface), start, end, flag);
    }
    if (alignment != null) {
        mBuilder.setSpan(new AlignmentSpan.Standard(alignment), start, end, flag);
    }
    if (clickSpan != null) {
        mBuilder.setSpan(clickSpan, start, end, flag);
    }
    if (url != null) {
        mBuilder.setSpan(new URLSpan(url), start, end, flag);
    }
    if (blurRadius != -1) {
        mBuilder.setSpan(new MaskFilterSpan(new BlurMaskFilter(blurRadius, style)), start, end, flag);
    }
    if (shader != null) {
        mBuilder.setSpan(new ShaderSpan(shader), start, end, flag);
    }
    if (shadowRadius != -1) {
        mBuilder.setSpan(new ShadowSpan(shadowRadius, shadowDx, shadowDy, shadowColor), start, end, flag);
    }
    if (spans != null) {
        for (Object span : spans) {
            mBuilder.setSpan(span, start, end, flag);
        }
    }
}
 
源代码15 项目: styT   文件: SpanUtils.java
public static SpannableString getScaleXSpan() {
    SpannableString spannableString = new SpannableString("媳妇你长胖了");
    ScaleXSpan scaleXSpan = new ScaleXSpan(2);
    spannableString.setSpan(scaleXSpan, 0, spannableString.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
    return spannableString;
}
 
源代码16 项目: Android-Spans   文件: Span.java
public static Node scaleX(Float proportion, Object... nodes) {
    return new SpanNode(new ScaleXSpan(proportion), nodes);
}
 
源代码17 项目: SpanEZ   文件: SpanEZ.java
@Override
public StyleEZ scaleX(@NonNull Locator locator, @FloatRange(from = 0.f) float proportion) {
    ScaleXSpan scaleXSpan = new ScaleXSpan(proportion);
    addMultipleSpan(locator, scaleXSpan);
    return this;
}
 
源代码18 项目: text-decorator   文件: TextDecorator.java
public TextDecorator scaleX(final float proportion, final int start, final int end) {
  checkIndexOutOfBoundsException(start, end);
  decoratedContent.setSpan(new ScaleXSpan(proportion), start, end, flags);

  return this;
}
 
源代码19 项目: AndroidSpan   文件: SpanOptions.java
public SpanOptions addScaleXSpan(float proportion) {
    ScaleXSpan span = new ScaleXSpan(proportion);
    listSpan.add(span);
    return this;
}
 
源代码20 项目: AndroidSpan   文件: AndroidSpan.java
/**
 * 缩放X大小
 * @param text
 * @param proportion
 * @return
 */
public AndroidSpan drawScaleXSpan(String text, float proportion) {
    ScaleXSpan span = new ScaleXSpan(proportion);
    drawSpan(text, span);
    return this;
}