sách gpt4 ăn đã đi

Android:ViewPager dọc

In lại Tác giả: IT Lão Cao Thời gian cập nhật: 28-10-2023 13:00:07 27 4
mua khóa gpt4 giày nike

Có cách nào để tạo một cái không cuộn theo chiều ngang mà cuộn theo chiều dọc không?ViewPager?!

câu trả lời hay nhất

Bạn có thể sử dụng ViewPager.PageTransformerMang lại cảm giác thẳng đứng ViewPager ảo ảnh. Để cuộn dọc thay vì kéo ngang, bạn phải ghi đè ViewPager sự kiện chạm mặc định và trao đổi trước khi xử lý chúng Sự kiện chuyển động tọa độ, ví dụ:

/**
* Sử dụng kết hợp PageTransformer và hoán đổi tọa độ X & Y
* các sự kiện chạm để tạo ra ảo giác về một ViewPager cuộn theo chiều dọc.
*
* Yêu cầu API 11 trở lên
*
*/
lớp công khai VerticalViewPager mở rộng ViewPager {

public VerticalViewPager(Bối cảnh ngữ cảnh) {
siêu(bối cảnh);
nhiệt();
}

public VerticalViewPager(Bối cảnh ngữ cảnh, thuộc tính AttributeSet) {
super(bối cảnh, thuộc tính);
nhiệt();
}

riêng tư void init() {
// Phần lớn phép thuật xảy ra ở đây
setPageTransformer(đúng, VerticalPageTransformer mới());
// Cách dễ nhất để loại bỏ hình vẽ cuộn quá mức xảy ra ở bên trái và bên phải
đặtOverScrollMode(OVER_SCROLL_NEVER);
}

lớp riêng VerticalPageTransformer triển khai ViewPager.PageTransformer {

@Ghi đè
public void transformPage(View view, float position) {

nếu (vị trí < -1) { // [-Vô cực,-1)
// Trang này nằm xa màn hình về phía bên trái.
view.setAlpha(0);

} else if (vị trí <= 1) { // [-1,1]
view.setAlpha(1);

// Chống lại sự chuyển đổi slide mặc định
view.setTranslationX(view.getWidth() * -vị trí);

//đặt vị trí Y để vuốt từ trên xuống
float yPosition = vị trí * view.getHeight();
view.setTranslationY(yPosition);

} else { // (1,+Vô cực]
// Trang này nằm xa bên phải màn hình.
view.setAlpha(0);
}
}
}

/**
* Hoán đổi tọa độ X và Y của sự kiện chạm.
*/
riêng tư MotionEvent swapXY(MotionEvent ev) {
float chiều rộng = getWidth();
float chiều cao = getHeight();

float newX = (ev.getY() / chiều cao) * chiều rộng;
float newY = (ev.getX() / chiều rộng) * chiều cao;

ev.setLocation(newX, newY);

trả về ev;
}

@Ghi đè
boolean công khai trênInterceptTouchEvent(MotionEvent ev){
boolean intercepted = super.onInterceptTouchEvent(swapXY(ev));
swapXY(ev); // trả về tọa độ cảm ứng cho khung tham chiếu gốc cho bất kỳ chế độ xem con nào
trả lại bị chặn;
}

@Ghi đè
boolean công khai onTouchEvent(MotionEvent ev) {
trả về super.onTouchEvent(swapXY(ev));
}

}

Tất nhiên, bạn có thể điều chỉnh các cài đặt này nếu cần. Nó kết thúc trông như thế này:

Bản demo VerticalViewPager

Về Android: Vertical ViewPager, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13477820/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress