Android学习十二:跑马灯程序实现(简单联系)
package org.tonny; import java.util.Timer;
import java.util.TimerTask; import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.TextView; public class MainActivity extends Activity
{
private TextView mTv;
private final int TIME = 1000;
private Timer mTimer;
private Handler mHandler = new Handler()
{
public void handleMessage(Message msg)
{
super.handleMessage(msg);
switch (msg.what)
{
case 1:
// AsyncTask的创建时在这里进行的,而不是在TimerTask的run中进行的
new OperAsyncTask().execute(mTv.getText().toString());
break;
} } }; @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTv = (TextView) findViewById(R.id.tv_content); // 使用了TimerTask + Handler的方法来实现
mTimer = new Timer();
mTimer.schedule(new TimerTask()
{ @Override
public void run()
{
// 不能直接在这里创建OperAsyncTask,会报错
// 所以使用了这种方法
Message message = mHandler.obtainMessage();
message.what = 1;
mHandler.sendMessage(message);
}
}, TIME, TIME); // 1s后执行task,周期为1s
} /**
* 字符串处理
*
* @param content
* @return
*/
private String moveHeader2TailByOne(String content)
{
// 获取第一个元素
String header = content.substring(0, 1);
// 获取从第二个元素开始的后面的所有的元素
String tail = content.substring(1);
return tail + header;
} /**
* 定义线程,用于字符串的处理和更新
*
* @author Administrator
*
*/
private final class OperAsyncTask extends AsyncTask<String, Void, String>
{ @Override
protected String doInBackground(String... params)
{
return moveHeader2TailByOne(params[0]);
} @Override
protected void onPostExecute(String result)
{
mTv.setText(result);
} }
}
字符串的处理存在问题;为什么不能再task中创建异步线程?
Android学习十二:跑马灯程序实现(简单联系)的更多相关文章
- Android学习总结——TextView跑马灯效果
Android系统中TextView实现跑马灯效果,必须具备以下几个条件: 1.android:ellipsize="marquee" 2.TextView必须单行显示,即内容必须 ...
- android学习十二(android的Content Provider(内容提供器)的使用)
文件存储和SharePreference存储以及数据存储一般为了安全,最好用于当前应用程序中訪问和存储数据.内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能 ...
- Android学习十二---在android上实现图像匹配
一.效果图及功能描述 效果图 点击ShowImg后 点击match,然后点击showmatch,可以不断点击showmatch. 主要功能描述:显示在SD卡上已经存在的图片test.jpg,根据图片在 ...
- Android学习十二:自定义控件学习
自定义控件: 1.定义控件的属性,atts.xml 2.代码实现自定义控件的控制 3.引用该控件 首先定义相关的属性 <?xml version="1.0" encoding ...
- android学习十二 配置变化
1.配置变化会终止当前活动,并重建活动 2.配置变化有 2.1 屏幕方向变化 2.2 语言变化 2.3 插到基座等 3. 配置变化应用程序不会清除,上下文对新活动依然有效 ...
- oracle学习 十二 使用.net程序调用带返回值的存储过程(持续更新)
数据库返回的是结果集,存储过程返回的是一个或者多个值,所以不要使用while循环去读取,也不要使用datareader函数去调用.v_class_name是返回函数 使用.net调用oracle数据库 ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
- js抽奖跑马灯程序
js抽奖跑马灯程序 点击下载代码
- Android:TextView 自动滚动(跑马灯) (转)
Android:TextView 自动滚动(跑马灯) TextView实现文字滚动需要以下几个要点: 1.文字长度长于可显示范围:android:singleLine="true ...
随机推荐
- Mvc api HelpPage 与注释
一.添加包Microsoft.AspNet.WebApi.HelpPage可以自动给api生成帮助页面,url:/help 二.help加注释: 1. 2. public static class H ...
- Spark源码学习1.3——TaskSetManager.scala
TaskSetManager.scala TaskSet是指一系列被提交的task,一般是代表特定的stage中丢失的partition.TaskSetManager通过一个TaskScheduler ...
- 《C++primer》v5 第7章 类 读书笔记 习题答案
7.1.7.2.7.3 #include<iostream> #include<cstdio> #include<vector> #include<strin ...
- 排序系列 之 直接插入排序算法 —— Java实现
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素:排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的 ...
- join()方法之我见
JavaScript join() 方法 定义和用法 join() 方法用于把数组中的所有元素放入一个字符串. 元素是通过指定的分隔符进行分隔的. 语法 arrayObject.join(separa ...
- 浅谈javascript中事件冒泡与事件捕获
事件冒泡:一个事件会顺着他的层级一直往上传,一直传到document上为止,即从盒模型上看是从内到外的过程. 例: <!DOCTYPE html><html lang="e ...
- 排球积分规则功能说明书(spec)
排球规则: 由技术性规定.非技术性规定和场地设备要求等方面的内容组成的.每场比赛仍为五局三胜,前四局每局先得25分为胜,第五局先得15分者为胜.当出现24平或14平时,要继续比赛至领先2分才能取胜. ...
- xcode 第三方插件遇到问题
xcode 第三方安装的路径 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 
- 软件工程总结(Final)
又到了学期末了,此时此刻软件工程课业接近尾声了.时间过得太快,仿佛昨天这学期的课才开始, 开学时,老师让我们提出了不少对这门课的问题和疑惑,通过一学期的努力学习,我可以试着解开我自己的疑问了. 下面是 ...
- C# 类:类型 , 数学:类型
类(类型): //.Length:获取字符串的长度,返回int型 //.Trim去除字符串前后的空格 / ...