Android_YouthArea之ApeendTextView
2016-01-22 19:37
393 查看
这次给我自己的项目打个广告:http://sj.qq.com/myapp/detail.htm?apkName=com.youthcommunity
这款APP 不同于SoHOT是积极的,是年轻人的信息和故事还有一些科技新闻等等…
希望大家支持…如果后期效果可以我会把这个系列的博客继续做下去.
从 引导页分析.最后并开源
先来一个首页的效果吧
这次就带来刚进入的时候那个一个个字显示的小控件暂且叫他appendtextview吧 ,
[b]*[/b]实现思路
1,二话不说先写一个View 继承TextView
2,书写自定义属性
3,初始化自定义属性
4,起一个线程用来间隔时间设置textview的文字
5,设置一个文字结束的监听用来todo something….
ok 分析完毕.让我们来完成这个小东西
先来看看自定义属性
就一个就是我们需要展示的text,注意用的时候不要写成text=”xxxx”
那样就成普通的textview了
我们的attrs文件,超简单就一个属性
接下来就是我们的appendtextview的 重要的一些变量
一个是用来展示的文字
一个是用来操作文字的字符串buffer
一个就是回调拼接完毕的
拿到自定义属性在构造函数中
这是最后的init方法用来显示一个个拼接的文字
最后的效果就是刚开始进来打广告的时候的效果,
欢迎大家拍砖和支持谢谢了
这也不是项目就一个类而已就不上传源码了把这个类粘贴到这里
到底全部结束.希望你们继续支持SoHoT>>>>>>>>>SoHOT
这款APP 不同于SoHOT是积极的,是年轻人的信息和故事还有一些科技新闻等等…
希望大家支持…如果后期效果可以我会把这个系列的博客继续做下去.
从 引导页分析.最后并开源
先来一个首页的效果吧
这次就带来刚进入的时候那个一个个字显示的小控件暂且叫他appendtextview吧 ,
[b]*[/b]实现思路
1,二话不说先写一个View 继承TextView
2,书写自定义属性
3,初始化自定义属性
4,起一个线程用来间隔时间设置textview的文字
5,设置一个文字结束的监听用来todo something….
ok 分析完毕.让我们来完成这个小东西
先来看看自定义属性
就一个就是我们需要展示的text,注意用的时候不要写成text=”xxxx”
那样就成普通的textview了
我们的attrs文件,超简单就一个属性
接下来就是我们的appendtextview的 重要的一些变量
一个是用来展示的文字
一个是用来操作文字的字符串buffer
一个就是回调拼接完毕的
拿到自定义属性在构造函数中
这是最后的init方法用来显示一个个拼接的文字
最后的效果就是刚开始进来打广告的时候的效果,
欢迎大家拍砖和支持谢谢了
这也不是项目就一个类而已就不上传源码了把这个类粘贴到这里
[code]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访问PC端的port (reverse port forwarding)
- Android学习历程11-SharedPreferences介绍
- Android应用Design Support Library完全使用实例
- 分享
- android notifyForDescendents 为false 的含义
- android Xutils 数据库操作源码分析
- Android Activity 之 重新创建
- Android Support 包一探究竟
- Android捕获程序异常退出时的错误log信息
- Android 防内存泄露的AsyncTask--WeakAsyncTask
- android 常用包
- 启动模式影响android操作
- android基础--tools:context=".MainActivity"作用
- Androidx学习笔记(17)-- 数据存储之XML
- Android自定义音量条控件
- Android的Activity之间传对象的方法
- 【Android】实现新闻分类(二级下拉菜单)效果
- Androidx学习笔记(16)-- 数据存储之 SharedPreference
- Android 注解工具ButterKnife源码分析
- Android应用程序消息处理机制