这次给我自己的项目打个广告: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. C#将图片进行马赛克处理

    /// <summary> /// 马赛克处理 /// </summary> /// <param name="bitmap"></par ...

  2. fprintf与fscanf

    #include <stdio.h> int main() { //printf("Please input the value a:\n"); 等于下一句 fprin ...

  3. MAX() OVER() 函数

    SELECT T1.FRAMENO, T1.UNDERTAKER10,T1.STATUSCODEDATE10, MAX(T1.STATUSCODEDATE10) OVER(PARTITION BY T ...

  4. C# 数组与 list 互相转换案例

    在项目中用到了 随手分享下 记得点赞呦! 1,从System.String[]转到List<System.String>System.String[] str={"str&quo ...

  5. AC日记——中庸之道 codevs 2021

    2021 中庸之道  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 给定一个长度为N的序列 ...

  6. 爬虫学习笔记(三)requests模块使用

    前面在说爬虫原理的时候说了,就写代码自动化的获取数据,保存下来数据,那怎么写代码来请求一个网址,获取结果呢,就得用requests模块了. 这篇博客说一下requests模块的使用,requests模 ...

  7. Wannafly交流赛1 A 有理数[模拟/分类讨论]

    链接:https://www.nowcoder.com/acm/contest/69/A来源:牛客网 题目描述 有一个问题如下: 给你一个有理数v,请找到小于v的最大有理数. 但这个问题的答案对于任意 ...

  8. SpringMVC_01:创建运行环境(Maven)

    Maven 环境下配置: 1.新建MavenProject,打包选线根据情况选择jar war和pom jar:打包为jar包,主要用于被其他项目引用 war:打包为war包,可直接运行于服务器 po ...

  9. 块级元素和行内元素的区别 (block vs. inline)

    块级元素 (display: block) 独占一行,多个block元素会各自新起一行.默认情况下,block元素的宽度会填满父元素的宽度. 可以设置width, height属性.但是,即使设置了w ...

  10. 安全搜索引擎Shodan(搜蛋)命令行模式使用TIPS

    https://www.shodan.io/ 与谷歌通过网址来搜索互联网的方式不同,Shodan通过互联网背后的通道来搜索信息.它就象是一种“黑暗”的谷歌,不断在寻找服务器.网络摄像头.打印机.路由器 ...