2010-02-03 6 views
6

Tôi đang cố gắng làm điều gì đó có vẻ đơn giản. Tôi muốn có chế độ xem bản đồ, với trình đơn trượt lên từ cuối màn hình nơi có thể điều chỉnh cài đặt (cho lớp phủ). Tuy nhiên khi tôi sử dụng một TranslateAnimation để ảnh hưởng đến vị trí y của LinearLayout (giữ menu), các nút trong LinearLayout di chuyển, nhưng có "hit area" vẫn ở cùng vị trí như trước khi animation.Android: Hoạt hình Xem vị trí

TranslateAnimation slide = new TranslateAnimation(0,0,0,0); 
slide.setDuration(300); 
slide.setFillAfter(true); 
pullupMenu.startAnimation(slide); 
mapContainer.startAnimation(slide); 

Tôi cũng đã xem xét việc làm giảm giá trị marginTop của chế độ xem, nhưng thậm chí không thể xác định được điều đó sẽ được thực hiện như thế nào.

Bất kỳ trợ giúp nào về một trong các hướng dẫn này sẽ được đánh giá cao.

+0

bản sao có thể có của [Android - Animate của chế độ xem TopMargin/bottomMargin/etc trong LinearLayout hoặc RelativeLayout] (http://stackoverflow.com/questions/2239442/android-animate-a-views-topmargin-bottommargin-etc-in -linearlayout-or-relativ) –

Trả lời

7

Hoạt ảnh nói chung đang làm động các pixel của tiện ích. Nghi ngờ của tôi, dựa trên những gì bạn đã viết, là setFillAfter() chỉ sắp xếp cho pixel để ở trong vị trí đích, chứ không phải chính tiện ích đó.

Nếu bạn muốn hình ảnh động để thực sự gió lên di chuyển tiện ích, bạn cần phải:

  • Đăng ký một người biết lắng nghe để tìm hiểu khi các hình ảnh động kết thúc, và
  • Sắp xếp tại thời điểm đó để thay đổi cách bố trí quy tắc sao cho tiện ích thực sự tồn tại ở vị trí mới

Bạn có thể thấy ngăn trượt sử dụng kỹ thuật này here.