这次给我自己的项目打个广告: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(); }
}

究竟所有结束.希望你们继续支持SoHoT>>>>>>>>>SoHOT

Android_YouthArea之ApeendTextView的更多相关文章

随机推荐

  1. 一个关于集合的问题,为什么添加进List集合中的元素被莫名其妙的改变了

    以前自己理解的不够深刻,特此记录一下提醒自己,如果正好也帮到了你,我会很开心.相信只有自己正好遇到这个问题,才觉得哦,原来这样.自己小白,大神莫喷 为什么添加进List集合中的元素被莫名其妙的改变了? ...

  2. Guava源码学习(零)前言

    Guava是由Google出品的Java类库,功能强大且易用. 后续我会用多篇博客介绍Guava的使用方法,以及从源码层面分析其实现原理. 分析次序基于Guava的官方Wiki 基于版本:Guava ...

  3. CCCC L2-010. 排座位【并查集/分类讨论】

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  4. HDU 4866 Shooting (主席树)

    题目链接  HDU 4866 题意  给定$n$条线段.每条线段平行$x$轴,离x轴的距离为$D$,覆盖的坐标范围为$[L, R]$.   现在有$m$次射击行动,每一次的射击行动可以描述为在横坐标$ ...

  5. linux代理设置

    http_proxy:http协议使用代理服务器地址:https_proxy:https协议使用安全代理地址:ftp_proxy:ftp协议使用代理服务器地址:user:代理使用的用户名:passwo ...

  6. Ambient Occulution

    SSAO HDAO normal pair 求一个谷 SAO 重建normal HBAO input depth,normal 这几个都是screen space的ao

  7. springnodejs

    作者 : solq 最新文档请看 http://www.springnodejs.com 本文不再更新 blog : http://www.cnblogs.com/solq/p/3574640.htm ...

  8. 2017.2.20 activiti实战--第一章--认识Activiti

    学习资料:<Activiti实战> 第一章 认识Activiti 内容概览:讲解activiti的特点.接口概览.架构等基本信息. 1.3 Activiti的特点 1.使用mybatis ...

  9. 怎样mac上安装apk到连接数据线的手机

    高大上的mac俺也用了一段时间了.不知道大家有木有同一个烦恼.曾经在win上的时候仅仅要安装了应用宝之类的手机助手.就能够双击APK,直接安装到连接数据线的手机上,非常方便哈,可是mac上不行.近期找 ...

  10. 【MVC2】发布到IIS上User.Identity.Name变成空

    VS中运行时通过User.Identity.Name能取到用户名,发布到IIS上后,该值为空. 调查后发现在网站设定→[认证]中同时打开了[Windows认证]和[匿名认证], 关掉[匿名认证]后就能 ...