Android设置自动垂直滚动的TextView(附带TextView的字体设置)

开发中遇到这样一种需求,就是在一个界面上展示公司的简介或者之类的文本,需要垂直滚动,自动轮播,我们也知道TextView有跑马灯效果,但是那是水平方向的,所以我使用ScrollView包裹TextView实现.

先看效果:
108.gif
1,首先准备一个txt文件,里面内容就是要轮播的文本.
2,将文本文件拷贝到工程的assets目录下(没有的话自行创建在main目录下创建即可)
1.png
3,获取文本内容并设置给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.gif
5,对于TextView文本的效果,可以下载TTF文件,拷贝到assets目录下的fonts目录下(没有自行创建),如图:
2.png
6,在代码中获取资源,并设置给TextView
 AssetManager assets = getAssets();
        Typeface fromAsset = Typeface.createFromAsset(assets, "fonts/kai.ttf");
        text.setTypeface(fromAsset);

效果如下图:

108.gif

推荐阅读更多精彩内容