在Android动画的deltaX中,我应该使用像素还是百分比?
问题描述:
我在设计视图中将视图放置在android设备屏幕右边界之外。我想播放动画并将其从屏幕外移动到屏幕上,以达到入门效果,没有任何幻想。在Android动画的deltaX中,我应该使用像素还是百分比?
但是自从我一直在使用deltaX参数。什么是正确的数字放下?我应该用像素还是百分比?
当我给出正确的输入时,正确的事件被激发,但无法找到视图,它根本不显示在屏幕上。
这里是我的问题的代码:
动画:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="100%"
android:toXDelta="0%"
android:duration="300" />
</set>
有问题的看法:
<GridView
android:id="@+id/android_gridview_menu"
android:layout_width="80dp"
android:layout_height="0dp"
android:background="#ffffff"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintLeft_toRightOf="@+id/MainUI"
android:layout_marginLeft="0dp">
答
播放动画使用Animation
和AnimationUtils
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.animation); // R.anim.animation is your animation xml.
GridView layout = (GridView) findViewById(R.id.android_gridview_menu);
layout.startAnimation(animation);
}
希望它有帮助!
答
首先翻译网格视图移出屏幕,然后播放动画
// Translating grid view out of the screen
GridView gridView = findViewById(R.id.android_gridview_menu);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
gridView.setTranslationX(size.x);
// Call this method to bring grid view from right by animation
private void playEnterAnimation(){
GridView gridView = findViewById(R.id.android_gridview_menu);
gridView.animate().translationX(0).setDuration(200).setInterpolator(new AccelerateDecelerateInterpolator()).start();
}
并未真正发挥作用,我相信使用动画资源文件是比较合理的。 – VictorCharlie23
这个playEnterAnimation()方法只有当你第一次使用代码将视图翻译出屏幕时才起作用//将网格视图翻译出屏幕 GridView gridView = findViewById(R.id.android_gridview_menu); Display display = getWindowManager()。getDefaultDisplay(); Point size = new Point(); display.getSize(size); gridView.setTranslationX(size.x); –