Tôi đang cố gắng triển khai pinch để phóng to trong chế độ xem danh sách trên Android và tôi đang gặp phải sự cố khi tôi nhấp và kéo chế độ xem danh sách được thu phóng. Trước tiên, đây là mã:Pinch Zoom ListView Android
public class ScaleListView extends ListView {
private ScaleGestureDetector mScaleDetector;
private float mScaleFactor = 1.f;
private float x = 0;
private float y = 0;
private float startx = 0;
private float starty = 0;
private boolean canClick = true;
private float xtranslation = 0;
public ScaleListView(Context context, AttributeSet attrs) {
super(context, attrs);
mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
startx = ev.getX();
starty = ev.getY();
}
if (ev.getPointerCount() > 1) {
y = ev.getY();
x = ev.getX();
} else if (ev.getAction() == MotionEvent.ACTION_UP) {
canClick = (ev.getX() - startx) == 0 && (ev.getY() - starty) == 0 && mScaleFactor == 1;
} else if(ev.getAction() == MotionEvent.ACTION_MOVE){
xtranslation = ev.getX() - startx;
}
mScaleDetector.onTouchEvent(ev);
return super.onTouchEvent(ev);
}
@Override
public void onDraw(Canvas canvas) {
canvas.scale(mScaleFactor, mScaleFactor, x , y);
canvas.translate(xtranslation, 0);
super.onDraw(canvas);
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
canClick = false;
mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));
if (mScaleFactor <= 1) {
mScaleFactor = 1;
canClick = true;
}
xPos = ScaleListView.this.getWidth() - detector.getFocusX();
ScaleListView.this.invalidate();
return true;
}
}
public boolean canClick(){
return canClick;
}
Sự cố với bản dịch. Nó đi vô hạn, tôi có thể kéo nó theo chiều ngang và đưa khung nhìn danh sách ra khỏi khung nhìn. Vì vậy, tôi không thể đối mặt với cách đặt một cạnh vào bản dịch ... Cảm ơn bạn đã giúp đỡ.
bạn đã tìm thấy giải pháp chưa? –
No. Tôi đã cố gắng để tạo ra một số công thức toán học nhưng nó không hoạt động. – Augusto
là nó có thể thêm listview ở trên bên trong ascrollview? i mực này có thể tạo ra vấn đề – fatboy