2016-04-14 46 views
0

我有一个使用摄像头的应用程序,添加按钮翻转动画 - Android电子

有一个选项存在,它允许切换摄像头, 当用户点击该按钮,我想翻转按钮,并为它回到原来的状态,我似乎找不到解决办法或这样做。

有什么建议吗?在ImageView

当如果你想翻转按钮按钮被点击

+0

显示一些代码,更具体。你试过什么了? –

回答

0

利用规模属性和它返回到原来的状态

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

示例存在于And固醇开发人员指南:
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(); 

创建动画个XML:

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(this,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);