美文网首页Android干货oh-my-androidAndroid知识
Android设置自动垂直滚动的TextView(附带TextV

Android设置自动垂直滚动的TextView(附带TextV

作者: 码农MM | 来源:发表于2017-03-31 18:39 被阅读247次

    开发中遇到这样一种需求,就是在一个界面上展示公司的简介或者之类的文本,需要垂直滚动,自动轮播,我们也知道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

    相关文章

      网友评论

      本文标题:Android设置自动垂直滚动的TextView(附带TextV

      本文链接:https://www.haomeiwen.com/subject/tduvottx.html