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的更多相关文章
随机推荐
- Glide图片加载回调
1.方法一:设置图片中监听 使用的是SimpleTarget类,他继承自BaseTarget,需要重写onResourceReady方法,onResourceReady方法表示加载完成后的回调,下面列 ...
- iOS--子视图如何穿透上层视图响应事件
一.使用方法:- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event; 二.背景知识iOS系统检 ...
- Cryptography I 学习笔记 --- 抗碰撞
1. 生日攻击,如果hash函数可以产生n bit的结果,那么生日攻击的时间复杂度在O(nn/2)这个量级.以比特币使用的SHA256为例,其hash结果为256bit,那么如果想完成一次生日攻击,那 ...
- hihoCoder #1586 : Minimum-结构体版线段树(单点更新+区间最值求区间两数最小乘积) (ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛)
#1586 : Minimum Time Limit:1000ms Case Time Limit:1000ms Memory Limit:256MB Description You are give ...
- 【mob】Android短信验证+源码
在很多的应用当中,都涉及到了短信验证的功能,比如在注册或者找回密码的时候,那么我们如何通过第三方的平台来完成这个功能呢? 本面博文就实现短信验证,来做一个小的栗子. 第一步-下载开发包 第二步-将SD ...
- Scut游戏服务器引擎6.0.5.1发布
1. 修正缓存删除时不会更新到Redis的问题 2. 修正Model组合3个以上子类时Change事件未绑定的问题 3. 修正中间层MySql与MsSql数据库Sql语句分页问题
- Android开发常见的Activity中内存泄漏及解决办法
上一篇文章楼主提到由Context引发的内存泄漏,在这一篇文章里,我们来谈谈Android开发中常见的Activity内存泄漏及解决办法.本文将会以“为什么”“怎么解决”的方式来介绍这几种内存泄漏. ...
- ThinkPHP模板包含功能(转载)
对于一些有共同属性的页面(如页脚),可以单独制作成一个模板,再利用 ThinkPHP 提供的模板包含功能包含进来.这样,当要修改这些公共页面时,只需修改对应的模板即可而不必修改每一个页面.模板的包含使 ...
- Dicom Conformance
Platform Compatibility of DICOM Transfer Syntax 1.2.840.10008.1.2 Implicit VR - Little Endian yes ...
- 由内省引出JavaBean的应用
IntroSpector-->javaBean-->特殊的java类 get和set方法 ReflectPoint pt1 = new ReflectPoint(3,5); String ...