Search in sources :

Example 6 with Marker

use of com.airbnb.lottie.model.Marker in project lottie-android by airbnb.

the class LottieDrawable method setMinFrame.

/**
 * Sets the minimum frame to the start time of the specified marker.
 *
 * @throws IllegalArgumentException if the marker is not found.
 */
public void setMinFrame(final String markerName) {
    if (composition == null) {
        lazyCompositionTasks.add(c -> setMinFrame(markerName));
        return;
    }
    Marker marker = composition.getMarker(markerName);
    if (marker == null) {
        throw new IllegalArgumentException("Cannot find marker with name " + markerName + ".");
    }
    setMinFrame((int) marker.startFrame);
}
Also used : Marker(com.airbnb.lottie.model.Marker)

Example 7 with Marker

use of com.airbnb.lottie.model.Marker in project lottie-android by airbnb.

the class LottieDrawable method setMinAndMaxFrame.

/**
 * Sets the minimum and maximum frame to the start time and start time + duration
 * of the specified marker.
 *
 * @throws IllegalArgumentException if the marker is not found.
 */
public void setMinAndMaxFrame(final String markerName) {
    if (composition == null) {
        lazyCompositionTasks.add(c -> setMinAndMaxFrame(markerName));
        return;
    }
    Marker marker = composition.getMarker(markerName);
    if (marker == null) {
        throw new IllegalArgumentException("Cannot find marker with name " + markerName + ".");
    }
    int startFrame = (int) marker.startFrame;
    setMinAndMaxFrame(startFrame, startFrame + (int) marker.durationFrames);
}
Also used : Marker(com.airbnb.lottie.model.Marker) SuppressLint(android.annotation.SuppressLint) LPaint(com.airbnb.lottie.animation.LPaint) Paint(android.graphics.Paint)

Example 8 with Marker

use of com.airbnb.lottie.model.Marker in project lottie-android by airbnb.

the class LottieCompositionMoshiParser method parse.

public static LottieComposition parse(JsonReader reader) throws IOException {
    float scale = Utils.dpScale();
    float startFrame = 0f;
    float endFrame = 0f;
    float frameRate = 0f;
    final LongSparseArray<Layer> layerMap = new LongSparseArray<>();
    final List<Layer> layers = new ArrayList<>();
    int width = 0;
    int height = 0;
    Map<String, List<Layer>> precomps = new HashMap<>();
    Map<String, LottieImageAsset> images = new HashMap<>();
    Map<String, Font> fonts = new HashMap<>();
    List<Marker> markers = new ArrayList<>();
    SparseArrayCompat<FontCharacter> characters = new SparseArrayCompat<>();
    LottieComposition composition = new LottieComposition();
    reader.beginObject();
    while (reader.hasNext()) {
        switch(reader.selectName(NAMES)) {
            case 0:
                width = reader.nextInt();
                break;
            case 1:
                height = reader.nextInt();
                break;
            case 2:
                startFrame = (float) reader.nextDouble();
                break;
            case 3:
                endFrame = (float) reader.nextDouble() - 0.01f;
                break;
            case 4:
                frameRate = (float) reader.nextDouble();
                break;
            case 5:
                String version = reader.nextString();
                String[] versions = version.split("\\.");
                int majorVersion = Integer.parseInt(versions[0]);
                int minorVersion = Integer.parseInt(versions[1]);
                int patchVersion = Integer.parseInt(versions[2]);
                if (!Utils.isAtLeastVersion(majorVersion, minorVersion, patchVersion, 4, 4, 0)) {
                    composition.addWarning("Lottie only supports bodymovin >= 4.4.0");
                }
                break;
            case 6:
                parseLayers(reader, composition, layers, layerMap);
                break;
            case 7:
                parseAssets(reader, composition, precomps, images);
                break;
            case 8:
                parseFonts(reader, fonts);
                break;
            case 9:
                parseChars(reader, composition, characters);
                break;
            case 10:
                parseMarkers(reader, markers);
                break;
            default:
                reader.skipName();
                reader.skipValue();
        }
    }
    int scaledWidth = (int) (width * scale);
    int scaledHeight = (int) (height * scale);
    Rect bounds = new Rect(0, 0, scaledWidth, scaledHeight);
    composition.init(bounds, startFrame, endFrame, frameRate, layers, layerMap, precomps, images, characters, fonts, markers);
    return composition;
}
Also used : LongSparseArray(androidx.collection.LongSparseArray) Rect(android.graphics.Rect) HashMap(java.util.HashMap) LottieImageAsset(com.airbnb.lottie.LottieImageAsset) ArrayList(java.util.ArrayList) Marker(com.airbnb.lottie.model.Marker) Layer(com.airbnb.lottie.model.layer.Layer) Font(com.airbnb.lottie.model.Font) FontCharacter(com.airbnb.lottie.model.FontCharacter) ArrayList(java.util.ArrayList) List(java.util.List) LottieComposition(com.airbnb.lottie.LottieComposition) SparseArrayCompat(androidx.collection.SparseArrayCompat)

Aggregations

Marker (com.airbnb.lottie.model.Marker)8 Rect (android.graphics.Rect)3 Font (com.airbnb.lottie.model.Font)3 FontCharacter (com.airbnb.lottie.model.FontCharacter)3 Layer (com.airbnb.lottie.model.layer.Layer)3 ArrayList (java.util.ArrayList)3 List (java.util.List)3 SuppressLint (android.annotation.SuppressLint)2 Paint (android.graphics.Paint)2 LPaint (com.airbnb.lottie.animation.LPaint)2 LongSparseArray (androidx.collection.LongSparseArray)1 SparseArrayCompat (androidx.collection.SparseArrayCompat)1 LottieComposition (com.airbnb.lottie.LottieComposition)1 LottieImageAsset (com.airbnb.lottie.LottieImageAsset)1 HashMap (java.util.HashMap)1