2016-04-14 2 views
0

У меня есть приложение, которое использует камеру,кнопки Добавить покадровую анимацию - Android

Существует вариант там, который позволяет переключать камеру, Когда эта кнопка нажата, я хотел бы, чтобы перевернуть кнопку и для него чтобы вернуться в исходное состояние, я не могу найти решение этого или способ сделать это.

Любые предложения?

+0

Показать код и быть более конкретными. что ты уже испробовал? –

ответ

0

Использование шкалы атрибутов в ImageView

Когда эта кнопка нажата, если вы хотите, чтобы щелкнуть кнопку и для того, чтобы вернуться к исходному состоянию

android:scaleX="-1" //To flip horizontally 
android:scaleY="-1" //To flip vertically 

и наоборот

Пример:

float scalingFactor = 0.5f; // scale down to half the size 
view.setScaleX(scalingFactor); 
view.setScaleY(scalingFactor); 
+0

разве этот ответ вам не помог? @ 2D3D –

0

Пример: Roid Developer Guides:
https://developer.android.com/training/animation/cardflip.html
https://developer.android.com/training/animation/anim_card_flip.mp4

Для использования анимации на одном экране (не весь экран) использовать View.setAnimation()

Animation a = AnimationUtils.loadAnimation(this,R.anim.card_flip_left_in); 
myView.setAnimation(a); 
a.startNow(); 

создания анимации XMLs:

card_flip_left_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Before rotating, immediately set the alpha to 0. --> 
    <objectAnimator 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:duration="0" /> 

    <!-- Rotate. --> 
    <objectAnimator 
     android:valueFrom="-180" 
     android:valueTo="0" 
     android:propertyName="rotationY" 
     android:interpolator="@android:interpolator/accelerate_decelerate" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. --> 
    <objectAnimator 
     android:valueFrom="0.0" 
     android:valueTo="1.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 

card_flip_left_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Rotate. --> 
    <objectAnimator 
     android:valueFrom="0" 
     android:valueTo="180" 
     android:propertyName="rotationY" 
     android:interpolator="@android:interpolator/accelerate_decelerate" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. --> 
    <objectAnimator 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 

card_flip_right_in.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Before rotating, immediately set the alpha to 0. --> 
    <objectAnimator 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:duration="0" /> 

    <!-- Rotate. --> 
    <objectAnimator 
     android:valueFrom="180" 
     android:valueTo="0" 
     android:propertyName="rotationY" 
     android:interpolator="@android:interpolator/accelerate_decelerate" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 1. --> 
    <objectAnimator 
     android:valueFrom="0.0" 
     android:valueTo="1.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 

card_flip_right_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- Rotate. --> 
    <objectAnimator 
     android:valueFrom="0" 
     android:valueTo="-180" 
     android:propertyName="rotationY" 
     android:interpolator="@android:interpolator/accelerate_decelerate" 
     android:duration="@integer/card_flip_time_full" /> 

    <!-- Half-way through the rotation (see startOffset), set the alpha to 0. --> 
    <objectAnimator 
     android:valueFrom="1.0" 
     android:valueTo="0.0" 
     android:propertyName="alpha" 
     android:startOffset="@integer/card_flip_time_half" 
     android:duration="1" /> 
</set> 
+0

Вы не поняли, чего я пытаюсь достичь, Только кнопка перевернет не весь экран. – 2D3D

+0

Это не обязательно. Используйте эту анимацию для одиночного просмотра. Анимация a = AnimationUtils.loadAnimation (это, R.anim.card_flip_left_in); myView.setAnimation (a); a.startNow(); –

0

Использование ObjectAnimator так:

cameraSwitchButton.setImageResource(icon1ResourceId); 

    cameraSwitchButton.setOnClickListener({       
      ObjectAnimator animator = ObjectAnimator.ofFloat(cameraSwitchButton, "scaleX", 0.0f).setDuration(100); 
      animator.addListener(new AnimatorListenerAdapter() { 
       @Override 
       public void onAnimationEnd(Animator animator) { 
        cameraSwitchButton.setImageResource(icon2ResourceId); 
        ObjectAnimator.ofFloat(cameraSwitchButton, "scaleX", 1.0f).setDuration(100).start(); 
       } 
      }); 
      animator.start(); 

      // Camera switch logic here... 
    }); 

Если вы хотите, чтобы перевернуть его обратно, решить, какой значок нужно в этих строках:

cameraSwitchButton.setImageResource(icon(1 or 2)ResourceId);