android通过代码控制ListView上下滚动
16lz
2021-01-25
本文将介绍一种通过代码控制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;@Overridepublic 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);}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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.
工程源码:
Android listview 代码控制上下移动
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- [Android]文件操作模式与SDCard读写访问
- Android中的SystemClock类
- Android周笔记(9.8-14)(持续更新)
- Android(安卓)Service之串行化Service:IntentService(系列3)
- Android使用libgdx实现模拟方向键控制角色移动的方法
- Android(安卓)UI 之 ListView
- Android中Drawable Bitmap Canvas Paint之间区别
- ADT Plugin for Eclipse(Android开发工具) 20.0.3 官方最新版