Android4.4 TextView走馬灯カートン問題

2314 ワード

この間Androidシステムをメンテナンスしていたところ、TextViewに遭遇し、ランニングライトを追加するとUIにカートンが現れる.この場合、Android TextViewのソースコードについて一連の分析とテストを行い、最終的に原因を見つけました.
コンストラクション関数のコードを変更する前に:
public TextView(Context context, AttributeSet attrs, int defStyle) {
    ......
      switch (ellipsize) {
            case 1:
                setEllipsize(TextUtils.TruncateAt.START);
                break;
            case 2:
                setEllipsize(TextUtils.TruncateAt.MIDDLE);
                break;
            case 3:
                setEllipsize(TextUtils.TruncateAt.END);
                break;
            case 4:
                if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) {
                    setHorizontalFadingEdgeEnabled(true);
                    mMarqueeFadeMode = MARQUEE_FADE_NORMAL;
                } else {
                    setHorizontalFadingEdgeEnabled(false);
                    mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS;
                }
                setEllipsize(TextUtils.TruncateAt.MARQUEE);
                break;
        }
    ......
}

変更後:
public TextView(Context context, AttributeSet attrs, int defStyle) {
    ......
      switch (ellipsize) {
            case 1:
                setEllipsize(TextUtils.TruncateAt.START);
                break;
            case 2:
                setEllipsize(TextUtils.TruncateAt.MIDDLE);
                break;
            case 3:
                setEllipsize(TextUtils.TruncateAt.END);
                break;
            case 4:
                /*if (ViewConfiguration.get(context).isFadingMarqueeEnabled()) {
                    setHorizontalFadingEdgeEnabled(true);
                    mMarqueeFadeMode = MARQUEE_FADE_NORMAL;
                } else {
                    setHorizontalFadingEdgeEnabled(false);
                    mMarqueeFadeMode = MARQUEE_FADE_SWITCH_SHOW_ELLIPSIS;
                }*/
                setEllipsize(TextUtils.TruncateAt.MARQUEE);
                break;
        }
    ......
}

まとめ:注釈を落とした箇所の機能はTextView程度の陰影部分であり,注釈を落とした後,走馬灯の左右に陰影効果がないため,この問題を根治するものではなく,変相の最適化としか言いようがない.でも影の効果を比べたことがあるので、特に注意しないと何の違いも見えません.Android4.4 UIを描くのはちょっと質問ですが、サーバでWindowManagerを使ってUIを描く場合、明らかにAndroid 5より5.0以上のカードが多くて、具体的な原因はあまりついていないで、引き続きついていく大神がいて、原因を見つけたら、分かち合って、感謝します!