3
A
回答
0
對於打算頂部,你可以使用的方法
ScrollView.fullScroll(ScrollView.FOCUS_UP)
滾動部分..基本上你可以使用函數
ScrollView.smoothScrollTo (int x, int y)
您可以獲得當前X, Y
位置通過getScrollX()
和getScrollY()
,然後添加一些量進一步滾動。
3
執行ScrollView .pageScroll()
或ScrollView.smoothScrollBy()
點擊事件按鈕。
長按事件發生時,使用Runnable繼續調用ScrollView.scrollBy()
。我爲你寫了一個演示。
public class TestAndroidActivity extends Activity implements OnTouchListener,
OnGestureListener {
private static final String TAG = "TestAndroid";
private Handler mHandler = new Handler();
private ScrollView mScrollView;
private Button mBtnUp;
private Button mBtnDown;
private View mCurBtn;
private GestureDetector mDetecor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mScrollView = (ScrollView) findViewById(R.id.scroll);
mBtnUp = (Button) findViewById(R.id.btn_up);
mBtnDown = (Button) findViewById(R.id.btn_down);
mBtnUp.setOnTouchListener(this);
mBtnDown.setOnTouchListener(this);
mDetecor = new GestureDetector(this, this);
}
private long mStartTime = 0;
private float mSpeed = 0.5f;
private Runnable mScrollRunnable = new Runnable() {
@Override
public void run() {
int dy = (int) ((SystemClock.uptimeMillis() - mStartTime) * mSpeed);
mStartTime = SystemClock.uptimeMillis();
int direction = getCurrentBtnDirection();
if (direction == View.FOCUS_UP)
dy *= -1;
mScrollView.scrollBy(0, dy);
mHandler.post(this);
}
};
private int getCurrentBtnDirection() {
if (mCurBtn == mBtnUp) {
return View.FOCUS_UP;
} else if (mCurBtn == mBtnDown) {
return View.FOCUS_DOWN;
} else
return 0;
}
private void perfromPageScroll() {
int direction = getCurrentBtnDirection();
mScrollView.pageScroll(direction);
}
private void stopContinuousScroll() {
mStartTime = 0;
mHandler.removeCallbacks(mScrollRunnable);
}
private void startContinuousScroll() {
mStartTime = SystemClock.uptimeMillis();
mHandler.post(mScrollRunnable);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
mCurBtn = v;
mDetecor.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP) {
stopContinuousScroll();
}
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
perfromPageScroll();
return true;
}
@Override
public void onLongPress(MotionEvent e) {
startContinuousScroll();
}
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}
}
如果您要檢測的滾動型的滾動狀態來啓用或禁用按鈕,你必須寫一個CustomView以滾動型延伸並覆蓋OnScrollChanged()方法。
編輯:添加布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="1\n\n\n\n\n\n2\n\n\n\n\n\n3\n\n\n\n\n4\n\n\n\n5\n\n"
android:textSize="32sp" />
</ScrollView>
<Button
android:id="@+id/btn_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="up" />
<Button
android:id="@+id/btn_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="down" />
</RelativeLayout>
EDIT2:如果您正在使用一個ListView,你可以使用ListView.smoothScrollBy()
更換ScrollView.scrollBy()
。 ListView中沒有pageScroll()方法,可以自己寫,它不是很難。
EDIT3: pageScroll爲ListView控件
private void pageScroll(ListView l) {
l.smoothScrollBy(l.getHeight(), 300);
}
相關問題
- 1. 滾動按鈕jQuery向上滾動並向下滾動
- 2. 使用向上和向下按鈕向上或向下滾動頁面橫幅
- 3. 通過按鈕向上和向下移動列表視圖
- 4. 使用上下按鈕向上或向下滾動表格
- 5. 按鈕應該像滾動向上和向下
- 6. 滾動按鈕逐漸向下滾動
- 7. jQueryMobile - 用於列表視圖的向上/向下按鈕
- 8. jquery向下滾動並按下按鈕
- 9. dataGridView滾動向上和向下移動
- 10. 將按鈕向下移動
- 11. 向上/向下滾動設置數量
- 12. 向上滾動基於div位置的向上滾動動畫
- 13. 滾動單擊向上或向下按鈕
- 14. jquery向上/向下滾動按鈕不起作用
- 15. 向上/向下滾動到固定按鈕的部分
- 16. ListView滾動與向上/向下按鈕點擊錯誤
- 17. 費率向上和向下按鈕
- 18. UL LI元素自動滾動時點擊向上和向下按鈕jQuery
- 19. 向上滾動/向下滾動jquery
- 20. 檢測滾動到底 - 禁用向上/向下滾動按鈕,返回
- 21. 向下滾動使用按鈕
- 22. 向下滾動選取框按鈕
- 23. Selenium中的向下滾動按鈕
- 24. 點擊按鈕時GridView向下滾動?
- 25. 在按鈕懸停上向左或向右滾動圖像
- 26. 滾動子視圖左右,但沒有向上或向下
- 27. 如何將按鈕上的視圖向上移動
- 28. UITableViewCell - 向上滾動或向下滾動時重置內容
- 29. 向下滾動固定div&向上滾動時設置絕對
- 30. 向上滾動按鈕不起作用
讓我知道,如果它的工作對你 – Umair
但它不是一個完整的答案。 –