Điều khá đơn giản mà tôi đang thực hiện, tôi đã thực hiện nó trước nhưng hiện tại nó không hoạt động như tôi mong đợi. Anyways Hãy để tôi giải thích ngắn gọn những gì tôi đang cố gắng làm và những gì tôi đang nhận ::onTouch mang lại những điểm tiếp xúc kỳ lạ Android
Kịch bản :: Tôi có một RelativeLayout
trong đó một ImageView
được đặt, Bây giờ tôi đặt touchlistener
như thế này: imageview.setOnTouchListener(this);
Nó hỏi tôi phải ghi đè lên các chức năng onTouch(View v,MotionEvent event)
mà tôi đã làm ... và trong Action_Move
tôi nhận được x và y và thêm chúng vào trái và lề hàng đầu, bằng cách này tôi đang di chuyển hình ảnh của tôi.
Vấn đề Weird: My ImageView
là di chuyển, nhưng với một cái lắc rất đáng chú ý, như thế nào nếu tôi đang di chuyển theo hướng đúng, ImageView
sẽ đi đến phía bên phải nhưng trên đường nó trở lại với bên trái để nó trông như hình ảnh không ổn định, nó rung động .. một cái gì đó như thế .. Tôi đang cho x và y mà tôi nhận được trong thời gian log
... hy vọng điều này sẽ mang lại cho bạn ý tưởng.
ACTION_DOWN[#0(pid 0)=160,233] Going right..
ACTION_MOVE[#0(pid 0)=160,233] ////
ACTION_MOVE[#0(pid 0)=160,233] //
ACTION_MOVE[#0(pid 0)=174,231] //
ACTION_MOVE[#0(pid 0)=176,233] //
ACTION_MOVE[#0(pid 0)=196,232] //
ACTION_MOVE[#0(pid 0)=152,232] // suddenly i got 152 as location for x... image comes back
ACTION_MOVE[#0(pid 0)=167,232] // again started to go right
ACTION_MOVE[#0(pid 0)=180,233] // going right
ACTION_MOVE[#0(pid 0)=173,233] // again comes a little back
ACTION_MOVE[#0(pid 0)=187,232] // same thing goes till end..
ACTION_MOVE[#0(pid 0)=159,232]
ACTION_MOVE[#0(pid 0)=174,231]
ACTION_MOVE[#0(pid 0)=177,233]
ACTION_MOVE[#0(pid 0)=189,231]
ACTION_MOVE[#0(pid 0)=155,232]
ACTION_MOVE[#0(pid 0)=171,231]
ACTION_MOVE[#0(pid 0)=183,230]
ACTION_MOVE[#0(pid 0)=161,234]
ACTION_MOVE[#0(pid 0)=171,233]
ACTION_MOVE[#0(pid 0)=174,230]
ACTION_MOVE[#0(pid 0)=183,230]
ACTION_MOVE[#0(pid 0)=162,234]
ACTION_MOVE[#0(pid 0)=170,233]
ACTION_MOVE[#0(pid 0)=176,233]
ACTION_MOVE[#0(pid 0)=165,233]
ACTION_MOVE[#0(pid 0)=175,232]
ACTION_MOVE[#0(pid 0)=163,233]
ACTION_MOVE[#0(pid 0)=171,233]
ACTION_MOVE[#0(pid 0)=167,233]
ACTION_MOVE[#0(pid 0)=172,232]
ACTION_MOVE[#0(pid 0)=178,232]
ACTION_MOVE[#0(pid 0)=158,234]
ACTION_MOVE[#0(pid 0)=170,234]
ACTION_MOVE[#0(pid 0)=170,232]
ACTION_MOVE[#0(pid 0)=177,231]
ACTION_MOVE[#0(pid 0)=157,234]
ACTION_MOVE[#0(pid 0)=160,234]
ACTION_MOVE[#0(pid 0)=169,232]
ACTION_MOVE[#0(pid 0)=165,233]
ACTION_MOVE[#0(pid 0)=167,233]
ACTION_MOVE[#0(pid 0)=159,233]
ACTION_UP [#0(pid 0)=161,233]
mã XML cho RelativeLayout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#99000000">
<ImageView
android:id="@+id/imageview"
android:layout_width="400dp"
android:layout_height="400dp"
android:layout_marginLeft="100dp"
android:layout_marginTop="100dp"
android:scaleType="matrix" />
</RelativeLayout>
Vì vậy, đây là tối đa, tôi có thể giải thích câu hỏi của tôi, vẫn còn nếu bạn cần bất cứ điều gì, cho tôi biết.
Cập nhật :: Mã cho di chuyển ImageView
trong tức là container của nó RelativeLayout
:
case MotionEvent.ACTION_MOVE:
LayoutParams params = (LayoutParams) imageview.getLayoutParams();
params.leftMargin = params.leftMargin + x;
params.topMargin = params.topMargin + y;
imageview.setLayoutParams(params);
break;
"mỗi hành động di chuyển cũng sẽ kích hoạt một OnTouchEvent hơi khác nhau gây ra một hành động di chuyển khác - lần đệ quy này cho bạn hiệu ứng" rung "." Xin giải thích nó một chút, một liên kết/tài liệu sẽ rất hữu ích, nơi nó đã được viết chi tiết ... – Farhan