2011-10-19 21 views
8

Tôi đang đối mặt với một lỗi khá thú vị nhưng khó chịu, trong bố cục tuyến tính của tôi, tôi đã ẩn một bố cục tuyến tính khác bằng cách sử dụng ký tự âm và khi người dùng chọn một loại từ danh sách tôi mang bố cục đến trước sử dụng Translational Animation. phía trước có một văn bản chỉnh sửa mà trở nên chết và khi tôi cuộn (bố cục chính của tôi được bao quanh bởi chế độ xem cuộn), nó trở nên sống động và khi tôi ngừng cuộn nó trở nên chết một lần nữa ... tôi thực sự thất bại trong việc đánh giá tại sao điều này xảy ra giúp đỡ ....EditText stucks sau khi hoạt hình và sống trở lại trên di chuyển ......?

tôi cũng đã dán link của video dưới đây cho thấy hành vi gây phiền nhiễu này của ứng dụng của tôi

http://www.dailymotion.com/video/xlskk8_android-app-edit-text-error_tech

layout xml của tôi bên trong xem di chuyển là

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginLeft="10dip" 
android:layout_marginRight="10dip" 
android:layout_marginTop="-110dip" 
android:layout_marginBottom="5dip" 
android:id="@+id/notes_editor" 
android:orientation="vertical" 
> 
<EditText 
android:id="@+id/enter_note" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:maxLines="2" 
android:lines="2"> 
</EditText> 
<Button 
android:id="@+id/save_note" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:text="Save" /> 

</LinearLayout> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="-10dip" 
android:id="@+id/notes_list" 
android:orientation="vertical" 
> 
</LinearLayout> 

</LinearLayout> 

bố trí tuyến tính trống nút bên dưới được sử dụng để tự động thêm vào con xem tất cả những thứ khác đang thực hiện chức năng của họ đúng cách, chỉ chỉnh sửa văn bản cho thấy hành vi bất thường này.

mã sử dụng cho hình ảnh động dưới

public void animateEditor() 
{ 
     slider = new TranslateAnimation(0, 0, 0,180); 
     slider.setDuration(1250); 
     slider.setFillAfter(true); 
     notes_list.startAnimation(slider); 
     notes_editor.startAnimation(slider); 
} 

Trả lời

23

Vấn đề ở đây là khi áp dụng slider.setFillAfter(true); mã sinh động hình ảnh của lần xem nhưng không phải là xem thực tế đó là lý do tại sao khi tôi nhìn thấy chúng sau khi trượt xuống animation họ (EditText và nút lưu) bị kẹt hoặc bạn có thể nói đã chết và không nghe sự kiện của họ vì lượt xem thực tế ở đằng sau bố cục và ở phía trước đó chỉ là hình ảnh của họ

Giải pháp mà tôi đã tìm thấy vấn đề đó là áp dụng mã sau:

slider.setFillAfter(false); 
slider.setFillBefore(false); 
// OR you can directly write 
slider.setFillEnabled(false); 

Và sau đó để thể hiện cảnh thực tế trên vị trí mới bằng cách thiết lập hình ảnh động nghe và sử dụng các phương pháp sau đây:

public void onAnimationEnd(Animation a) 

Đặt các quan điểm về vị trí mới ở phần cuối của phim hoạt hình bằng cách sử dụng phương pháp nêu trên. Và ở đây vẫn còn một vấn đề khác của nhấp nháy đó là do vấn đề trong phương pháp nghe hình ảnh động android là nó được gọi là trước khi kết thúc hoạt hình thực sự và gây hiệu ứng nhấp nháy, một giải pháp khó khăn cho nó là bằng cách đặt dòng mã sau vào dòng đầu tiên của phương pháp public void onAnimationEnd(Animation a).

// in my case animation applied to notes_editor so the code will be 
notes_editor.clearAnimation(); 
+0

Tôi đang làm việc về kéo và thả Tôi muốn duy trì hoạt ảnh đó cho đến khi hành động được gọi nhưng thiết lập sau khi sai nó trở lại vô cùng bạn có thể trợ giúp ??? –

+0

Như tôi đã mô tả, bạn phải sử dụng trình nghe hoạt hình cho hoạt ảnh của mình trong đó phương thức onAnimationEnd (Animation a) sẽ được gọi khi hoạt ảnh của bạn kết thúc và tại thời điểm đó, bạn nên đặt chế độ xem của mình ở vị trí mới. SetFillAfter (true) có nghĩa là chỉ giữ lại hình ảnh của view ở phần cuối của animation như trong khi animation của nó chỉ là view của bạn đang hoạt hình chứ không phải view với chức năng hoàn chỉnh để fillafter sẽ đặt hình ảnh của view vào vị trí mới chứ không phải touch bounds –

+0

Điều này gần như làm việc cho tôi, nhưng vẫn có nhấp nháy không thường xuyên, đặc biệt là trên hệ điều hành Android cũ hơn. Tôi thấy rằng bằng cách trì hoãn cập nhật cho bố cục, nó đã giải quyết được sự cố. tức là sử dụng cấu trúc layout.post (Runnable). –

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