非推奨のメソッドに遭遇し、Display.getWidth()
それがに置き換えられていることを確認しましたandroid.view.getSize()
。ただしgetSize()
、API 13以降でのみ利用可能でありView
、V4Androidサポートライブラリには含まれていないようです。
したがって、非推奨の呼び出しを回避したい場合、さまざまなAPIレベルに対して異なるプロジェクト/ビルドを維持せずにこれを行うにはどうすればよいですか。
非推奨のメソッドに遭遇し、Display.getWidth()
それがに置き換えられていることを確認しましたandroid.view.getSize()
。ただしgetSize()
、API 13以降でのみ利用可能でありView
、V4Androidサポートライブラリには含まれていないようです。
したがって、非推奨の呼び出しを回避したい場合、さまざまなAPIレベルに対して異なるプロジェクト/ビルドを維持せずにこれを行うにはどうすればよいですか。
Display
、という名前のオブジェクトが与えられた場合display
、これは機能するはずです。
int width=-1;
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB_MR2) {
Point size=new Point();
size=display.getSize(size);
width=size.x;
}
else {
width=display.getWidth();
}
IOW、Build.VERSION.SDK_INT
新しいAPIが導入される「前」と「後」のケースの間で分岐するために使用します。
これには、ビルドターゲット(Eclipseの[プロジェクト]>[プロパティ]>[Android])をAPIレベル13以降に設定する必要があるため、を呼び出すことができますgetSize()
。
下位互換性のあるUIの作成に関する公式のAndroid開発者クラスがあります。
このクラスは、新しいバージョンのAndroidで利用可能なUIコンポーネントとAPIを下位互換性のある方法で使用して、アプリケーションが以前のバージョンのプラットフォームで引き続き実行されるようにする方法を示します。
彼らは、よりオブジェクト指向のソリューションを得るために、バックポートされていないライブラリにJavaインターフェイスを使用することを提唱しています。次に、これらを2つの具体的なクラスに拡張します。1つはサポートされていないプラットフォームの代替動作を提供し、もう1つはサポートされているプラットフォームの実際のAPIを呼び出します。
次に、サポートされているプラットフォーム範囲に対して現在のプラットフォームをチェックすることにより、正しいクラスをインスタンス化するファクトリクラスがあります。しかし、最終的には、のような条件に要約されif ( Build.VERSION.SDK_INT >= HONEYCOMB_MR2 )
ます。