如何在Android上制作FullScreen活动

Pra*_*nix 6 android android-layout android-fullscreen

好的,所以我试图复制开源的Roman Nurik 的Muzei动态壁纸应用程序的外观和感觉.

(在这里查看他的GitHub存储库 - https://github.com/romannurik/muzei/)

当App启动时,会有一个微妙的svg路径跟踪动画以及在后台进行的Ken Burns效果.

您可以注意到活动渗透到状态栏和导航栏中.

我已经能够实现背景动画但是无法弄清楚如何使活动全屏显示如下面的第二个GIF所示

我需要帮助将此活动全屏/放入状态栏和导航栏.

这就是我能够实现的目标

这就是我能够实现的目标

这就是我想要实现的

这就是我想要实现的

这是我的代码

MainActivity.Java

package devexchanges.info.kenburnview;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.Toast;

import com.flaviofaria.kenburnsview.KenBurnsView;
import com.flaviofaria.kenburnsview.RandomTransitionGenerator;
import com.flaviofaria.kenburnsview.Transition;


public class MainActivity extends AppCompatActivity {

    private KenBurnsView kenBurnsView;
    private boolean isPlay = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        kenBurnsView = (KenBurnsView) findViewById(R.id.image);


        AccelerateDecelerateInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
        RandomTransitionGenerator generator = new RandomTransitionGenerator(11000, ACCELERATE_DECELERATE);
        kenBurnsView.setTransitionGenerator(generator); //set new transition on kenburns view

        kenBurnsView.setTransitionListener(onTransittionListener());

    }

    private KenBurnsView.TransitionListener onTransittionListener() {
        return new KenBurnsView.TransitionListener() {

            @Override
            public void onTransitionStart(Transition transition) {
                //Toast.makeText(MainActivity.this, "start", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onTransitionEnd(Transition transition) {
                //Toast.makeText(MainActivity.this, "end", Toast.LENGTH_SHORT).show();
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.flaviofaria.kenburnsview.KenBurnsView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/saigon"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button android:background="@drawable/circle_button"
        android:layout_height="@dimen/intro_activate_button_size"
        android:layout_width="@dimen/intro_activate_button_size"
        android:text="ACTIVATE"
        android:textAllCaps="true"
        android:fontFamily="sans-serif-condensed"
        android:textStyle="bold"
        android:textSize="18dp"
        android:textColor="#333"
        android:id="@+id/activate_muzei_button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="103dp"
        android:elevation="2dp" />
Run Code Online (Sandbox Code Playgroud)

AZZ*_*Z_B 15

只需在style.xml中添加:

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
Run Code Online (Sandbox Code Playgroud)


Pra*_*nix 2

事实证明,这个问题有一个简单的解决方案。我只需要使状态栏和导航栏透明即可。

API 21 之后,我们可以像这样以编程方式完成它 -

getWindow().setStatusBarColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)

为了使其在较低的 Android 版本上工作,我只需要通过 /res/values-v21/styles.xml 中的 xml 添加透明度

<item name="android:statusBarColor">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)

这是最终效果

在此输入图像描述