在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"> 

播放动画使用AnimationAnimationUtils

@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(); 
} 
+0

并未真正发挥作用,我相信使用动画资源文件是比较合理的。 – VictorCharlie23

+0

这个playEnterAnimation()方法只有当你第一次使用代码将视图翻译出屏幕时才起作用//将网格视图翻译出屏幕 GridView gridView = findViewById(R.id.android_gridview_menu); Display display = getWindowManager()。getDefaultDisplay(); Point size = new Point(); display.getSize(size); gridView.setTranslationX(size.x); –