Android ScrollView自动滚屏或者直接滚屏到底部

来源:互联网 发布:js实现word预览 编辑:程序博客网 时间:2024/05/16 09:41

直接上源码


import java.util.Timer;import java.util.TimerTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.graphics.Color;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.TextView;public class MainActivity extends Activity {LinearLayout mainLayout;Button button1;Button button2;ScrollView sv;TextView tv;boolean isScroll=false;Timer timer;AutoScrollTask autoTask;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//mainLayoutmainLayout=new LinearLayout(this);mainLayout.setOrientation(LinearLayout.VERTICAL);mainLayout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));//button1button1=new Button(this);button1.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));button1.setText("步进滚动阅读模式");button1.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubisScroll=true;if(timer==null){sv.scrollTo(0, 0);//重新定位到顶端timer=new Timer();autoTask=new AutoScrollTask();timer.schedule(autoTask, 1000, 500);}}});//button2button2=new Button(this);button2.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));button2.setText("一步到位到最底部");button2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubisScroll=false;//try{Thread.sleep(600);}catch(Exception ex){};//int h1=tv.getMeasuredHeight();sv.scrollTo(0, h1);//直接显示文本底端}});//tvtv=new TextView(this);tv.setBackgroundColor(Color.WHITE);tv.setTextColor(Color.BLACK);for(int i=0;i<100;i++){tv.append("这是第"+String.valueOf(i)+"行\n");}//sv=new ScrollView(this);sv.addView(tv);//mainLayout.addView(button1);mainLayout.addView(button2);mainLayout.addView(sv);setContentView(mainLayout);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}class AutoScrollTask extends TimerTask{public void run(){if(isScroll){Message msg=new Message();msg.what=1;handler.sendMessage(msg);}}}Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubif(msg.what==1){//如果没有到底端,Y偏移量增加10if(sv.getScrollY()<tv.getMeasuredHeight()-10){sv.scrollBy(0, 10);}else {//直接到底端sv.scrollTo(0, tv.getMeasuredHeight());}}super.handleMessage(msg);}};}

0 0
原创粉丝点击