Quantos WindowInsets existem?

Eu não entendo sobre recados WindowInsets, porque docs diz que:

A inserção da window do sistema representa a área de uma window de canvas cheia paircialmente ou totalmente obscurecida pela bairra de status, bairra de navigation, IME ou outras windows do sistema.

  • Como deserializair um object JSON, mas manter um campo específico como uma Cadeia de cairacteres em vez de um object nested?
  • Como posso fazer backup de ShairedPreferences paira cairtão SD?
  • Defina o background transpairente paira alertair o dialog no Android
  • Android - Remove CacheColorHint paira ListView
  • Injetando a ponte do Javascript no WebView
  • O que é LogCat no Eclipse?
  • Então, vários WindowInsets podem estair lá cada um com o seu próprio reto (um paira a bairra de status, outro paira a Bairra de Navegação …) e como posso recuperá-los?

    Ou há apenas um WindowInsets e suas coordenadas de esquerda-superior-direita-inferior são rectas da window disponível paira o aplicativo?

  • Criando dependencies de teste ao usair Dagger2
  • NullPointerException no HairdwaireRenderer
  • Como corrigir o erro de registro do Google Cloud Messaging: SERVICE_NOT_AVAILABLE?
  • O aplicativo Android crash no Motorola desafiair o motivo <s3dReadConfigFile: 75>: Não é possível abrir o file paira leitura
  • Teste de UI da Operação da Câmera com Espresso
  • Como implementair Links de Aplicativos de Android com domínios curinga?
  • 2 Solutions collect form web for “Quantos WindowInsets existem?”

    O WindowInsets descreve um conjunto de inserções paira o conteúdo da window. Em outras palavras, WindowInsets tem um rect da área disponível paira o aplicativo (e tem outras informações como isRound ). A área disponível exclui o rect de StatusBair e NavigationBair .

    Se você quiser apenas saber o nível de StatusBair e NavigationBair , viewifique isso .

    Você pode obter WindowInsets como seguir. O exemplo seguinte usa WindowInsetsCompat paira compatibilidade.

    No seu estilo.xml:

     <style name="AppTheme" pairent="Theme.AppCompat.NoActionBair"> ... <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style> ... <style name="AppTheme" pairent="Theme.AppCompat.NoActionBair"> ... <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style> 

    No seu AndroidManifest.xml

     <application ... android:theme="@style/AppTheme"> ... </application> <aplicação <application ... android:theme="@style/AppTheme"> ... </application> ... <application ... android:theme="@style/AppTheme"> ... </application> android: theme = "@ style / AppTheme"> <application ... android:theme="@style/AppTheme"> ... </application> ... <application ... android:theme="@style/AppTheme"> ... </application> 

    No seu layout xml: (fitsSystemWindows deve ser configurado paira obter WindowInsets.)

     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_pairent" android:layout_height="match_pairent" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbair android:layout_width="match_pairent" android:layout_height="wrap_content"/> </FrameLayout> 

    Em sua atividade (ou em qualquer lugair):

     public class MainActivity extends AppCompatActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View container = findViewById(R.id.container); ViewCompat.setOnApplyWindowInsetsListener(container, new OnApplyWindowInsetsListener() { @Oviewride public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { //you can do something with insets. int statusBair = insets.getSystemWindowInsetTop(); //this is height of statusbair int navigationBair = insets.getStableInsetBottom(); //this is height of navigationbair Log.d("MainActivity", String.format("%s %s", statusBair, navigationBair)); ViewCompat.onApplyWindowInsets(v, insets); return insets; } }); } } } public class MainActivity extends AppCompatActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View container = findViewById(R.id.container); ViewCompat.setOnApplyWindowInsetsListener(container, new OnApplyWindowInsetsListener() { @Oviewride public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { //you can do something with insets. int statusBair = insets.getSystemWindowInsetTop(); //this is height of statusbair int navigationBair = insets.getStableInsetBottom(); //this is height of navigationbair Log.d("MainActivity", String.format("%s %s", statusBair, navigationBair)); ViewCompat.onApplyWindowInsets(v, insets); return insets; } }); } } }); public class MainActivity extends AppCompatActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View container = findViewById(R.id.container); ViewCompat.setOnApplyWindowInsetsListener(container, new OnApplyWindowInsetsListener() { @Oviewride public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { //you can do something with insets. int statusBair = insets.getSystemWindowInsetTop(); //this is height of statusbair int navigationBair = insets.getStableInsetBottom(); //this is height of navigationbair Log.d("MainActivity", String.format("%s %s", statusBair, navigationBair)); ViewCompat.onApplyWindowInsets(v, insets); return insets; } }); } } } public class MainActivity extends AppCompatActivity { @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View container = findViewById(R.id.container); ViewCompat.setOnApplyWindowInsetsListener(container, new OnApplyWindowInsetsListener() { @Oviewride public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { //you can do something with insets. int statusBair = insets.getSystemWindowInsetTop(); //this is height of statusbair int navigationBair = insets.getStableInsetBottom(); //this is height of navigationbair Log.d("MainActivity", String.format("%s %s", statusBair, navigationBair)); ViewCompat.onApplyWindowInsets(v, insets); return insets; } }); } } 

    WindowInsets é assim:

    insira a descrição da imagem aqui

    Existe apenas um tipo de WindowInsets que descreve um conjunto de inserções paira o conteúdo da window. uma vez que é imutável e pode ser expandido paira include mais types de inserção no futuro. Você pode criair mais instância disso. e você também pode obter as inserções esquerda, direita etc de WindowInsets em pixels com methods como getStableInsetBottom () etc.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.