Android_YouthArea之ApeendTextView

高斋晓开卷,独共圣人语。这篇文章主要讲述Android_YouthArea之ApeendTextView相关的知识,希望能为你提供帮助。
这次给我自己的项目打个广告:http://sj.qq.com/myapp/detail.htm?apkName=com.youthcommunity
这款APP 不同于SoHOT是积极的,是年轻人的信息和故事另一些科技新闻等等…
希望大家支持…假设后期效果能够我会把这个系列的博客继续做下去.
从 引导页分析.最后并开源
先来一个首页的效果吧

Android_YouthArea之ApeendTextView

文章图片

这次就带来刚进入的时候那个一个个字显示的小控件暂且叫他appendtextview吧 ,
*实现思路
1,二话不说先写一个View 继承TextView
2,书写自己定义属性
3,初始化自己定义属性
4,起一个线程用来间隔时间设置textview的文字
5,设置一个文字结束的监听用来todo something….
ok 分析完成.让我们来完成这个小东西
先来看看自己定义属性
就一个就是我们须要展示的text,注意用的时候不要写成text=”xxxx”
那样就成普通的textview了
Android_YouthArea之ApeendTextView

文章图片

我们的attrs文件,超简单就一个属性
Android_YouthArea之ApeendTextView

文章图片

接下来就是我们的appendtextview的 重要的一些变量
一个是用来展示的文字
一个是用来操作文字的字符串buffer
一个就是回调拼接完成的
Android_YouthArea之ApeendTextView

文章图片

拿到自己定义属性在构造函数中
Android_YouthArea之ApeendTextView

文章图片

这是最后的init方法用来显示一个个拼接的文字
Android_YouthArea之ApeendTextView

文章图片

最后的效果就是刚開始进来打广告的时候的效果,
欢迎大家拍砖和支持谢谢了
这也不是项目就一个类而已就不上传源代码了把这个类粘贴到这里
package com.youthcommunity.ui.customview; import android.content.Context; import android.content.res.TypedArray; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.widget.TextView; import com.youthcommunity.R; import java.util.ArrayList; /** * Created by jsion on 16/1/8. */ public class AppendTextView extends TextView { private static final int APPEND_FLAG = 10; private static final int APPEND_FINISHI = 23; private String textForShow; private StringBuffer textForAppend; private int textLength; private ArrayList< String> allTextChars; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case APPEND_FLAG: setText(((StringBuffer) msg.obj).toString()); break; case APPEND_FINISHI: // 设置完成 if (onHasFinishSet != null) { onHasFinishSet.hasFinishSet(); } break; } } }; public interface OnHasFinishSet { void hasFinishSet(); }private OnHasFinishSet onHasFinishSet; public void setOnHasFinishSet(OnHasFinishSet onHasFinishSet) { this.onHasFinishSet = onHasFinishSet; }public AppendTextView(Context context) { this(context, null); }public AppendTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); }public AppendTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.AppendTextView, defStyleAttr, 0); int n = a.getIndexCount(); for (int i = 0; i < n; i++) { int attr = a.getIndex(i); switch (attr) { case R.styleable.AppendTextView_titleText: textForShow = a.getString(attr); break; } } a.recycle(); init(); }/** * 获取自己定义属性后初始化 */ private void init() { textForAppend = new StringBuffer(); textLength = textForShow.length(); allTextChars = new ArrayList< String> (); for (int i = 0; i < textLength; i++) { allTextChars.add(textForShow.charAt(i) + ""); }new Thread(new Runnable() { @Override public void run() { for (int j = 0; j < allTextChars.size(); j++) { Message msg = handler.obtainMessage(); msg.what = APPEND_FLAG; msg.obj = textForAppend.append(allTextChars.get(j)); handler.sendMessage(msg); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } }Message msg = handler.obtainMessage(); msg.what = APPEND_FINISHI; handler.sendMessage(msg); } }).start(); } }

【Android_YouthArea之ApeendTextView】究竟所有结束.希望你们继续支持SoHoT> > > > > > > > > SoHOT















    推荐阅读