GithubHelp home page GithubHelp logo

facebook / textlayoutbuilder Goto Github PK

View Code? Open in Web Editor NEW
1.5K 49.0 141.0 529 KB

An Android library that allows you to build text layouts more easily.

Home Page: https://facebook.github.io/TextLayoutBuilder

License: Apache License 2.0

Java 94.71% Kotlin 5.29%

textlayoutbuilder's Introduction

TextLayoutBuilder

Build text Layouts easily on Android.

Features

  • Create text Layouts easily.
  • Reuse builders to create similarly styled Layouts.
  • Cache Layouts of commonly used strings.
  • Improve performance by warming up the FreeType cache.

Download

If using Gradle, add this to your build.gradle:

compile 'com.facebook.fbui.textlayoutbuilder:textlayoutbuilder:1.7.0'

or, if using Maven:

<dependency>
  <groupId>com.facebook.fbui.textlayoutbuilder</groupId>
  <artifactId>textlayoutbuilder</artifactId>
  <version>1.7.0</version>
  <type>aar</type>
</dependency>

Usage

  1. Set the properties on the TextLayoutBuilder:
TextLayoutBuilder builder = new TextLayoutBuilder()
    .setText("TextLayoutBuilder makes life easy")
    .setTextColor(Color.BLUE)
    .setWidth(400 /*, MEASURE_MODE_EXACTLY */);
  1. Call build() on the builder to get a Layout:
Layout layout = builder.build();
  1. Use the Layout in your code:
public class CustomView extends View {
    private Layout layout;

    public CustomView(Context context) {
        super(context);
    }

    public void setLayout(Layout layout) {
        this.layout = layout;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        // Draw the layout.
        layout.draw(canvas);
    }
}

Additional Usage

  1. Cache the layouts for commonly used strings by turning on caching in the TextLayoutBuilder.
textLayoutBuilder.setShouldCacheLayout(true);
  1. Glyph warming provides significant performance boost for large blurbs of text. Turn this on and pass in a GlyphWarmer for the TextLayoutBuilder.
textLayoutBuilder
    .setShouldWarmText(true)
    .setGlyphWarmer(new GlyphWarmerImpl());
  1. Import a style defined in XML into a TextLayoutBuilder object.
ResourceTextLayoutHelper.updateFromStyleResource(
    textLayoutBuilder, // builder object
    context,           // Activity context
    resId);            // style resource id

License

TextLayoutBuilder is Apache-2-licensed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.