代码之家  ›  专栏  ›  技术社区  ›  Jack Shultz

Android逐字符显示文本动画的问题

  •  0
  • Jack Shultz  · 技术社区  · 10 年前

    我遵循这个解决方案 Android character by character display text animation

    我得到了未解决的方法 setContentView

    这是打字机类

    public class Typewriter extends TextView {
    
    
    private CharSequence mText;
    private int mIndex;
    private long mDelay = 500; //Default 500ms delay
    
    
    public Typewriter(Context context) {
        super(context);
    }
    
    public Typewriter(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    private Handler mHandler = new Handler();
    private Runnable characterAdder = new Runnable() {
        @Override
        public void run() {
            setText(mText.subSequence(0, mIndex++));
            if(mIndex <= mText.length()) {
                mHandler.postDelayed(characterAdder, mDelay);
            }
        }
    };
    
    public void animateText(CharSequence text) {
        mText = text;
        mIndex = 0;
    
        setText("");
        mHandler.removeCallbacks(characterAdder);
        mHandler.postDelayed(characterAdder, mDelay);
    }
    
    public void setCharacterDelay(long millis) {
        mDelay = millis;
    }
    }
    

    然后我尝试使用它

        Typewriter writer = new Typewriter(this);
        setContentView(writer);
    
        //Add a character every 150ms
        writer.setCharacterDelay(150);
        writer.animateText("Sample String");
    

    enter image description here

    我还尝试添加此自定义布局

            <com.mayday.md.common.Typewriter
                android:id="@+id/contact_popup"
                style="@style/wizard_intro_style"
                android:background="#FFFFFF"
                android:textColor="#000000"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.24"
                android:text=""
                android:padding="1dp"
                android:paddingLeft="1dp"
                android:paddingTop="1dp"
                android:paddingRight="1dp"
                android:paddingBottom="1dp"
                android:lines="2"
                android:layout_above="@+id/ll_contact_1"
                android:layout_centerHorizontal="true"
                android:width="150dp" />
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   TheConstructor    8 年前

    你用错了。要使您的文本视图像示例中那样,请执行以下操作。

    Typewriter contact_popup = (Typewriter) view.findViewById(R.id.contact_popup);
    contact_popup.setCharacterDelay(150);
    contact_popup.animateText("Sample String");
    
    return view;