Android通过代码控制ListView上下滚动的方法

作者:chadeltu 时间:2022-06-29 03:07:57 

本文将介绍一种通过代码控制ListView上下滚动的方法。

先上图:

Android通过代码控制ListView上下滚动的方法

按下按钮会触发ListView滚动或停止。

实现该功能并不难,下面给出主要代码MainActivity.java


package cn.guet.levide;
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.ListView;
public class MainActivity extends Activity implements OnClickListener {
private Button btn_up, btn_down, btn_stop; // 三个按钮
private ListView listview;
private Adapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findBy();
init();
}
private void init() {
btn_up.setOnClickListener(this);
btn_down.setOnClickListener(this);
btn_stop.setOnClickListener(this);
adapter = new Adapter(this);
listview.setAdapter(adapter);
}
private void findBy() {
btn_up = (Button) findViewById(R.id.btn_scroll_up);
btn_down = (Button) findViewById(R.id.btn_scroll_down);
btn_stop = (Button) findViewById(R.id.btn_scroll_stop);
listview = (ListView) findViewById(R.id.listview);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_scroll_down:
 listScrollDown();
 break;
case R.id.btn_scroll_up:
 listScrollUp();
 break;
case R.id.btn_scroll_stop:
 listScrollOff();
 break;
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
 handler.removeCallbacks(run_scroll_down);
 handler.removeCallbacks(run_scroll_up);
}
};
/**
* 向上滚动
*/
public void listScrollUp() {
listScrollOff();
handler.postDelayed(run_scroll_up, 0);
}
/**
* 向下滚动
*/
public void listScrollDown() {
listScrollOff();
handler.postDelayed(run_scroll_down, 0);
}
/**
* 停止滚动
*/
public void listScrollOff() {
handler.removeCallbacks(run_scroll_down);
handler.removeCallbacks(run_scroll_up);
}
Runnable run_scroll_up = new Runnable() {
@Override
public void run() {
 /**
 * public void smoothScrollBy (int distance, int duration)
 *
 * Added in API level 8 Smoothly scroll by distance pixels over duration milliseconds.
 *
 * Parameters
 *   distance Distance to scroll in pixels.
 *   duration Duration of the scroll animation in milliseconds.
 */
 listview.smoothScrollBy(1, 10);
 handler.postDelayed(run_scroll_up, 10);
}
};
Runnable run_scroll_down = new Runnable() {
@Override
public void run() {
 listview.smoothScrollBy(-1, 10);
 handler.postDelayed(run_scroll_down, 10);
}
};
}

实现ListView位置变动的是smoothScrollBy方法。


public void smoothScrollBy (int distance, int duration)
 Smoothly scroll by distance pixels over duration milliseconds.

Parameters
 distance Distance to scroll in pixels.
 duration Duration of the scroll animation in milliseconds.

来源:https://blog.csdn.net/chadeltu/article/details/44078213

标签:android,listview,滚动
0
投稿

猜你喜欢

  • Java8中forEach语句循环一个List和Map

    2021-06-02 07:03:54
  • Java源码解析LinkedList

    2023-04-28 02:56:18
  • Java日常练习题,每天进步一点点(41)

    2023-05-18 18:10:02
  • SpringBoot核心@SpringBootApplication使用介绍

    2023-11-25 08:33:59
  • Spring Boot2.X国际化文件编写配置

    2023-02-24 11:34:24
  • Java单例模式的8种写法(推荐)

    2023-01-06 14:23:27
  • 分享C#操作内存读写方法的主要实现代码

    2022-10-08 08:08:44
  • java ssm框架实现分页功能的示例代码(oracle)

    2021-10-31 01:14:40
  • Android实现悬浮对话框代码

    2022-11-23 16:12:45
  • 手写java性能测试框架第二版

    2023-03-15 14:07:31
  • java简单实现多线程及线程池实例详解

    2023-05-12 05:47:04
  • Spring Boot 详细分析Conditional自动化配置注解

    2021-11-25 21:56:14
  • SpringBoot+Elasticsearch实现数据搜索的方法详解

    2023-04-17 02:45:46
  • C#面向对象设计的七大原则

    2021-10-21 04:15:49
  • Eclipse+Webservice简单开发实例

    2023-04-10 08:55:29
  • 深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)

    2021-12-01 18:27:49
  • Deepin系统安装eclipse2021-03及CDT插件的安装教程

    2022-02-12 05:42:33
  • C#对XmlHelper帮助类操作Xml文档的通用方法汇总

    2023-06-29 05:37:01
  • Java关键字详解之final static this super的用法

    2022-01-19 09:24:39
  • Springboot+AOP实现返回数据提示语国际化的示例代码

    2021-08-18 19:49:12
  • asp之家 软件编程 m.aspxhome.com