JoanZapata / android-iconify

Android integration of multiple icon providers such as FontAwesome, Entypo, Typicons,...
http://joanzapata.com/android-iconify
Other
3.93k stars 527 forks source link

Optimize the code #151

Open lbx2015 opened 8 years ago

lbx2015 commented 8 years ago

change the method addIconFontDescriptor in Iconify.java to the following and used directly:

/**
 * Add support for a new icon font.
 *
 * @param iconFontDescriptorArray The IconDescriptors holding the ttf file reference and their mappings.
 */
public static void addIconFontDescriptors(IconFontDescriptor... iconFontDescriptorArray) {

    if (iconFontDescriptorArray != null && iconFontDescriptorArray.length > 0) {
        for (IconFontDescriptor iconFontDescriptor : iconFontDescriptorArray) {
            // Prevent duplicates
            for (IconFontDescriptorWrapper wrapper : iconFontDescriptors) {
                if (wrapper.getIconFontDescriptor().ttfFileName()
                        .equals(iconFontDescriptor.ttfFileName())) {
                    break;
                }
            }

            // Add to the list
            iconFontDescriptors.add(new IconFontDescriptorWrapper(iconFontDescriptor));
        }
    }
}

and using like this will be better, I delete the unnecessary class IconifyInitializer now using like following which I think better: Iconify.addIconFontDescriptors( new FontAwesomeModule(), new EntypoModule(), new MaterialModule(), new MaterialCommunityModule());


I also change another place in ParsingUtil to following, and I create the TypefaceSpanCache.java

text.setSpan(TypefaceSpanCache.getFaceSpan(icon, iconFontDescriptor.getTypeface(context), iconSizePx, iconSizeRatio, iconColor, spin, baselineAligned), startIndex, startIndex + 1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

This can prevent many duplicate new CustomTypefaceSpan instance, as I debug when I screen down the screen it will duplicatedly new CustomTypefaceSpan, It's better to store faceSpan in memery.


package com.joanzapata.iconify.internal;

import android.graphics.Typeface;

import com.joanzapata.iconify.Icon;

import java.util.HashMap;

/**

lbx2015 commented 8 years ago

feel free to contact me.