2015-08-27 4 views
1

у меня есть этот код, и я хочу, чтобы вращать и масштабировать ImageView одновременно:Поворот и масштаб изображения одновременно

public class LayoutPunteggio extends RelativeLayout { 

TextView ok; 
LayoutInflater inflater; 
RotateAnimation rotateAnimation1; 

public LayoutPunteggio(Context context) { 
    super(context); 
    inflater = LayoutInflater.from(context); 
    init(); 
} 


public void init() { 
    mano = new ImageView(getContext()); 
    mano.setImageResource(R.drawable.mano); 
    mano.setX(100); 
    mano.setY(100); 
    addView(mano); 

    startScale(mano); 
    rotate(); 
} 

public void rotate() { 
    rotateAnimation1.setInterpolator(new LinearInterpolator()); 
    rotateAnimation1.setDuration(1000); 
    rotateAnimation1.setRepeatCount(-1); 
    mano.startAnimation(rotateAnimation1); 
} 

public void startScale(View view){ 
    ScaleAnimation animation; 
    animation=new ScaleAnimation(1,2,1,2,1000, 1000); 
    animation.setDuration(1000); 
    view.startAnimation(animation); 
} 
} 

Я попытался применить метод rotate() затем startScale(), но это не работа для обоих.

У кого-нибудь есть решение?

+0

Используйте «AnimationSet» http://developer.android.com/reference/android/view/animation/AnimationSet.html –

ответ

0

Я думаю, вы должны использовать AnimationSet:

AnimationSet as = new AnimationSet(true); 

// config rotation animation 
RotateAnimation ra = new RotateAnimation(...); 
ra.setDuration(1000); 
... 

// config scale animation 
ScaleAnimation sa = new ScaleAnimation(...); 
sa.setDuration(1000); 
... 

// Add animations 
as.addAnimation(ra); 
as.addAnimation(sa); 

as.start(); 
0

Начиная с Honeycomb анимации намного проще реализовать, источник: ViewPropertyAnimator

Для изменения экземпляра координат зрения:

ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 50f); 
ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 100f); 
AnimatorSet animSetXY = new AnimatorSet(); 
animSetXY.playTogether(animX, animY); 
animSetXY.start(); 
3

You может использовать библиотеку под названием NineOldAndroids. Там вы имеете playTogether функцию AnimatorSet.

AnimatorSet animation = new AnimatorSet(); 
animation.playTogether(
    ObjectAnimator.ofFloat(yourImageView, "rotation", 0, 360), 
    ObjectAnimator.ofFloat(yourImageView, "scaleX", 1, 2f), 
    ObjectAnimator.ofFloat(yourImageView, "scaleY", 1, 2f) 
); 
animation.setDuratio(1000); 
animation.start(); 

Вы также можете добавить слушатель

animation.addListener(new AnimationListener(){ 
    onAnimationStart.... 
    onAnimationRepeat... 
    onAnimationEnd... 
    onAnimationCancel... 
}); 
1

Вы можете использовать эту библиотеку: https://github.com/Yalantis/uCrop

Просто выбрать изображение или код образом пути (если вы не хотите, чтобы пользователь изменить изображение).

Смежные вопросы