問題タブ [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.
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
リスナーは次のとおりです。
リスナーから呼び出されるアニメーション メソッドは次のとおりです。
バージョンを通じてすべての非推奨を尊重しようとしました。特に Android のこの部分は、すべてのバージョンで変更されました。しかし、Api 29 および 30 の「新しい」実装を取り出し、非推奨の.replaceSystemWindowInsets
メソッドを使用しても、効果は変わりません。
追加のフラグや、Api 30+ で提供する必要がある何かについて考えている人はいますか?