問題タブ [windowinsets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
258 参照

java - WindowInsetListener は Android R でオフセットを倍増します (Api 30)

コントロール (任意のビュー) がソフトキーボードのスライドインおよびスライドアウト アニメーションに従うように、キーボード アニメーションを作成しました。Android 10 以下では、すべて正常に動作します。

私はproandroiddevのこの(その間の)時代遅れの記事(Android 11より前に書かれ、残念ながらKotlinで書かれており、廃止されたメソッドについてもあまり気にしません)からアイデアを取りましたが、Javaへの変換はうまくいきました-残っている唯一の問題はApi30+にあります

Android 11 では、アニメーションが終了すると、WindowInsetListener(または、delayedTransition問題の原因がわからない) がオフセットを 2 倍にしているように見えます (つまり、ビューの境界にもう一度ソフトキーボードの高さ全体を追加します)。

違いを示すこれらの 2 つの gif を参照してください (品質については申し訳ありません - 私はビデオ録画にあまり詳しくありません)。

両方のデバイスで同じコードが実行されています。

左がAndroid 10、右がAndroid 11

アンドロイド 10 人造人間11号

リスナーは次のとおりです。

リスナーから呼び出されるアニメーション メソッドは次のとおりです。

バージョンを通じてすべての非推奨を尊重しようとしました。特に Android のこの部分は、すべてのバージョンで変更されました。しかし、Api 29 および 30 の「新しい」実装を取り出し、非推奨の.replaceSystemWindowInsetsメソッドを使用しても、効果は変わりません。

追加のフラグや、Api 30+ で提供する必要がある何かについて考えている人はいますか?