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();
}
}
究竟所有结束.希望你们继续支持SoHoT>>>>>>>>>SoHOT
Android_YouthArea之ApeendTextView的更多相关文章
随机推荐
- 长安大学第四届“迎新杯”程序设计竞赛 F 打铁的箱子【数学/进制思维/折半枚举】
题目描述 作为彩虹岛上最擅长打铁的人,
- Java I/O系统学习系列一:File和RandomAccessFile
I/O系统即输入/输出系统,对于一门程序语言来说,创建一个好的输入/输出系统并非易事.因为不仅存在各种I/O源端和想要与之通信的接收端(文件.控制台.网络链接等),而且还需要支持多种不同方式的通信(顺 ...
- Cocos 2d-X Lua游戏开发Mac环境搭建以及一点点感悟
接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...
- ui设计的好网站(转载)
设计师网址导航 http://hao.uisdc.com/ 站酷 国外: Dribbble - Show and tell for designers.Behance 这两个网站就够了啊 ————— ...
- luogu P1854 花店橱窗布置
题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识 ...
- 我的CSS初始化,reset.css
* { margin:; padding:; text-decoration: none; -webkit-overflow-scrolling: touch !important; /*iOS惯性滚 ...
- Android JNI&NDK编程小结及建议
前言 由于网上关于JNI/NDK相关的知识点介绍的比较零散而且不具备参照性,所以写了这篇JNI/NDK笔记,便于作为随时查阅的工具类型的文章,本文主要的介绍了在平时项目中常用的命令.JNI数据类型.签 ...
- 2016.10.10 Failed to start component [StandardService[Catalina]]
Failed to start component [StandardService[Catalina]] 错误原因:有数据残留,点击clean(见下图) 解决办法: 右键点击servers下 ...
- Mockito图书馆
转载:https://static.javadoc.io/org.mockito/mockito-core/2.12.0/org/mockito/Mockito.html#42 org.mockito ...
- JAVA Eclipse创建Android程序界面不显示怎么办
一般是由于你创建的Android应用程序版本太高导致的,请设置4或以下版本,对于已有的项目,可以在属性-Android中修改目标生成的版本号 ...