Android通過代碼控制ListView上下滾動的方法
本文將介紹一種通過代碼控制ListView上下滾動的方法。
先上圖:

按下按鈕會觸發(fā)ListView滾動或停止。
實現(xiàn)該功能并不難,下面給出主要代碼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);
}
/**
* 停止?jié)L動
*/
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);
}
};
}
實現(xiàn)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和Adapter數(shù)據(jù)適配器的簡單介紹
- 詳解xamarin Android 實現(xiàn)ListView萬能適配器
- Android ListView適配器(Adapter)優(yōu)化方法詳解
- Android ListView萬能適配器實例代碼
- Android巧用XListView實現(xiàn)萬能下拉刷新控件
- android使用flutter的ListView實現(xiàn)滾動列表的示例代碼
- Android自定義控件ListView下拉刷新的代碼
- MVPXlistView展示上拉下拉效果
- Android解決ScrollView下嵌套ListView和GridView中內容顯示不全的問題
- ListView通用泛型適配器
相關文章
Android ActivityManagerService啟動流程詳解
這篇文章主要介紹了Android ActivityManagerService啟動流程,AMS,即ActivityManagerService,是安卓java framework的一個服務,運行在system_server進程。此服務十分重要,因為它管理著安卓的四大組件,是安卓APP開發(fā)者最常接觸到的一個服務2023-02-02
基于Android10渲染Surface的創(chuàng)建過程
這篇文章主要介紹了基于Android10渲染Surface的創(chuàng)建過程,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
Android中Volley框架進行請求網(wǎng)絡數(shù)據(jù)的使用
這篇文章主要介紹了Android中Volley框架進行請求網(wǎng)絡數(shù)據(jù)的使用,本文給大家介紹的非常詳細具有參考借鑒價值,需要的朋友可以參考下2016-10-10
Flutter?Widget之NavigationBar使用詳解
這篇文章主要為大家介紹了Flutter?Widget之NavigationBar使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
Android activity動畫不生效原因及解決方案總結
android activity動畫是一個比較簡單的功能。但是使用時總會由于各種小問題導致動畫失效,筆者根據(jù)自己經(jīng)驗,整理了各種可能導致的原因,期望能對你有所幫助2021-11-11

