开发中遇到这样一种需求,就是在一个界面上展示公司的简介或者之类的文本,需要垂直滚动,自动轮播,我们也知道TextView有跑马灯效果,但是那是水平方向的,所以我使用ScrollView包裹TextView实现.
先看效果:
108.gif1,首先准备一个txt文件,里面内容就是要轮播的文本.
2,将文本文件拷贝到工程的assets目录下(没有的话自行创建在main目录下创建即可)
1.png3,获取文本内容并设置给text,
try {
InputStream is = getAssets().open("text.txt");
String str = readText(is);
text.setText(str);
} catch (IOException e) {
e.printStackTrace();
}
private String readText(InputStream is) {
InputStreamReader reader = new InputStreamReader(is);
BufferedReader bufferReader = new BufferedReader(reader);
StringBuffer buffer = new StringBuffer("");
String str;
try {
while ((str = bufferReader.readLine()) != null) {
buffer.append(str);
buffer.append("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
return buffer.toString();
}
4,开启线程滚动( getHeight()方法可以获取TextView的高度,scrollTo()可以滑动到指定的高度),线程睡眠时间非常短,高度递增跨度小,视觉上感觉就是在平滑的滚动.
class mThread extends Thread{
@Override
public void run() {
super.run();
do {
try {
Thread.sleep(100);
height = text.getHeight();
// Log.d("ss","Textheight="+ height);
off=off+1;
if(off> height){
off = 1;
}
Message msg = new Message();
handler.sendMessage(msg);
} catch (InterruptedException e) {
e.printStackTrace();
}
} while (true);
}
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
scrollView.scrollTo(0,off);
}
};
效果如下图:
626.gif5,对于TextView文本的效果,可以下载TTF文件,拷贝到assets目录下的fonts目录下(没有自行创建),如图:
2.png6,在代码中获取资源,并设置给TextView
AssetManager assets = getAssets();
Typeface fromAsset = Typeface.createFromAsset(assets, "fonts/kai.ttf");
text.setTypeface(fromAsset);
效果如下图:
108.gif
网友评论