質問編集履歴

2 詳細の追加

xoxoo

xoxoo score 21

2017/08/02 15:53  投稿

Javas初心者です。
キーボードの表示を検知してナビゲーションバー非表示の再処理を行いたい
###前提・実現したいこと
【Class1】で行った処理を【Activity1】で分岐処理したい
###発生している問題・エラーメッセージ
###補足情報
True or False で分岐処理したいです。
###追記
 //端末にインストールされているキーボードのプロセス名をmKeyboards変数に格納
   public void setKeyboards() {
       mKeyboards.clear();
       for (InputMethodInfo imi : mInputMethodManager.getInputMethodList()) {
           mKeyboards.add(imi.getServiceInfo().processName);
       }
   }
   
   //現在動作しているServiceの一覧をlistに格納して、for文の中でキーボードのプロセス名と一致するものをチェック
   public boolean isKeyboardShow() {
       List<ActivityManager.RunningServiceInfo> list = mActivityManager.getRunningServices(Integer.MAX_VALUE);
       if (list == null) {
           return false;
       }
       for (ActivityManager.RunningServiceInfo rsi : list) {
           //キーボードの状態を判定
           //キーボードが表示されていないときは1、キーボードが表示されているときは2を返します。
           if (mKeyboards.contains(rsi.process) && rsi.clientCount > 1) {
               return true;
           }
       }
       return false;
   }
}
で、キーボードが表示されている時の処理を【Activity1】のTextViewの
タッチイベントで分岐の処理を行いたいです。
タッチイベントで分岐の処理を行いたいです。
###処理の背景
通常非表示にしているナビゲーションバーですが、フリック動作でバーが出現してしまうので、バーの領域の部分に、表示レイヤーをTYPE_SYSTEM_ERRORにしたTextViewを配置しているのですが、キーボードが表示されるときに、非表示にしていたはずのナビゲーションバーが出てきてしまうのでナビゲーションバー非表示の再処理を行うためです。
非表示にしていたはずのナビゲーションバーが出てきてしまうことで、ナビゲーションバーの表示領域に配置したTextViewの位置がずれてしまうという問題がおきています。
  • Java

    15788 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    7279 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

1 ソースと詳細の追加

xoxoo

xoxoo score 21

2017/08/02 15:23  投稿

Javas初心者です。
###前提・実現したいこと
【Class1】で行った処理を【Activity1】で分岐処理したい
###発生している問題・エラーメッセージ
###補足情報
True or False で分岐処理したいです。
True or False で分岐処理したいです。
###追記
 //端末にインストールされているキーボードのプロセス名をmKeyboards変数に格納
   public void setKeyboards() {
       mKeyboards.clear();
       for (InputMethodInfo imi : mInputMethodManager.getInputMethodList()) {
           mKeyboards.add(imi.getServiceInfo().processName);
       }
   }
   
   //現在動作しているServiceの一覧をlistに格納して、for文の中でキーボードのプロセス名と一致するものをチェック
   public boolean isKeyboardShow() {
       List<ActivityManager.RunningServiceInfo> list = mActivityManager.getRunningServices(Integer.MAX_VALUE);
       if (list == null) {
           return false;
       }
       for (ActivityManager.RunningServiceInfo rsi : list) {
           //キーボードの状態を判定
           //キーボードが表示されていないときは1、キーボードが表示されているときは2を返します。
           if (mKeyboards.contains(rsi.process) && rsi.clientCount > 1) {
               return true;
           }
       }
       return false;
   }
}
で、キーボードが表示されている時の処理を【Activity1】のTextViewの
タッチイベントで分岐の処理を行いたいです。
  • Java

    15788 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    7279 questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る