Androidアプリ開発

全画面モード時のホームボタンを実装する

この記事は約9分で読めます。
記事内に広告が含まれています。
スポンサーリンク

この記事は Android スマホ用のアプリ開発の中で、
今後の開発で再使用性が高いと思われるコーディングをまとめたものです。
Java での開発経験、XML 構文規則、Android のアプリ開発経験がある方を対象としています。
Android のアプリ開発でお役にたててれば、嬉しいです。
(これから Android のアプリ開発や Java での開発を始めたい方への案内は、
記事の最後で紹介します)

この記事のテーマ


全画面モード時のナビゲーションバーのホームボタンを実装する

画面右上にナビゲーションバーの代用(<)を実装しています

全画面モードとナビゲーションバー

標準のアプリ画面では、上側にステータスバー、下側(横画面では右側)にナビゲーションバーが表示されます。
動画や画像、ゲームなどのコンテンツでは、全画面で表示したくなる場面があります。
全画面モードでナビゲーションバーを非表示にした場合、ワンタップでホーム画面に戻ることができなくなります。
今回は全画面モードでナビゲーションバーの戻るボタンとホームボタンを使用できる実装を紹介します。

全画面モードの有効化

戻るボタンとホーム画面に戻る実装

サンプルではナビゲーションバーの戻るボタンとホームボタンを1つのImageViewで実装しています。
クリックで戻る動作、ロングクリックでホームボタンの動作をさせています。

    public List<Integer> history = new ArrayList<>();
    :

    ImageView back = findViewById(R.id.back);
    back.setOnClickListener(view -> back());
    back.setOnLongClickListener(view -> {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        intent.addCategory(Intent.CATEGORY_HOME);
        startActivity(intent);
        return false;
    });
    :

    getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            back();
        }
    });
    :
    private void back() {
        if (tabs != null) {
            if (tabs.getVisibility() == View.VISIBLE) {
                if (tabs.getSelectedTabPosition() == 0) {
                    history = new ArrayList<>();
                    showDialogMessage(getString(R.string.tab_home));
                } else {
                    // 最新履歴を削除
                    if (!history.isEmpty()) history.remove(history.size() - 1);
                    // 遷移先を取得
                    int page = !history.isEmpty() ? history.get(history.size() - 1) : 0;
                    // 遷移先履歴を削除
                    if (!history.isEmpty()) history.remove(history.size() - 1);
                    // 遷移
                    if (tabs != null && tabs.getTabCount() > page) {
                        Objects.requireNonNull(tabs.getTabAt(page)).select();
                    }
                }
            } else if (homeFragment != null) homeFragment.exit();
        } else {
            finishAndRemoveTask();
        }
    }

ホームボタンの動作はIntentを使用して、空のActivityを開始させます。
戻る動作はgetOnBackPressedDispatcherでさせる動作を直接呼び出します。
サンプルでは画面遷移を履歴管理して、ヒストリバックさせる動作をさせています。

今回は、ここまでです。

全画面モード時のホームボタンを実装しているAndroidアプリです。

誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にある
コメントか、
こちら
から、お願いいたします♪

ポチッとして頂けると、
次のコンテンツを作成する励みになります♪

ブログランキング・にほんブログ村へ

Xperia 10 VI( XQ-ES44)はコストパフォーマンス最高な国産スマホです♪

これからAndroidのアプリ開発やJavaでの開発を始めたい方へ

初めての Android のアプリ開発では、アプリケーション開発経験がない方や、
アプリケーション開発経験がある方でも、Java や C# などのオブジェクト指向言語が初めての方は、
書籍などによる独学ではアプリ開発できるようになるには、
かなりの時間がかかりますので、オンラインスクールでの習得をおススメします。

未経験者からシステムエンジニアを目指すのに最適かとまずは無料相談から♪

未経験者からプログラマーを目指すのに最適です。まずは無料カウンセリングから♪

カリキュラムとサポートがしっかりしています。お得なキャンペーンとかいろいろやっています♪

ゲーム系に強いスクール、UnityやUnrealEngineを習得するのに最適です。まずは無料オンライン相談から♪

参考になったら、💛をポッチとしてね♪

スポンサーリンク
msakiをフォローする
スポンサーリンク

コメント欄

タイトルとURLをコピーしました