在android中,如何将屏幕布局从顶部设置为300dp,反之亦然? 要求
我可以根据在android中,如何将屏幕布局从顶部设置为300dp,反之亦然? 要求,android,animation,slide,Android,Animation,Slide,我可以根据toYDelta=“100%”或toYDelta=“50%”等翻译版面 但我只想在300dp高度中设置布局动画 slide_down.xml 模型 问题 如何在300dp高度的基础上进行 请帮我解决这个问题 谢谢。查看动画 令人惊讶的是,似乎没有办法用XML指定300dp翻译动画。“平移”动画接受三种不同的距离规格: 相对于正常位置的绝对像素(例如,android:toYDelta=“10”) 相对于元素宽度/高度的百分比(例如,android:toYDelta=“10%”) 相对
toYDelta=“100%”或toYDelta=“50%”等翻译版面
但我只想在300dp高度中设置布局动画
slide_down.xml
模型
问题
如何在300dp高度的基础上进行
请帮我解决这个问题
谢谢。查看动画
令人惊讶的是,似乎没有办法用XML指定300dp翻译动画。“平移”动画接受三种不同的距离规格:
- 相对于正常位置的绝对像素(例如,android:toYDelta=“10”
)
相对于元素宽度/高度的百分比(例如,android:toYDelta=“10%”
)
相对于父级宽度/高度的百分比(例如,android:toYDelta=“10%p”
)
创建TranslateAnimation
时,您也会受到相同规范的约束。但是,在Java中,您可以计算(给定设备的)等效绝对像素值,并将其作为像素平移距离提供
要获得300dp,您可以在XML中定义300dp的值,或者只需在代码中执行计算
内部dimens.xml
:
<dimen name="distance">300dp</dimen>
或
在您的活动/片段/etc中:
float distance = getResources().getDimensionPixelSize(R.dimen.distance);
float distance = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 300,
getResources().getDisplayMetrics()
);
然后,您所需要做的就是在创建TranslateAnimation
时使用该距离:
TranslateAnimation animation = new TranslateAnimation(
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, distance
);
属性动画
如果您的目标是Android 3.0及以上版本,您可以使用新框架更优雅地表达相同的动画:
view.animate().translationY(distance).setDuration(...).start();
如果您的目标仍然是Android2.x,您可以使用来获得向后兼容的动画语法。它将自动为支持它的设备使用新属性动画
ViewPropertyAnimator.animate(view).translationY(distance).setDuration(...).start();
@Darshak请赏金:)
TranslateAnimation animation = new TranslateAnimation(
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, 0,
Animation.ABSOLUTE, distance
);
view.animate().translationY(distance).setDuration(...).start();
ViewPropertyAnimator.animate(view).translationY(distance).setDuration(...).start();