Merge "Add equals() and hashcode() to SpannableString" into klp-dev
This commit is contained in:
@@ -1288,6 +1288,47 @@ public class SpannableStringBuilder implements CharSequence, GetChars, Spannable
|
||||
return mFilters;
|
||||
}
|
||||
|
||||
// Same as SpannableStringInternal
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Spanned &&
|
||||
toString().equals(o.toString())) {
|
||||
// Check span data
|
||||
Object[] otherSpans = ((Spanned) o).getSpans(0,
|
||||
((Spanned) o).length(), Object.class);
|
||||
if (mSpanCount == otherSpans.length) {
|
||||
for (int i = 0; i < mSpanCount; ++i) {
|
||||
Object thisSpan = mSpans[i];
|
||||
Object otherSpan = otherSpans[i];
|
||||
if (!thisSpan.equals(otherSpan) ||
|
||||
getSpanStart(thisSpan) != getSpanStart(otherSpan) ||
|
||||
getSpanEnd(thisSpan) != getSpanEnd(otherSpan) ||
|
||||
getSpanFlags(thisSpan) != getSpanFlags(otherSpan)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Same as SpannableStringInternal
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = toString().hashCode();
|
||||
hash = hash * 31 + mSpanCount;
|
||||
for (int i = 0; i < mSpanCount; ++i) {
|
||||
Object span = mSpans[i];
|
||||
hash = hash * 31 + span.hashCode();
|
||||
hash = hash * 31 + getSpanStart(span);
|
||||
hash = hash * 31 + getSpanEnd(span);
|
||||
hash = hash * 31 + getSpanFlags(span);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
private static final InputFilter[] NO_FILTERS = new InputFilter[0];
|
||||
private InputFilter[] mFilters = NO_FILTERS;
|
||||
|
||||
|
||||
@@ -358,6 +358,47 @@ import java.lang.reflect.Array;
|
||||
}
|
||||
}
|
||||
|
||||
// Same as SpannableStringBuilder
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Spanned &&
|
||||
toString().equals(o.toString())) {
|
||||
// Check span data
|
||||
Object[] otherSpans = ((Spanned) o).getSpans(0,
|
||||
((Spanned) o).length(), Object.class);
|
||||
if (mSpanCount == otherSpans.length) {
|
||||
for (int i = 0; i < mSpanCount; ++i) {
|
||||
Object thisSpan = mSpans[i];
|
||||
Object otherSpan = otherSpans[i];
|
||||
if (!thisSpan.equals(otherSpan) ||
|
||||
getSpanStart(thisSpan) != getSpanStart(otherSpan) ||
|
||||
getSpanEnd(thisSpan) != getSpanEnd(otherSpan) ||
|
||||
getSpanFlags(thisSpan) != getSpanFlags(otherSpan)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Same as SpannableStringBuilder
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int hash = toString().hashCode();
|
||||
hash = hash * 31 + mSpanCount;
|
||||
for (int i = 0; i < mSpanCount; ++i) {
|
||||
Object span = mSpans[i];
|
||||
hash = hash * 31 + span.hashCode();
|
||||
hash = hash * 31 + getSpanStart(span);
|
||||
hash = hash * 31 + getSpanEnd(span);
|
||||
hash = hash * 31 + getSpanFlags(span);
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
private String mText;
|
||||
private Object[] mSpans;
|
||||
private int[] mSpanData;
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.AnimatorSet;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.graphics.Color;
|
||||
import android.util.Log;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -36,6 +37,9 @@ import java.util.Map;
|
||||
* @hide
|
||||
*/
|
||||
public class TextChange extends Transition {
|
||||
|
||||
private static final String LOG_TAG = "TextChange";
|
||||
|
||||
private static final String PROPNAME_TEXT = "android:textchange:text";
|
||||
private static final String PROPNAME_TEXT_COLOR = "android:textchange:textColor";
|
||||
|
||||
@@ -224,6 +228,9 @@ public class TextChange extends Transition {
|
||||
}
|
||||
};
|
||||
addListener(transitionListener);
|
||||
if (DBG) {
|
||||
Log.d(LOG_TAG, "createAnimator returning " + anim);
|
||||
}
|
||||
return anim;
|
||||
}
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user