2012-01-19 67 views
7

Tôi có một hoạt động có bố cục chỉ chứa VideoView. Đây là xml:RelativeLayout khiến hoạt ảnh không hoạt động?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 


    <VideoView 
android:id="@+id/videoplayer" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:layout_alignParentRight="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:layout_alignParentBottom="true" 
> 
</VideoView> 

Tôi cố gắng để áp dụng hoạt hình này cho VideoView sau khi nó dừng lại chơi:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="500"/> 
    <scale 
    android:fromXScale="1.0" 
    android:toXScale="0" 
    android:fromYScale="1.0" 
    android:toYScale="0" 
    android:duration="500" 
    android:pivotX="50%" 
    android:pivotY="0%" 
    /> 

</set> 

này hoạt động hoàn hảo như nó được hiển thị. Nhưng nếu tôi chuyển từ LinearLayout sang RelativeLayout trong bố cục thì hoạt ảnh không còn hoạt động nữa và video chỉ đóng băng trên khung cuối cùng được hiển thị trước khi nó dừng lại.

Tại sao loại bố cục gốc trong hoạt động của tôi khiến hoạt ảnh không hoạt động đúng?

EDIT: Để thêm với sự kì quái nếu tôi thêm TextView này

<TextView 
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text=" "> 
</TextView> 

Đối với RelativeLayout dưới VideoView sau đó các hình ảnh động sẽ làm việc. Tuy nhiên nếu tôi lấy không gian ra khỏi android: yếu tố văn bản của điều này thì nó trở lại không hoạt động. o.O

EDIT: Tôi đã trao tặng tiền thưởng cho Beowulf Bjornson cho mẹo hay để sử dụng khung hoạt ảnh mới hơn.

Nhưng tôi vẫn rất quan tâm nếu có ai từng nghĩ ra những gì đang xảy ra với các hình ảnh động theo phong cách cũ trong tình huống này, tôi sẽ rất vui khi ném thêm một số điểm cho nó.

+1

Cách bạn gọi hoạt ảnh trong mã Java? Vui lòng đặt nó ở đây. Có thể có được điểm cho lý do tại sao nó trở nên đóng băng. –

Trả lời

9

Tôi không chắc liệu sử dụng thư viện của bên thứ ba có phải là giải pháp khả thi cho bạn hay không, nhưng tôi khuyên bạn nên sử dụng NineOldAndroids, vì vậy bạn có thể sử dụng khả năng Hoạt ảnh của 3.0+ trong các phiên bản trước của Android. Họ làm cho công việc này dễ dàng hơn.

Đây là liên kết: http://nineoldandroids.com/

Sau đó, trên bạn hoạt động bạn có thể làm một cái gì đó dễ dàng như:

VideoView view = (VideoView) findViewById(R.id.videoplayer); 
animate(view).scaleX(0).scaleY(0).setDuration(500L); 

Tôi đã thử nghiệm nó bằng cách sử RelativeLayout và nó hoạt động như mong đợi.

EDIT: Nếu bạn muốn sử dụng việc thực hiện tổ ong bản địa, API cụ thể này là 3.1+ và nó nên được sử dụng nativelly như sau:

view.animate().scaleX(0).scaleY(0).setDuration(500L); 

Và nếu bạn muốn nativelly hỗ trợ 3.0, bạn sẽ phải sử dụng nó như sau:

AnimatorSet set = new AnimatorSet(); 
set.playTogether(
    ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 0.0f), 
    ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 0.0f), 
); 
set.setDuration(500).start(); 
+0

Đó là một thư viện gọn gàng, và tôi chắc chắn có kế hoạch để xem xét nó.Nhưng tôi đã xây dựng dự án cho tổ ong nên tôi đã có quyền truy cập vào API hoạt ảnh mới. Tôi sẽ kiểm tra vào thứ hai để xem liệu việc sử dụng API mới hơn đó có khắc phục được sự cố của tôi hay không. – FoamyGuy

+0

Chắc chắn. Tôi đã thêm một số ví dụ gốc, trong trường hợp họ có thể giúp bạn :) –

+0

Đây là một tìm kiếm tuyệt vời, cảm ơn! +1 (+2 nếu tôi có thể) – Rotemmiz

1

Tôi không chắc nhưng ứng dụng Trong ứng dụng của tôi có RelativeLayout và Animaion cũng như Video hoạt động tốt.

Nếu VideoView là Chế độ xem duy nhất của Bố cục, sau đó đặt chiều cao relativeLayout và Chiều rộng làm fill_parent và cũng cho VideoView rồi thử.

Hy vọng nó sẽ hoạt động. Nếu không thì hãy cho tôi biết.

Các vấn đề liên quan