有没有办法在没有黑色间隙的活动之间滑动?

时间:2014-08-08 11:07:35

标签: android

我正在尝试创建一个Android应用,并在活动与幻灯片之间切换,前一个活动向右滑动,新活动在左侧。

我可以这样做,但是:

Intent intent = new Intent(getContext(), NextActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.in_ltr, R.anim.out_ltr);

in_ltr.xml的位置:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
  <translate
    android:fromXDelta="-100%p"
    android:toXDelta="0"
    android:duration="700"
    />
</set>

out_ltr.xml是:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
  <translate
    android:fromXDelta="0"
    android:toXDelta="100%p"
    android:duration="500"
    />
</set>

它几乎是完美的,但在动画期间两个活动之间出现了一个小的黑色差距。您可以在YouTube上看到它。

我在过去一小时内尝试过在谷歌找到的任何东西,但似乎没有什么能消除这一差距。是否有可能消除这种差距?

谢谢!

5 个答案:

答案 0 :(得分:0)

尝试使用翻译效果设置Alpha ....

试试这个...

<强> slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:interpolator/accelerate_cubic">
   <translate
      android:fromXDelta="0%"
      android:toXDelta="100%"
      android:duration="400" />
   <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.3"
        android:duration="500" />
</set>

答案 1 :(得分:0)

在res / anim文件夹中添加这两个文件。

slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
        <translate 
              xmlns:android="http://schemas.android.com/apk/res/android"
              android:duration="@android:integer/config_longAnimTime" 
              android:fromXDelta="100%p" 
              android:toXDelta="0%p">
        </translate>

slide_out.xml

<?xml version="1.0" encoding="utf-8"?>
       <translate
             xmlns:android="http://schemas.android.com/apk/res/android" 
             android:duration="@android:integer/config_longAnimTime" 
             android:fromXDelta="0%p" 
             android:toXDelta="-100%p">
      </translate>

在您通过Intent的下一个活动的onCreate()方法中编写以下代码。

            overridePendingTransition(r.anim.slide_in, R.anim.slide_out);

希望它会删除你的空间

答案 2 :(得分:0)

试试这个:创建一个RootActivity.java并在你的活动中扩展它。

import android.app.Activity;
import android.os.Bundle;

public class RootActivity extends Activity {
    int onStartCount = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        onStartCount = 1;
        if (savedInstanceState == null) // 1st time
        {
            this.overridePendingTransition(R.anim.anim_slide_in_left,
                    R.anim.anim_slide_out_left);
        } else // already created so reverse animation
        { 
            onStartCount = 2;
        }
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        if (onStartCount > 1) {
            this.overridePendingTransition(R.anim.anim_slide_in_right,
                    R.anim.anim_slide_out_right);
        } else if (onStartCount == 1) {
            onStartCount++;
        }

    }
}

将这些动画添加到动画文件夹:

anim_slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="100%"
        android:toXDelta="0%" >
    </translate>
</set>

anim_slide_in_right.xml

    <?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="-100%"
        android:toXDelta="0%" >
    </translate>
</set>

anim_slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="0%"
        android:toXDelta="100%" >
    </translate>
</set>

anim_slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="0%"
        android:toXDelta="-100%" >
    </translate>
</set>

答案 3 :(得分:0)

尝试将以下项目添加到AppTheme

<item name="android:windowIsTranslucent">true</item>

答案 4 :(得分:-1)

对不起,伙计们,我非常,非常愚蠢。

我将duration更改为相同的时间,差距消失了。