高斋晓开卷,独共圣人语。这篇文章主要讲述Android_YouthArea之ApeendTextView相关的知识,希望能为你提供帮助。
这次给我自己的项目打个广告:http://sj.qq.com/myapp/detail.htm?apkName=com.youthcommunity
这款APP 不同于SoHOT是积极的,是年轻人的信息和故事另一些科技新闻等等…
希望大家支持…假设后期效果能够我会把这个系列的博客继续做下去.
从 引导页分析.最后并开源
先来一个首页的效果吧
文章图片
这次就带来刚进入的时候那个一个个字显示的小控件暂且叫他appendtextview吧 ,
*实现思路
1,二话不说先写一个View 继承TextView
2,书写自己定义属性
3,初始化自己定义属性
4,起一个线程用来间隔时间设置textview的文字
5,设置一个文字结束的监听用来todo something….
ok 分析完成.让我们来完成这个小东西
先来看看自己定义属性
就一个就是我们须要展示的text,注意用的时候不要写成text=”xxxx”
那样就成普通的textview了
文章图片
我们的attrs文件,超简单就一个属性
文章图片
接下来就是我们的appendtextview的 重要的一些变量
一个是用来展示的文字
一个是用来操作文字的字符串buffer
一个就是回调拼接完成的
文章图片
拿到自己定义属性在构造函数中
文章图片
这是最后的init方法用来显示一个个拼接的文字
文章图片
最后的效果就是刚開始进来打广告的时候的效果,
欢迎大家拍砖和支持谢谢了
这也不是项目就一个类而已就不上传源代码了把这个类粘贴到这里
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
推荐阅读
- Android Vector曲折的兼容之路
- 在VM中安装Android4.4连接小米手机 之 安装小米手环APP
- Android开发新技术盘点
- 安卓权威编程指南-笔记(第26章 服务的作用)
- 王立平--eclipse中改动android项目的版本
- adb通过wifi连接android设备
- Eclipse打包Android项目时用到proguard.cfg后,出现的Warning:can&#39;t find referenced class问题的解决方式
- Android studio 百度地图开发地图定位
- Android记录24-WebView实现白天/夜间阅读模式