2015-12-21 29 views
1

我一直在试图关注android flip card tutorial。按照指示,我创建了四个自定义动画设置Android套装自定义动画

card_flip_right_in.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<objectAnimator 
    android:valueFrom="1.0" 
    android:valueTo="0.0" 
    android:propertyName="alpha" 
    android:duration="0" /> 

<objectAnimator 
    android:valueFrom="180" 
    android:valueTo="0" 
    android:propertyName="rotationY" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:duration="300" /> 

<objectAnimator 
    android:valueFrom="0.0" 
    android:valueTo="1.0" 
    android:propertyName="alpha" 
    android:startOffset="150" 
    android:duration="1" /> 
</set> 

card_flip_right_out.xml:

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

<objectAnimator 
    android:valueFrom="1.0" 
    android:valueTo="0.0" 
    android:propertyName="alpha" 
    android:startOffset="150" 
    android:duration="1" /> 
</set> 

card_flip_left_in.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 

<objectAnimator 
    android:valueFrom="1.0" 
    android:valueTo="0.0" 
    android:propertyName="alpha" 
    android:duration="0" /> 

<objectAnimator 
    android:valueFrom="-180" 
    android:valueTo="0" 
    android:propertyName="rotationY" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:duration="300" /> 

<objectAnimator 
    android:valueFrom="0.0" 
    android:valueTo="1.0" 
    android:propertyName="alpha" 
    android:startOffset="150" 
    android:duration="1" /> 
</set> 

card_flip_left_out.xml:

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

<objectAnimator 
    android:valueFrom="1.0" 
    android:valueTo="0.0" 
    android:propertyName="alpha" 
    android:startOffset="150" 
    android:duration="1" /> 
</set> 

而且,我有这个在我的片段:

public class ContestantInfoFragment extends Fragment { 

private Context context; 

private String cName, cCountry, cDesc; 

private TextView contestant_name, contestant_country, contestant_desc; 
private ImageButton flip_btn; 

public ContestantInfoFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.fragment_contestant_info, container, false); 

    context = inflater.getContext(); 

    Bundle bundle = this.getArguments(); 
    if(bundle != null) { 
     cName = bundle.getString("NAME", "Problem loading contestant's name"); 
     cCountry = bundle.getString("COUNTRY", "Problem loading contestant's country"); 
     cDesc = bundle.getString("DESC", "Problem loading contestant's description"); 

     contestant_name = (TextView) v.findViewById(R.id.contestant_name); 
     contestant_country = (TextView) v.findViewById(R.id.contestant_country); 
     contestant_desc = (TextView) v.findViewById(R.id.contestant_desc); 

     contestant_name.setText(cName); 
     contestant_country.setText(cCountry); 
     contestant_desc.setText(cDesc); 
    } 

    flip_btn = (ImageButton) v.findViewById(R.id.contestant_flip_btn); 
    flip_btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getActivity().getSupportFragmentManager() 
        .beginTransaction() 
        .setCustomAnimations(R.animator.card_flip_right_in, R.animator.card_flip_right_out, 
             R.animator.card_flip_left_in, R.animator.card_flip_left_out) 
        .replace(R.id.mainContent, new ContestantsFragment()) 
            .addToBackStack(null) 
            .commit(); 
     } 
    }); 

    return v; 
} 

}

但是,我得到了使用

.setCustomAnimations(R.animator.card_flip_right_in, R.animator.card_flip_right_out, 
             R.animator.card_flip_left_in, R.animator.card_flip_left_out) 

我得到的反馈语法错误(红色拉链线)是“预期的类型anim资源” 任何人有任何想法,为什么这不工作?

+0

我得到了相同的结果,可能是因为他们的例子使用了'getFragmentManager()'而我们合理的程序员正试图使用​​'getSupportFragmentManager()' –

+0

[Android中的自定义动画](http://www.singhajit.com/ Android的定制动画/) –

回答

1

根源:

谷歌的例子使用getFragmentManager(),我们明智的程序员正在尝试使用getSupportFragmentManager()

不幸的是,getSupportFragmentManager().setCustomAnimations()签名是不同的。 此外,objectAnimatorgetSupportFragmentManager().setCustomAnimations()

总之不兼容,谷歌创建了一个无用的卡翻转演示。如果你四处搜寻,你会发现很多人遇到了同样的问题。


解决方案:使用“Android的支持库V4与NineOldAndroids”库 https://stackoverflow.com/a/18511350/550471

当然这是有道理的,谷歌的支持库的需求与暴露功能的支持。 LOL