赞
踩
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();
- }
- }

这样我们就实现了布局的自动滚动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。