Tôi đang cố gắng tạo động và sau đó di chuyển hình ảnh trong hoạt động Android. Tuy nhiên, các phương thức setX() và setY() dường như không hoạt động chính xác. Nó chính xác đặt vị trí của một hình ảnh khi nó được tạo và đặt đầu tiên, nhưng bất kỳ nỗ lực nào để cập nhật nó sẽ dẫn đến hình ảnh được đặt sai vị trí. Ví dụ: hình ảnh di chuyển trên mã sau:Android setX() và setY() hoạt động lạ
ImageView image;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this);
if(action == MotionEvent.ACTION_DOWN){
image = new ImageView(MyClass.this);
layout.addView(image, width, height);
image.setX(206);
image.setY(206);
}
else if(action == MotionEvent.ACTION_MOVE){
if(image != null){
image.setX(206);
image.setY(206);
}
}
Bật ACTION_MOVE hình ảnh được di chuyển mặc dù giá trị vị trí x và y vẫn giữ nguyên. Cha mẹ của hình ảnh vẫn giữ nguyên. Kích thước vẫn giữ nguyên. Nếu tôi nhận được các giá trị x và y nó vẫn sẽ nói 206, nhưng nó không được đặt tại (206, 206) trên hoạt động nữa. Tôi bị mất là tại sao điều này đang xảy ra. Tôi không thể tìm thấy bất kỳ dấu hiệu nào cho thấy hình ảnh đã bị thay đổi trừ khi nó thay đổi địa điểm.
Tyvm cho câu trả lời. Sử dụng params làm việc cho tôi. Tôi vẫn còn tò mò như những gì đang xảy ra với setX và Y mặc dù. Tôi đã thử tất cả mọi thứ nhưng bất cứ lúc nào tôi đặt một giá trị sau khi nó đã được thiết lập trong sự kiện xuống (không có vấn đề làm thế nào tôi đặt giá trị mới) hình ảnh được chuyển đến vị trí sai. Của nó đi bởi một giá trị không đổi khoảng 30 pixel quá xa và bên trái trên giả lập tôi đang thử nghiệm với. Tôi nghĩ rằng nó đã được thay đổi cha mẹ của xem hoặc một cái gì đó nhưng đó không phải là nó. Không có gì khác biệt mà tôi có thể tìm thấy. – user2423199
Có thể là mật độ không? Khi đặt số theo chương trình, bạn nên nhân với mật độ getResources(). GetDisplayMetrics(). Để thay đổi giá trị px thành giá trị dp – marmor