2012-12-26 30 views
15

Alphaing một tác phẩm drawable cũng như thế này:Làm thế nào để xoay một drawable bởi ObjectAnimator?

if(mAlphaAnimation == null){ 
     mAlphaAnimation = ObjectAnimator.ofFloat(this, "alpha", 0.0f,1.0f).setDuration(TARGET_ANIM_ALPHA_DURATION); 
     mAlphaAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); 
     mAlphaAnimation.setStartDelay(TARGET_ANIM_ALPHA_DELAY_BASE*power); 
     mAlphaAnimation.setRepeatCount(ValueAnimator.INFINITE); 
     mAlphaAnimation.setRepeatMode(ValueAnimator.REVERSE); 
     mAlphaAnimation.addUpdateListener(this); 
} 

Nhưng nếu tôi muốn xoay đối tượng vẽ được như dưới đây, nó làm việc don của.

private void createRotateAnim(float fromDegress,float toDegress,int duration){ 
    if(mRotateAnimation == null){ 
     mRotateAnimation = ObjectAnimator.ofFloat(this, "rotation",fromDegress,toDegress).setDuration(duration); 
     mRotateAnimation.setStartDelay(100); 
     mRotateAnimation.setInterpolator(new AccelerateInterpolator()); 
     mRotateAnimation.addUpdateListener(this); 
    } 
} 

Bất kỳ ai cũng có thể giúp tôi khắc phục sự cố này hoặc cách khác để tạo hoạt ảnh có thể xoay.

Tôi rất tiếc phải tiếng Anh kém tôi.

+0

Tôi muốn thay đổi một tình trạng có thể vẽ được thông qua sự kiện liên lạc, đối tượng vẽ là một drawable duy nhất, không phải là một ví dụ list.For drawable, thay đổi một giá trị alpha drawable theo di chuyển khoảng cách trên màn hình. Và chức năng này đã kết thúc. Sau đó, tôi muốn thay đổi hướng vẽ theo góc di chuyển. Nói cách khác, xoay bản vẽ theo góc. Các giá trị này sẽ được vẽ trên cùng một chế độ xem. Tôi muốn biết một đối tượng ObjectAnimator có thuộc tính xoay có thể xoay một đối tượng có thể vẽ được hay không. có lẽ, nó có thể xoay, bởi vì một lần xem hình ảnh có thể xoay một drawable được sử dụng để background drawable. – marine8888

+0

trùng lặp có thể xảy ra của [Android: Sử dụng ObjectAnimator dịch một View với giá trị phân số của chiều kích của Xem] (http://stackoverflow.com/questions/10854940/android-using-objectanimator-to-translate-a-view-with- phân số-giá trị-of-the) –

Trả lời

13

Hãy thử xoay này đơn giản Animation áp dụng cho một hình ảnh.

ImageView imageview = (ImageView)findViewById(R.id.myimage); 
RotateAnimation rotate = new RotateAnimation(180, 360, Animation.RELATIVE_TO_SELF,  
0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    rotate.setDuration(500); 
imageview.startAnimation(rotate); 

Câu trả lời này chỉ là một câu hỏi, đúng là khu vực có thể nhấp sẽ khác với vị trí hiện tại của View. Vui lòng kiểm tra câu hỏi này để tạo vùng có thể nhấp chính xác. Button is not clickable after TranslateAnimation

+0

Cảm ơn bạn. nhưng tôi không muốn đặt đường ranh giới vào dạng xem khác, như ImageView và vân vân, nhưng muốn vẽ nó lên một lớp con của chế độ xem (NOT ViewGroup). – marine8888

+1

@ sea8888 Tôi nghĩ rằng bạn nhầm, 'ImageView' chỉ đơn giản là một lớp con của' View' và không phải 'ViewGroup' (chính nó là một phân lớp của' View'). Bạn có thể tạo lớp con của riêng bạn của 'View' và vẽ drawable vào một canvas, tuy nhiên điều này sẽ làm công việc giống như một' ImageView'. –

47

Hãy thử với ObjectAnimator để thay thế.

ImageView imageview = (ImageView)findViewById(R.id.image); 

ObjectAnimator imageViewObjectAnimator = ObjectAnimator.ofFloat(imageview , 
        "rotation", 0f, 360f); 
      imageViewObjectAnimator.setDuration(1000); // miliseconds 
      imageViewObjectAnimator.start(); 

EDIT Kể từ khi câu hỏi này thu hút một số sự chú ý cho tôi để giải thích lý do tại sao sử dụng ObjectAnimator thay vì làm phim hoạt hình chuyển tiếp khác

Điều về việc sử dụng ObjectAnimator được rằng nó di chuyển cả hữu hình và khu vực có thể nhấp của mục, nếu bạn sử dụng phương thức hoạt ảnh khác, ví dụ: Hoạt ảnh chuyển tiếp hoặc một số Hoạt ảnh khác, và giả sử nếu bạn muốn di chuyển Button từ dưới cùng bên trái của màn hình lên trên cùng bên trái, nó sẽ chỉ di chuyển khu vực nhưng không phải là số Button, khu vực có thể nhấp sẽ vẫn ở vị trí trước đó, trong trường hợp này, khu vực có thể nhấp sẽ vẫn ở dưới cùng bên trái thay vì trên cùng bên trái, nơi bạn đã di chuyển nút.

Nếu bạn làm tương tự với ObjectAnimator, cả hai khu vực rõ rệt, và vùng có thể nhấp sẽ di chuyển vị trí mong muốn.

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