相关疑难解决方法(0)

Android:使用ObjectAnimator将View转换为View维度的小数值

似乎旧的视图动画(translate,scale等等)不再被AnimationInflaterICS 接受了.我在阅读4.0.4的代码,并明确预计只有XML元素set,objectAnimator,animator.

即使http://developer.android.com/guide/topics/resources/animation-resource.html上的文档继续包含视图动画,它们似乎也已弃用.例如,尝试使用它们会导致错误java.lang.RuntimeException: Unknown animator name: translate.

因此,有必要使用Android ObjectAnimator.但是,它不接受自身或其父级(translationX例如,宽度)的关联维度的小数值,就像旧视图动画在表单中所做的那样"75%p".

ObjectAnimator通过以编程方式获取片段的大小来在运行时手动构建是不可行的,因为它FragmentTransaction仅接受由渣油指定的声明性动画.

我的目标是在屏幕外翻译一个填满整个Activity的Fragment(我基本上是在两个片段之间进行转换).这是现有的TranslationAnimation实现(由于某些原因slide_in_right.xml,它与其对应物slide_out_left.xml没有公开android.R.anim,因此我必须在我的代码库中复制它们):

<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="100%p"
    android:toXDelta="0"
    android:duration="@android:integer/config_mediumAnimTime"/>
</set>
Run Code Online (Sandbox Code Playgroud)

我的API级别设置为14.

谢谢!

animation android

40
推荐指数
3
解决办法
7万
查看次数

FragmentTransation setCustomAnimations无效

我尝试使用新的android兼容包将片段包含到我的项目中.我在添加新片段时尝试包含过渡动画.这件事只是我的动画作品之一.In动画可以工作,但Out动画不起作用.我在某处读到这是兼容包中的一个错误.但我也读到该错误已在兼容包的第3版中修复.任何人都可以帮我解决这个问题

在动画中

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/anticipate_interpolator"
android:fromXDelta="0"
android:toXDelta="0"
android:fromYDelta="100%"        
android:toYDelta="0%"
android:duration="1000"/>
Run Code Online (Sandbox Code Playgroud)

出动画

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
android:fromXDelta="0"
android:toXDelta="0"
android:zAdjustment="top"
android:fromYDelta="0%"        
android:toYDelta="100%"
android:duration="1000"/>
Run Code Online (Sandbox Code Playgroud)

这是我用来添加片段的代码

newFragment = new HelloWorldFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.bottom_top_animation, R.anim.top_bottom_animation);
ft.add(R.id.outer_layout, newFragment);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-support-library

26
推荐指数
2
解决办法
2万
查看次数