開發(fā)中遇到這樣一種需求,就是在一個界面上展示公司的簡介或者之類的文本,需要垂直滾動,自動輪播,我們也知道TextView有跑馬燈效果,但是那是水平方向的,所以我使用ScrollView包裹TextView實現(xiàn).
先看效果:
1,首先準(zhǔn)備一個txt文件,里面內(nèi)容就是要輪播的文本.
2,將文本文件拷貝到工程的assets目錄下(沒有的話自行創(chuàng)建在main目錄下創(chuàng)建即可)
3,獲取文本內(nèi)容并設(shè)置給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);
}
};
效果如下圖:
5,對于TextView文本的效果,可以下載TTF文件,拷貝到assets目錄下的fonts目錄下(沒有自行創(chuàng)建),如圖:
6,在代碼中獲取資源,并設(shè)置給TextView
AssetManager assets = getAssets();
Typeface fromAsset = Typeface.createFromAsset(assets, "fonts/kai.ttf");
text.setTypeface(fromAsset);
效果如下圖: