2015-05-19 20 views
12

Có cách nào để tạo hiệu ứng chỉ kích thước văn bản của TextView mà không cần mở rộng toàn bộ bố cục của TextView không?Hoạt ảnh của kích thước văn bản của TextView android và không phải toàn bộ TextView

enter image description here

Am cố gắng để đạt được một hiệu ứng tương tự, Lưu ý các văn bản tái kích cỡ để một dòng duy nhất trong khi kích thước của nó trở nên nhỏ hơn.

+0

sử dụng ObjectAnimator/ValueAnimator – pskink

+0

@pskink một số chi tiết sẽ rất hữu ích – cozeJ4

+0

Các bạn đã thử đặt chiều cao tối thiểu cố định của TextView? 'textView.setMinHeight()'. – Kerry

Trả lời

23

này có thể đạt được với một ValueAnimator và từ đỉnh đầu của tôi, tôi nghĩ rằng nó sẽ giống như thế này:

final TextView tv = new TextView(getApplicationContext()); 

final float startSize = 42; // Size in pixels 
final float endSize = 12; 
long animationDuration = 600; // Animation duration in ms 

ValueAnimator animator = ValueAnimator.ofFloat(startSize, endSize); 
animator.setDuration(animationDuration); 

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator) { 
     float animatedValue = (float) valueAnimator.getAnimatedValue(); 
     tv.setTextSize(animatedValue); 
    } 
}); 

animator.start(); 
0

Làm theo dõi trên @korrekorre answer: Tài liệu đề xuất sử dụng đơn giản ObjectAnimator API

final TextView tv = new TextView(getApplicationContext()); 

final float endSize = 12; 
final int animationDuration = 600; // Animation duration in ms 

ValueAnimator animator = ObjectAnimator.ofFloat(tv, "textSize", endSize); 
animator.setDuration(animationDuration); 

animator.start();  

Chỉ có một caveat: Thuộc tính bạn vượt qua để các nhà xây dựng ("textSize" trong trường hợp này) phải có một phương pháp setter nào để làm việc này.

Bạn cũng có thể vượt qua một startSize để các nhà xây dựng, nếu bạn không thì xen vào sẽ sử dụng kích thước hiện tại như điểm khởi đầu

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