Cách tạo chế độ xem cuộn trang bị trả lại trong android như iPhone?Làm cách nào để tạo chế độ xem cuộn đáng tin cậy trong android?
Trả lời
Nó được gọi là ghi đè trong Android.
Xem http://developer.android.com/reference/android/widget/OverScroller.html và (ví dụ) http://developer.android.com/reference/android/widget/ListView.html#setOverscrollFooter(android.graphics.drawable.Drawable)
Đó là chỉ có sẵn từ cấp API 9 trở đi.
Tuy nhiên, các thiết bị Samsung dường như để hỗ trợ thanh cuộn tự nhiên trong Android 2.2
Thêm hiệu ứng nảy để scrollview trong android
Bước 1: Tạo BounceScrollView file mới trong gói com.base.view
public class BounceScrollView extends ScrollView
{
private static final int MAX_Y_OVERSCROLL_DISTANCE = 200;
private Context mContext;
private int mMaxYOverscrollDistance;
public BounceScrollView(Context context)
{
super(context);
mContext = context;
initBounceScrollView();
}
public BounceScrollView(Context context, AttributeSet attrs)
{
super(context, attrs);
mContext = context;
initBounceScrollView();
}
public BounceScrollView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
mContext = context;
initBounceScrollView();
}
private void initBounceScrollView()
{
//get the density of the screen and do some maths with it on the max overscroll distance
//variable so that you get similar behaviors no matter what the screen size
final DisplayMetrics metrics = mContext.getResources().getDisplayMetrics();
final float density = metrics.density;
mMaxYOverscrollDistance = (int) (density * MAX_Y_OVERSCROLL_DISTANCE);
}
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent)
{
//This is where the magic happens, we have replaced the incoming maxOverScrollY with our own custom variable mMaxYOverscrollDistance;
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, mMaxYOverscrollDistance, isTouchEvent);
}
}
Bước 2: Tại bố trí của bạn, hãy thay đổi
<ScrollView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
để
<com.base.view.BounceScrollView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
hi, cảm ơn vì giải pháp, công trình tuyệt vời cho tôi. Xin vui lòng cập nhật mã của bạn, u có một chút sai lầm trong: initBounceListView() nên được initBounceScrollView();) –
Cảm ơn bạn đã giải pháp, nó hoạt động hoàn hảo. – ACengiz
này là tuyệt vời !!!! cảm ơn bạn! –
tôi đã được cải thiện phiên bản của câu trả lời này: https://stackoverflow.com/a/13391248/3256989. Vì vậy, phiên bản của tôi là (ví dụ cho HorizontalScrollView):
public class HorizontalOverScrollView extends HorizontalScrollView {
private static final int WIDTH_DEVIDER_OVERSCROLL_DISTANCE = 3;
private TimeInterpolator mInterpolator;
private int mMaxOverscrollDistance;
private int mAnimTime;
private long mStartTime;
/**
* Instantiates {@link HorizontalOverScrollView} object.
*/
public HorizontalOverScrollView(final Context context) {
super(context);
init();
}
/**
* Instantiates {@link HorizontalOverScrollView} object.
*/
public HorizontalOverScrollView(final Context context, final AttributeSet attrs) {
super(context, attrs);
init();
}
/**
* Instantiates {@link HorizontalOverScrollView} object.
*/
public HorizontalOverScrollView(final Context context, final AttributeSet attrs, final int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
final int widthPixels = getContext().getResources().getDisplayMetrics().widthPixels;
mMaxOverscrollDistance = widthPixels/WIDTH_DEVIDER_OVERSCROLL_DISTANCE;
mAnimTime = getContext().getResources().getInteger(android.R.integer.config_mediumAnimTime);
mInterpolator = new DecelerateInterpolator();
}
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
int overScrollDistance = mMaxOverscrollDistance;
if (isTouchEvent) {
mStartTime = AnimationUtils.currentAnimationTimeMillis();
} else {
final long elapsedTime = AnimationUtils.currentAnimationTimeMillis() - mStartTime;
float interpolation = mInterpolator.getInterpolation((float) elapsedTime/mAnimTime);
interpolation = interpolation > 1 ? 1 : interpolation;
overScrollDistance -= overScrollDistance * interpolation;
overScrollDistance = overScrollDistance < 0 ? 0 : overScrollDistance;
}
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, overScrollDistance, maxOverScrollY, isTouchEvent);
}
}
Chỉ cần sử dụng OverScrollDecoratorHelper
ScrollView scrollView = (ScrollView) findViewById(R.id.scroll_view);
OverScrollDecoratorHelper.setUpOverScroll(scrollView);
HorizontalScrollView horizontalScrollView = (HorizontalScrollView) findViewById(R.id.horizontal_scroll_view);
OverScrollDecoratorHelper.setUpOverScroll(horizontalScrollView);
- 1. Cách nhận được độ rộng màn hình một cách đáng tin cậy Với thanh cuộn
- 2. Có cách nào để tính toán độ cao của UITextView một cách đáng tin cậy không?
- 3. Android: tạo chế độ xem tùy chỉnh có thể cuộn
- 4. Chế độ xem lưới Android Cuộn ngang
- 5. Chế độ xem tái chế trong chế độ xem danh sách, đáng giá?
- 6. Cách tạo chế độ xem cuộn vô hạn trong iPhone?
- 7. Làm thế nào để có đáng tin cậy QGLWidget chụp
- 8. HTTP_REFERER đáng tin cậy như thế nào?
- 9. Ổ cắm unix miền đáng tin cậy đáng tin cậy như thế nào?
- 10. Danh sách CA đáng tin cậy trong android?
- 11. Chế độ xem cuộn cho chế độ xem văn bản trong android
- 12. Nhiệm vụ nền lặp lại đáng tin cậy trên android
- 13. Làm cách nào để di chuyển một cách đáng tin cậy Virtual TreeView xuống dưới cùng?
- 14. Chế độ xem văn bản không thể cuộn trong android
- 15. Cuộn chế độ xem web bên trong Chế độ xem cuộn
- 16. Làm cách nào để kéo chế độ xem trong UIScrollView bằng cách cuộn gần các cạnh?
- 17. Ràng buộc không đáng tin cậy
- 18. Cách tạo chế độ xem dạng cây trong Android?
- 19. Cách tạo giá như chế độ xem trong Android?
- 20. Làm cách nào để biết rằng chế độ xem cuộn đã được cuộn xuống dưới cùng?
- 21. Bitbucket có đáng tin cậy không?
- 22. Cách tạo chế độ xem web tùy chỉnh trong Android?
- 23. In_irq() có đáng tin cậy không?
- 24. cách tạo chế độ xem android có thể cuộn khi bàn phím xuất hiện?
- 25. Cách đáng tin cậy để xác định xem các quyền ntfs đã được thừa hưởng
- 26. C# MouseMove đáng tin cậy (hop)
- 27. Làm cách nào để chuyển đổi chế độ xem từ trong chế độ xem?
- 28. Hẹn giờ đáng tin cậy hơn System.Threading.Timer
- 29. Làm thế nào để làm cho apache chậm và không đáng tin cậy?
- 30. Cách thêm chế độ xem phụ vào một chế độ xem trên web để chế độ xem phụ sẽ cuộn cùng với chế độ xem web?
Android 2.2 là API mức 8 - Ý anh là 2.1? – Izkata
Nhận xét hợp lệ: phải đọc "API cấp 9"; Tôi đã chỉnh sửa cho phù hợp –