2013-01-04 37 views
20

Sử dụng mã này Tôi chỉ bị mờ dần, tôi tìm kiếm thêm cũng bị mờ dần. Tôi thêm một xml gọi là "fadeout" nhưng tôi không thể tích hợp nó trong mã của tôi.hoạt ảnh mờ dần trong và ngoài

ImageView imageView= (ImageView)findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein); 
imageView.startAnimation(fadeInAnimation); 

button1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
imageView.startAnimation(fadeInAnimation); 

xml

<?xml version="1.0" encoding="UTF-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="Your Duration(in milisecond)" 
    android:repeatCount="infinite"/> 
</set> 

Trả lời

19

Đây là Tốt Ví dụ cho Fade In and Fade Out Animation with Alpha Effect

Animate Fade In Fade Out

CẬP NHẬT:

kiểm tra điều này answer điều này có thể giúp bạn

+0

nó không chính xác.: sau khi mờ dần hình ảnh hiển thị mà không có hiệu ứng mờ dần, tương tự cho mờ dần trong. –

31

Đây là giải pháp của tôi. Nó sử dụng AnimatorSet. Thư viện AnimationSet quá yếu để làm việc. Điều này cung cấp chuyển tiếp liền mạch và vô hạn giữa mờ dần vào và ra.

public static void setAlphaAnimation(View v) { 
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v, "alpha", 1f, .3f); 
    fadeOut.setDuration(2000); 
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v, "alpha", .3f, 1f); 
    fadeIn.setDuration(2000); 

    final AnimatorSet mAnimationSet = new AnimatorSet(); 

    mAnimationSet.play(fadeIn).after(fadeOut); 

    mAnimationSet.addListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      super.onAnimationEnd(animation); 
      mAnimationSet.start(); 
     } 
    }); 
    mAnimationSet.start(); 
} 
2

Theo tài liệu AnimationSet

Đại diện cho một nhóm Animations rằng nên được chơi cùng nhau. Việc chuyển đổi của từng hoạt ảnh riêng lẻ được tổng hợp lại thành một biến đổi đơn lẻ. Nếu AnimationSet đặt bất kỳ thuộc tính mà con của nó cũng đặt (ví dụ, thời gian hoặc fillBefore), các giá trị của AnimationSet ghi đè lên đứa trẻ đánh giá cao

AnimationSet mAnimationSet = new AnimationSet(false); //false means don't share interpolators 

đèo đúng nếu tất cả các hình ảnh động trong bộ này nên sử dụng nội suy được liên kết với Tập hợp hoạt ảnh này. Vượt qua sai nếu mỗi hoạt ảnh nên sử dụng nội suy riêng của nó.

ImageView imageView= (ImageView)findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); 
Animation fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); 
mAnimationSet.addAnimation(fadeInAnimation); 
mAnimationSet.addAnimation(fadeOutAnimation); 
imageView.startAnimation(mAnimationSet); 

Tôi hy vọng điều này sẽ giúp bạn.

0

Tôi đã làm việc ở Kotlin (giới thiệu cho mọi người) nên cú pháp có thể hơi lệch. Những gì tôi làm là chỉ cần gọi:.

  • v.animate() alpha (0f) .duration = 200

Tôi nghĩ rằng, trong Java, nó sẽ là như sau .: .

  • v.animate() alpha (0f) .setDuration (200)

Hãy thử:

  • void riêng ẩn (Xem v, thời lượng int) { v.animate(). Alpha (0f).setDuration (thời gian) }

  • private void show (Xem v, thời gian int) { v.animate() alpha (1f) .setDuration (thời gian) }

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