您的位置:首页 > 移动开发 > Android开发

Android 采用线程方法动态显示文字

2016-01-15 20:18 447 查看
今天在学习Android的时候,不知怎么就突然想到了一个动态跳出显示内容的法子,感觉不难,想实现它,搜了搜资料,就完成了一个使句子中的字一个个跳出的Demo如下图所示:





句子太长截取了其中一部分

实现此功能需要实现两个步骤:

1 读文件,把文件中的内容显示在组件上

<span style="font-size:18px;">package com.example.jumpword;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import android.util.Log;
/**
* 按字节读 , 按字符读, 按行读
* @author jsjxy
*
*/
public class readword {
//处理字节流的超类
/*inputstream , outputstream;
//处理字符流的抽象类,(但是会把把字符流转化为字节流)
inputstreamreader, outputstreamwriter*/
/*  缓冲方式文本读取,缓冲方式文本写入
*  从输入流中读取文本, 从文本写入输出流
*/
//BufferedReader , BufferedWriter

private static final String TAG = null;
File  file  ;     //得到地址
InputStreamReader    inputstream;          //把内存中的内容解析出来
FileInputStream    fileinputstream;           //把地址所指向的文件内容读取到内存中
BufferedReader  reader ;                              //输出,转化为IO能够识别的数据
int    word;
String  sentence  = "";
public     readword(){
}
//读txt文件的位置,从txt文件中每次读一个字符
public    String  readword (String path) throws IOException{
file = new  File(path);
inputstream = new InputStreamReader(new FileInputStream(file),"GBK");
reader = new BufferedReader(inputstream);
while(( word = reader.read() )!=-1){
//     System.out.println((char) word);                  //每次读一个字符
Log.i(TAG, (char)word+"");
sentence += (char)word;
}
return   sentence;
}

//写txt文件
public  void  writeword(String  path) throws IOException{
file = new File(path);
FileOutputStream   outputstream  = new  FileOutputStream(file);
String  content  = "写入文件的方法";
outputstream.write(content.getBytes());
}

}</span>


详细的读写文件的方法如下地址:/article/5709694.html(转别人博客写的) ,在此我不做详细的解释。

2 线程实现间隔时间跳出文字

package com.example.jumpword;

import java.io.File;
import java.io.IOException;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends Activity {

protected static final String TAG = null;
private   TextView     Word;                 // 显示一个字
private    readword   read  = new readword();                  //读取文件的对象
private  File  file;
private  String sentence;                    //返回的读取信息
private  String  jiequchuan ;            //截取的字符串
private  int    i = 1;                                  //截取的位置索引
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
file = Environment.getExternalStorageDirectory();   //地址相当于 “/sdcard.....”
try {
sentence = 	read.readword(file + "/hhh.txt");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Word = (TextView)findViewById(R.id.showword);

new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(i < sentence.length())    {
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

jiequchuan = sentence.substring(0, i);     //截取字符串方法,从0位置到i位置
runOnUiThread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
Word.setText(jiequchuan);
}
});
i++;
}
}
}).start();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
以上为实现的主要核心方法,源代码地址如下:http://download.csdn.net/detail/danielntz/9405914
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: