アプリが HTC Sense で実行されているかどうかを何らかの方法で検出できますか?
より一般的には、問題は、カスタム ドローアブルを持つ Button があることです。これは、Gmail アプリの右上にあるアカウント スイッチャーに非常によく似たものです。ボタンを押すかフォーカスすると、ボタンがオレンジ色にハイライトされます。しかし、HTC Sense では見栄えがよくありません。標準のハイライト色が緑色であるためです。
アプリが HTC Sense で実行されているかどうかを何らかの方法で検出できますか?
より一般的には、問題は、カスタム ドローアブルを持つ Button があることです。これは、Gmail アプリの右上にあるアカウント スイッチャーに非常によく似たものです。ボタンを押すかフォーカスすると、ボタンがオレンジ色にハイライトされます。しかし、HTC Sense では見栄えがよくありません。標準のハイライト色が緑色であるためです。
これは、デバイスでHTCSenseを検出する方法を提案するリンクです。説明の約1/3です。私はDesireとDesireZでテストしました。
コードは以下のとおりです(ユーザーから:David):
private static final String SENSE_UI_LAUNCHER_NAME =
"com.htc.launcher.Launcher";
private static Boolean senseUI;
public static final boolean isSenseUI(Context context) {
if (senseUI == null) {
senseUI = false;
PackageManager packageManager = context.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> list = packageManager.queryIntentActivities(
intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : list) {
if (info.activityInfo != null
&& SENSE_UI_LAUNCHER_NAME
.equals(info.activityInfo.name)) {
senseUI = true;
break;
}
}
}
return senseUI;
}
android.os.Build 文字列を見てみましょう。HTC 関係者が HTC センス デバイスを示すためにどのような組み合わせを使用しているかはわかりません..
Androidは、Senseのチェックを行うよりも、これを解決するためのより良い方法を提供していると思います。これは、すべてのデバイスメーカーで機能します。セレクターの色を変更したのはHTCだけではありません。ソニーエリクソンは透明な白/青を持っていると思います。モトローラはMotoBlurUIで赤に変更し、Garmin-Asusはほんの数例を挙げると青に変更しました。
あなたがすべきことはandroid:background
、画像ボタンの属性をオーバーライドし、フレームワークの背景のドローアブルに依存する代わりに、独自のドローアブルを使用することです。それらにまだ精通していない場合は、カスタム背景を作成するときにセレクターも確認することをお勧めします。これにより、押された/選択された/選択されていない色の手がかりが得られます。
これを実行したいボタンが複数ある場合は、スタイルとテーマを使用してこれを支援することをお勧めします。Androidのドキュメントから参照する2つの主要な場所は、「スタイルとテーマの適用」と「スタイルリソース」です。
お役に立てば幸いです。
次のアプローチに従うべきだと思います-次のandroid:background
ようなものを定義します
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/pressed_application_background" />
<item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/focused_application_background" />
<item android:state_focused="true" android:state_window_focused="false" android:drawable="@android:color/transparent" />
</selector>
ただし、ここでは、アプリケーションの画像ではなく、いくつかの標準的なリソースを参照する必要があります。彼らが持っているIDを見つけるだけです。