欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ScrollView文字竖直滚动

程序员文章站 2022-03-02 09:13:18
...
这几天研究了下文字的竖直滚动,是用ScrollView实现的,按下“启动”按钮,开始滚动,按下停止“按钮”,停止滚动
首先是Activity,
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView;

public class ScrollActivity extends Activity {
	/** Called when the activity is first created. */
	ScrollView myscroll;
	TextView tv;
	int ori = 0;
	Button stopButton, startButton, kanButton;
	boolean isFlag = true;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.mylayout);
		myscroll = (ScrollView) findViewById(R.id.sv);
		myscroll.setVerticalScrollBarEnabled(false); //禁用垂直滚动
		myscroll.setHorizontalScrollBarEnabled(false); //禁用水平滚动


		
        
        stopButton = (Button)findViewById(R.id.stopButton);
        stopButton.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				isFlag = false;
			}});
        
        
        
        startButton = (Button)findViewById(R.id.startButton);
        startButton.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				isFlag = true;
				startScroll();
				
			}});
        
        kanButton = (Button)findViewById(R.id.kanButton);
        kanButton.setOnClickListener(new OnClickListener(){

			public void onClick(View v) {
				int count = Thread.activeCount();
				Thread[] ts = new Thread[count];
				Thread.enumerate(ts);
				for(Thread t : ts)
				{
					System.out.println(t.getName() + " ========= ");
				}
				
			}});
	}

	Handler h = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			doScrow();
		}
	};

	//滚动
	public void doScrow(){  
        int now = myscroll.getScrollY();
        if(ori == now){  
        	myscroll.scrollTo(now, 0);  
            ori = -1;  
              
        }  
        else {  
        	myscroll.smoothScrollBy(10, 2);  
              
            ori = now;  
              
        }  
    }

	//启动滚动线程
	private void startScroll()
	{
		Runnable r = new TimerLoop();
		final Thread loop = new Thread(r, "MyThread");
        loop.start();
	}
	
	public class TimerLoop implements Runnable {  
        public void run() {  
              
            while(isFlag){  
            	try {
					Thread.currentThread().sleep(100);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
                h.sendEmptyMessage(0);  
            }  
        }  
          
    }  

}

下面是xml配置
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical" >

    <ScrollView
        android:id="@+id/sv"
        android:layout_width="500px"
        android:layout_height="50dip" >

        

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="钗头凤 陆游红酥手 黄藤酒 满城春色宫墙柳东风恶 欢情薄 一杯愁绪,几年离索错!错!错!
                                                          春如旧 人空瘦 泪痕红悒鲛绡透桃花落 闲池阁 山盟虽在 锦书难托莫! 莫! 莫!钗头凤 唐婉世情薄 人情
                                                          恶 雨送黄昏花易落晓风干 泪痕残 欲笺心事 独语斜阑难!难!难!人成各 今非昨 病魂常似秋千索
                                                          角声寒 夜阑珊 怕人寻问 咽泪装欢瞒! 瞒! 瞒!" />


    </ScrollView>

        <Button 
            android:id="@+id/stopButton" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="结束"
            />
        
        <Button 
            android:id="@+id/startButton" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="启动"
            />
        
        <Button 
            android:id="@+id/kanButton" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="查看活动线程"
            />
</LinearLayout>