这次给我自己的项目打个广告: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. Push pull, open drain circuit, pull up, pull down resistor

    Push pull 就以下面這個 電路來說, 因為沒有 pull up resistor, 所以 output voltage 由 low 往 high 的速度會較快. 有兩個電晶體,一個on,一個 ...

  2. Spring Boot学习——数据库操作及事务管理

    本文讲解使用Spring-Data-Jpa操作数据库. JPA定义了一系列对象持久化的标准. 一.在项目中使用Spring-Data-Jpa 1. 配置文件application.properties ...

  3. php --图片加图片水印

    最近在做一个视频网站需要视频有一个封面图片,但是不能是普通的图片,能让别人一眼看出来是 视频,所以我就在图片上面加了视频播放器的那种水印,具体代码如下: <?php/** * 图片加水印(适用于 ...

  4. 三、Ubuntu 使用Xshell

    1.下载一个Xshell 2.输入命令:ssh  root@Ubuntu的ip地址 输入密码,即可连接 如果遇到不可连接.在Ubuntu中输入命令 vim /etc/ssh/sshd_config 更 ...

  5. weblogic内存快速配置

    # IF USER_MEM_ARGS the environment variable is set, use it to override ALL MEM_ARGS values USER_MEM_ ...

  6. Codeforces 583 DIV2 Asphalting Roads 模拟

    原题链接:http://codeforces.com/problemset/problem/583/A 题意: 很迷很迷,表示没看懂..但是你看样例就秒懂了 题解: 照着样例模拟就好 代码: #inc ...

  7. PostgreSQL 10.0 preview 功能增强

    https://yq.aliyun.com/users/1384833841157402?spm=5176.100239.blogrightarea51131.3.yI7e9d

  8. 《C++编程思想》第二章 数 据 抽 象(原书代码+习题+答案)

    相关代码例如以下: 1. <span style="font-size:18px;">/*声明与定义的差别*/ #include <iostream> us ...

  9. 在容器内执行go编译程序的坑

    如果你编译了一个go程序,让后把它放到容器里面.很多时候这个程序都会无法执行,大概的样子是: /tmp # ls pub sub /tmp # ./pub /bin/ash: pub: not fou ...

  10. 转: scala语言的简单入门 (IBM develop)

    转: https://www.ibm.com/developerworks/cn/java/j-lo-funinscala2/