您的位置:首页 > 移动开发 > Android开发

自定义View -- 实现字符串一个一个显示的动态动画

2015-02-28 10:30 549 查看


实现文字welcome的一个一个显示,效果如上述动态图片。

主要实现思路如下:把字符串拆开,每次画字符串的一部分,再通过一个线程来沉睡400毫秒,并调用方法postInvalidate()继续绘制。

 

public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.d(TAG," MyTextView(Context context, AttributeSet attrs)");
this.context = context;
this.mText = context.getString(R.string.welcome);
ShowTextThread showTextThread = new ShowTextThread();
showTextThread.start();
// TODO Auto-generated constructor stub
}

class ShowTextThread extends Thread{

public void run(){
Log.d(TAG," showTextThread -- run()");
while(mTextIndex < mText.length()+1){
Log.d(TAG," showTextThread -- run() mTextIndex = "+mTextIndex);
mSubText = mText.substring(0, mTextIndex);
try {
Thread.sleep(400);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
postInvalidate();
mTextIndex++;
}

}

}


其中mText是要显示的字符串"welcome",mSubText是逐渐增多的字符串:w->we->wel->welc->welco->welcom->welcome

在新的线程中,每次休眠400毫秒后,就调用方法postInvalidate(),其实就是调用onDraw()方法进行重新绘制自定义view。这样子就产生了字符串一个一个显示的效果。

 

知识点:

调用方法postInvalidate()和invalidate()来通知View重绘。

这俩个方法的区别:postInvalidate()是在非UI线程中调用,invalidate()在UI线程中调用。

在这个例子中,我们启动了一个新的子线程showTextThread,所以调用方法postInvalidate(),去重绘View

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android animation Thread
相关文章推荐