2011-11-02 25 views
5

Tôi có một thanh công cụ căn chỉnh ở phía dưới và một WebView ở trên nó, điền vào chiều cao còn lại. Bây giờ tôi muốn trượt xuống thanh công cụ để ẩn nó, và trong khi nó hoạt hình chiều cao webview nên mở rộng. Tôi đã thử sử dụng TranslateAnimation nhưng không may là nó không điều chỉnh vị trí thực của thanh công cụ, chỉ có nội dung của nó được di chuyển. Đây là những gì tôi đã cố gắng:Android trượt xuống hoạt hình

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0%" 
    android:toXDelta="0%" 
    android:fromYDelta="0%" 
    android:toYDelta="100%" 
    android:duration="700" 
    android:fillAfter="true" /> 

Và mã thực tế:

final View v = findViewById(R.id.browseToolbar); 
Animation animation = AnimationUtils.loadAnimation(someContext, R.anim.toolbar_hide); 
v.startAnimation(animation); 

Làm thế nào tôi có thể làm điều đó?

Trả lời

1

Tôi đã viết một số mã để thực hiện các thay đổi kích thước thực tế. Hãy xem:

http://www.touchlab.co/blog/resize-animation/

Ngoài ra nhìn vào một bài thuyết trình tôi đã làm trên hình ảnh động Android

https://docs.google.com/present/view?id=djqv5kb_187c62jvbf7

Về cơ bản, như đã đề cập ở trên, các lớp hình ảnh động thường xuyên chỉ ảnh hưởng đến những gì trong tầm nhìn mẹ. Chìa khóa để hiểu chúng là chúng không phải là "thực". Hãy nghĩ về hoạt hình Android như ảo ảnh. Nếu bạn chạy ứng dụng ví dụ tôi đã tạo, giả sử bạn làm một hoạt ảnh tỷ lệ và tạo một nút nhỏ hơn, nếu bạn nhấp vào bên ngoài, trong đó nút ĐƯỢC SỬ DỤNG, nó vẫn đăng ký dưới dạng nhấp chuột. Hoạt ảnh trên Android không thực sự ảnh hưởng đến ranh giới và kích thước thực.

Nội dung trong bài đăng trên blog của tôi thực chất là triển khai ViewGroup.OnHierarchyChangeListener. Khi nội dung được thêm/xóa khỏi cấu trúc phân cấp, vùng chứa sẽ làm thay đổi kích thước vật lý.

+4

http://touchlab.co/blog/resize-animation/ liên kết không hoạt động – NetStarter

0

Khi bạn sử dụng hoạt ảnh android chỉ các pixel của chế độ xem được dịch chuyển. Để thực sự di chuyển chế độ xem, bạn sẽ cần phải thêm trình xử lý hoạt ảnh cho đối tượng hoạt ảnh và ghi đè phương thức onAnimationEnd. Trong phương pháp đó, bạn cần phải di chuyển theo chế độ xem theo chương trình.

AnimationListener animListener = new AnimationListener() { 
    @Override 
    public void onAnimationStart(Animation arg0) {}    
    @Override 
    public void onAnimationRepeat(Animation arg0) {}     
    @Override 
    public void onAnimationEnd(Animation arg0) { 
     Move the view here   
    } 
}; 

animation.setAnimationListener(animListener); 
Các vấn đề liên quan