ScrollView实现界面自动滚动

Android 目录:Android 目录-CSDN博客

在Android项目中,有时我们需要实现自动滚屏或者根据选择跳转到指定位置的功能。这里用到的主要组件就是滚动视图(ScrollView)

以下主要介绍使用ScrollView如何实现界面自动滚动

1、声明控件对象

private LinearLayout linearLayout = null;
private ScrollView scrollView = null;

2、获得控件对象

linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
scrollView = (ScrollView) findViewById(R.id.scrollView);

3、定义一个Handler对象

private final Handler handler = new Handler();

4、实现滚动线程;

	private Runnable ScrollRunnable = new Runnable() {
		@Override
		public void run() {
			int off = linearLayout.getMeasuredHeight() - scrollView.getHeight();
			if (off > 0) {
				scrollView.scrollBy(0, 30);
				if (scrollView.getScrollY() == off) {
					Thread.currentThread().interrupt();
				} else {
					handler.postDelayed(this, 1000);
				}
			}
		}
	};

5、在自动滚动按钮上添加监听器

btnSelf.setOnClickListener(new btnSelfListener());

6、实现自动滚动按钮监听器

	/*
	 * 自动滚动按钮监听器
	 */
	class btnSelfListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			// 当前按钮文字是自动滚动
			if (btnSelfStr == R.string.selfMotion) {
				// 将按钮文字设为“停止滚动”
				btnSelf.setText(R.string.stopSelfMotion);
				btnSelfStr = R.string.stopSelfMotion;
				// 开始自动滚动
				handler.post(ScrollRunnable);
			} else {
				// 将按钮文字设为“自动滚动”
				btnSelf.setText(R.string.selfMotion);
				btnSelfStr = R.string.selfMotion;
				// 停止自动滚动
				handler.removeCallbacks(ScrollRunnable);
			}
		}
	}

这样我们就实现了布局的自动滚动。那么如何实现根据选择直接跳转到指定的位置呢?

直接跳转主要用到以下方法

// 跳转至开头
scrollView.fullScroll(ScrollView.FOCUS_UP);
// 跳转至结尾
scrollView.fullScroll(ScrollView.FOCUS_DOWN);

1、在跳转按钮上添加监听器

btnGoto.setOnClickListener(new btnGotoListener());

2、实现该监听器

	/*
	 * 跳转按钮监听器
	 */
	class btnGotoListener implements OnClickListener {
		int choice = -1;
		@Override
		public void onClick(View v) {
			// 弹出跳转设置对话框
			new AlertDialog.Builder(MainActivity.this)
					.setTitle("跳转设置")
					.setSingleChoiceItems(new String[] { "开头", "结尾" }, -1,
							new DialogInterface.OnClickListener() {
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									switch (which) {
									case 0:
										choice = 0;
										break;
									case 1:
										choice = 1;
										break;
									}
								}
							})
					.setPositiveButton("跳转",
							new DialogInterface.OnClickListener() {

								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									switch (choice) {
									case 0:
										// 跳转至开头
										scrollView
												.fullScroll(ScrollView.FOCUS_UP);
										break;
									case 1:
										// 跳转至结尾
										scrollView
												.fullScroll(ScrollView.FOCUS_DOWN);
										break;
									}
								}
							}).setNegativeButton("返回", null).show();
		}
	}

这样我们就实现了布局的自动滚动。

源码:http://download.csdn.net/detail/dkbnull/9298787

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值