Androidマルチウィンドウモード(分割画面モード)



Android Multi Window Mode



アンドロイド Nは、マルチウィンドウモードまたは分割画面モードをサポートします。これは、複数のウィンドウを画面に同時に表示できることを意味します。

モバイルモードでは、図1に示すように、2つのアプリケーションを並べて表示したり、上下に同時に表示したりできます。画面の上半分はシステムのCLOCKアプリケーションで、下半分はシステムセットアップ機能です。 。ユーザーは、2つのアプリケーション間の境界線をドラッグして、2つのウィンドウのサイズを変更したり、一方のアプリケーションを拡大したり、もう一方のアプリケーションを縮小したりできます。

画像
図1分割画面モード




分割モードでは、各ウィンドウのアプリケーションは正常に実行できますが、フォーカスを取得できるのは1つのウィンドウのみで、もう1つのウィンドウは一時停止状態に属します。

Android Nユーザーは、次の方法でマルチウィンドウモードに切り替えることができます。

  • ユーザーは概要画面を開き、アクティビティのタイトルを長押しして、アクティビティを画面の強調表示された領域にドラッグし、アクティビティがマルチウィンドウモードに入るのを許可します。
  • ユーザーが[概要]ボタンを押すと、デバイスの現在のアクティビティがマルチウィンドウモードになり、[概要]画面が開きます。この画面で、ユーザーは別のアクティビティを選択して画面を共有できます。


ユーザーは、2つのアクティビティが画面を共有している間に、2つのアクティビティ間でデータをドラッグアンドドロップできます。

デフォルトでは、AndroidNのアクティビティはマルチウィンドウモードが有効になっています。 Nexus 6Pスマートフォンでは、マルチタスク仮想ボタンを押し続けると、分割画面モードが有効または無効になります。

図2Nexus6Pで分割画面モードを開始するとどのようになりますか。



Nexus 6P
図2Nexus6P分割画面モード


まず、MainActivityにボタンを追加し、クリックして2番目のアクティビティを開く機能を実装します。コードは次のとおりです。

 
  1. パブリッククラスMainActivityはActivity {を拡張します
  2. @オーバーライド
  3. protected void onCreate(Bundle savedInstanceState){
  4. super.onCreate(savedInstanceState)
  5. setContentView(R.layout.activity_main)
  6. ボタンbtn = findViewById(R.id.button)
  7. btn.setOnClickListener(new View.OnClickListener(){
  8. @オーバーライド
  9. public void onClick(View view){
  10. インテントインテント=新しいインテント(MainActivity.this、Main2Activity.class)
  11. startActivity(インテント)
  12. }
  13. })
  14. }
  15. }

図3に示すように、[新しいウィンドウ]ボタンをクリックすると、2番目のウィンドウが作成され、最初のウィンドウが上書きされます。



画像
図3新しいウィンドウ


デフォルトでは、同じアプリの複数のアプリが同じウィンドウを共有し、異なるウィンドウに割り当てることはできません。

同じアプリケーションの異なるフォームを異なるウィンドウに割り当てる場合は、新しいフォームを開始するときにインテントにFLAG_ACTIVITY_LAUNCH_ADJACENTフラグを設定して、新しいアクティビティが新しいスタックに配置されるようにする必要があります。図4に示すように、元のアクティビティとは関係なく開始され、2つのアクティビティが異なるウィンドウに配置されます。

画像
図4同じアプリケーションの2つのウィンドウ

キーコードは次のとおりです。

 
  1. インテントインテント=新しいインテント(MainActivity.this、Main2Activity.class)
  2. intent.setFlags(Intent.FLAG_ACTIVITY_LAUNGH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
  3. startActivity(インテント)


Android Nシステムは、リスト要素をアクティビティに追加して、マルチウィンドウモードでのアクティビティの動作をサポートします。これには次のプロパティが含まれます。

属性 効果
android:defaultWidth フリーシェイプモードで開始するときのアクティビティのデフォルトの幅
android:defaultHeight フリーシェイプモードで開始したときのアクティビティのデフォルトの高さ
android:gravity フリーシェイプモードで開始したときのアクティビティの初期位置
重力の値:中心(中央)、下(下)、上(上)、右(右)、左(左)
android:minimalHeight、android:minimalWidth 分割画面およびフリーフォームモードでのアクティビティの最小の高さと最小の幅。ユーザーが分割モードで分割線を移動してアクティビティサイズを指定された最小値よりも小さくすると、システムはユーザーが要求したサイズにアクティビティをトリミングします。


たとえば、次のコードは、アクティビティがフリーフォームモードで表示されているときに、アクティビティのデフォルトサイズ、位置、および最小サイズを指定する方法を示しています。

 
  1. android:defaultdp '
  2. android:gravity = 'top | end'
  3. android:minmaldp '
  4. android:minimaldp '/>

アクティビティでマルチウィンドウモードを使用したくない場合は、マニフェストファイルのアクティビティノードに設定するだけです。

android:resizeableActivity = 'false'

このプロパティはfalseに設定されており、アクティビティはマルチウィンドウモードをサポートしません。 falseの値の場合、ユーザーがマルチウィンドウモードでアクティビティを起動しようとすると、アクティビティは全画面で表示されます。自分で試してみてください。