私は何かを見逃したかもしれませんが、時計が丸いか正方形かを知るためのフラグはありますか?
通知の背景をデザインしたい場合、これは重要であると想像できます。
API 23 の更新:
画面が丸いかどうかを判断するには、次を使用できます
context.getResources().getConfiguration().isScreenRound()
または、round
およびnotround
リソース修飾子を使用して、システムに適切なリソースを適用させることもできますが、これは API 22 以下を実行しているデバイスでは機能しないことに注意してください。
この変更を指摘してくれた人々に感謝します。
古い回答
Google I/O トークから ( https://www.youtube.com/watch?v=naf_WbtFAAlY#t=284 ):
SDK 20android.view.View
クラスから
public void setOnApplyWindowInsetsListener(OnApplyWindowInsetsListener listener)
そしてOnApplyWindowInsetsListener
コールバックメソッドを持っていますonApplyWindowsInset
public WindowInsets onApplyWindowInsets(View view, WindowInsets windowInsets){
if (windowInsets.isRound()){
//Do stuff
}
}
私のデバイスでは windowinsets のアプローチが失敗したので、醜いが機能的な小さなトリックを行いました。
アクティビティの内部を確認する必要がある場合"1"
は、ラウンド レイアウトとレクタングル レイアウトに値を含む非表示のテキストビューをレイアウトに追加します"0"
。
<TextView
android:id="@+id/isRound"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:text="1" />
次に、アクティビティで:
TextView isRoundText = (TextView) view.findViewById(R.id.isRound);
boolean isRound = "1".equals(isRoundText.getText());