web-dev-qa-db-ja.com

Android)でフルスクリーンアクティビティを作成する方法

さて、私は Muzei Live Wallpaper オープンソースのRomanNurikによるアプリのルックアンドフィールを複製しようとしています。

(ここで彼のGitHubリポジトリをチェックしてください https://github.com/romannurik/muzei/

アプリが起動すると、微妙なsvgパストレーシングアニメーションと、バックグラウンドで実行されるKenBurnsエフェクトがあります。

アクティビティがステータスバーとナビゲーションバーに流れ込んでいることがわかります。

背景アニメーションを作成することはできましたが、下の2番目のGIFに示すようにアクティビティを全画面表示にする方法を理解できませんでした

このアクティビティをフルスクリーンにする/ステータスバーとナビゲーションバーにブリードするのに助けが必要です。

これが私が達成できたことです

Here's what I have been able to achieve

これは私が実装したいものです

This what I want to implement

これが私のコードです

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

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" />
6
Prateek Phoenix

問題には簡単な解決策があることがわかりました。ステータスバーとナビゲーションバーを透明にする必要がありました。

API 21を投稿すると、次のようにプログラムで実行できます-

getWindow().setStatusBarColor(Color.TRANSPARENT);

それをより低いAndroidバージョンで動作させるために、私は/res/values-v21/styles.xmlのxmlを介して透明性を追加する必要がありました

<item name="Android:statusBarColor">@Android:color/transparent</item>

これが最終的な効果です

enter image description here

1
Prateek Phoenix

これをstyle.xmlに追加するだけです。

<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
15
AZZ_B

これをonCreate()メソッドに追加するだけです。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);
3
Samuel

アクティビティをフルスクリーンにするには、これをマニフェストに入れます。

<activity Android:name=".ActivityName"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"/>

出典: Androidのフルスクリーンアクティビティ?

2
king

AppCompatアクティビティを使用している場合は、@ style/Theme.AppCompat.Light.NoActionBarを使用してください

 <activity Android:name=".view.activity.SplashActivity"
                  Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN"/>

                <category Android:name="Android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
1
Hitesh Sahu

Kotlin:プログラムでAPI 21用:onCreate()内に配置

@TargetApi(21)
 window.statusBarColor = Color.TRANSPARENT
0
XploitsR

プログラムでそれを行うことができます:

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

このコンテンツを読む: Androidのフルスクリーンアクティビティ?

0
Tarik Billa

このコードをアクティビティonCreate()に追加するだけです

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
0
Arshad