Activity从屏幕底部滑出、滑入、处理黑色背景和状态栏

来源:互联网 发布:商业美工证 编辑:程序博客网 时间:2024/06/07 15:47

1、首先先写两个动画,分别时进入和退出的动画。在res/anim下创建两个文件

进入动画entry.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true">    <translate        android:fromYDelta="100%p"        android:toYDelta="0"        android:duration="300"        /></set>

退出动画exit.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true">    <translate        android:fromYDelta="0"        android:toYDelta="100%p"        android:duration="300"        /></set>

扩展:

在这些属性里面还可以加上%和p,例如:
Android:toXDelta=”100%”,表示自身的100%,也就是从View自己的位置开始。
android:toXDelta=”80%p”,表示父层View的80%,是以它父层View为参照的。

2、页面跳转和退出逻辑

注意:
overridePendingTransition(R.anim.entry,0);这个方法一定要在startActivity之后去调用,否则没作用

//页面的跳转Intent intent = new Intent(MainActivity.this,Test1Activity.class);startActivity(intent);overridePendingTransition(R.anim.entry,0);

注意
overridePendingTransition方法依然要在finish方法之后调用

public class Test1Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test1);    }//重写finish方法    @Override    public void finish() {        super.finish();        overridePendingTransition(0,R.anim.exit);    }}

进行到这里基本效果已经出来了,但是怎么看着怪怪的呢,当Activity要出来时之前的那个Activity看着都是黑的,还有那个ActionBar、状态栏都存在。

3、写一个style来处理这些吧

 <style name="ActivityEntryAnimation" parent="Theme.AppCompat.Light.NoActionBar">        <!-- 去除Activity顶部黑线 -->        <item name="android:windowContentOverlay">@null</item>        <!-- 系统状态栏背景设置透明 -->        <item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">@android:color/transparent</item>        <!-- Activity背景 -->        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowBackground">@android:color/transparent</item>        <!-- 背景模糊 -->        <!--<item name="android:backgroundDimEnabled">true</item>-->    </style>

然后就完美了

1 0
原创粉丝点击