На устройстве hdpi с экраном "нормального" размера я понимаю, что следует использовать графику 72 x 72 пикселя, в противном случае она должна следовать Руководству по проектированию иконок (что интересно для некоторых графических платформ.делать).Однако, когда я пытаюсь сделать это, создавая собственную новую графику или копируя графический файл из Android SDK, изображение в меню оказывается слишком большим, и оно вызывает текстовую метку, то есть заголовок, который должен быть нижеэто не появиться.Если я «принудительно» использую графику 48 x 48 пикселей, то размер выглядит хорошо, и текстовая метка имеет место для отображения, но это не похоже на правильное решение, так как качество графического дисплея ухудшается, иВ документации четко сказано, что следует использовать графику 72 x 72.
Я понимаю, что для обеспечения правильного масштабирования следует использовать графику из 9 патчей, но ни одна из графических значков меню в папках на платформе не отображается.на самом деле быть с 9 патчами, так как у них нет маркеров с 9 патчами.Для этих снимков экрана я добавил маркеры с 9 патчами в копию платформы Android SDK 10 72 x 72 hdpi ic_menu_share.png.(Инструмент draw9patch.bat неожиданно изменил цвета графики.)
На следующих четырех снимках экрана я показываю девять отображений значков меню, работающих на моем G2 и работающих на эмуляторе с G2-подобнымкачества: Android 2.2 API 8 WVGA800 240dpi.(Оба этих устройства имеют экраны hdpi «нормального» размера.) Поскольку графические значки меню будут отображать только шесть изображений, для каждого устройства есть два снимка экрана: v1 и v2.После снимков экрана показаны компоненты кода, используемые для создания этого приложения, а также ссылка на полный проект со всеми графическими файлами, которые я использовал.
Emulator_2.2_API8_WVGA800-240_v1:
(Note: In the above screenshot of the emulator, the icon labeled "G2 Platform" should probably instead be labeled "Running Platform", since the displayed graphic is from the currently running Android platform - not from the G2 platform. I was just too lazy to correct this.)
Emulator_2.2_API8_WVGA800-240_v2:
G2_v1:
G2_v2:
(Please note I carefully followed Руководство по проектированию значков при создании и копировании этих графических изображений.)
AndroidManifest.xml :
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="fubar.guiexamples"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:anyDensity="true" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<activity
android:name=".MenuIconConfusion"
android:label="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
MenuIconConfusion.java:
public class MenuIconConfusion extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_options_menu, menu);
return true;
}
}
main_options_menu.xml v1:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/g2_platform_with_title"
android:icon="@android:drawable/ic_menu_share"
android:title="G2 Platform" />
<item
android:id="@+id/g2_platform_no_title"
android:icon="@android:drawable/ic_menu_share" />
<item
android:id="@+id/platform_10_auto_selection_with_title"
android:icon="@drawable/ic_menu_share"
android:title="Platform 10 Auto" />
<item
android:id="@+id/platform_10_auto_selection_no_title"
android:icon="@drawable/ic_menu_share" />
<item
android:id="@+id/pixels_auto_selection"
android:icon="@drawable/ic_menu_pixels"
android:title="Pixels" />
</menu>
main_options_menu.xml v2:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/platform_10_hdpi_72_with_title"
android:icon="@drawable/ic_menu_share_p10_hdpi_72"
android:title="Platform 10 72 Copy" />
<item
android:id="@+id/platform_10_hdpi_72_no_title"
android:icon="@drawable/ic_menu_share_p10_hdpi_72" />
<item
android:id="@+id/platform_10_mdpi_48_with_title"
android:icon="@drawable/ic_menu_share_p10_mdpi_48"
android:title="Platform 10 48 Copy" />
<item
android:id="@+id/platform_10_hdpi_72_9_patch_with_title"
android:icon="@drawable/ic_menu_share_p10_hdpi_72_nine_patch"
android:title="Platform 10 72 9p Copy" />
<item
android:id="@+id/platform_10_hdpi_72_9_patch_no_title"
android:icon="@drawable/ic_menu_share_p10_hdpi_72_nine_patch" />
<item
android:id="@+id/pixels_auto_selection"
android:icon="@drawable/ic_menu_pixels"
android:title="Pixels" />
</menu>
Некоторые пояснения, касающиеся скриншотов и кода:
Как я сделал для этой демонстрации, я понимаю, что мы не должны использовать графику с Android:по причинам, описанным в руководящих указаниях по проектированию значков меню .
Для некоторых значков я отображал их по два раза - по одному с заголовком и по одному без заголовка -чтобы увидеть, повлияло ли наличие заголовка на то, какой рисунок был выбран и масштабирован ли выбранный рисунок.
Значок с надписью «Платформа 10 48 Копирование» представляет собой изображение размером 48 x 48 пикселей, скопированное с платформы Android SDK 10 с возможностью рисованияПапка -mdpi.
Две светлые цветные иконки взяты из девяти патчей.Обратите внимание, что они не имеют характеристик масштабирования.
Значок «72» был включен, чтобы показать, что ресурсы drawable-hdpi действительно автоматически выбираются работающей платформой, как и ожидалось.Если бы вместо этого использовались ресурсы drawable-hdmi, тогда отображаемое число было бы «48».
ВОЗМОЖНЫЕ ВОПРОСЫ:
Короче говоря, я не ожидал многогорезультатов, отображаемых на этих скриншотах.Хотя я ожидал, что будет использоваться графика drawable-hdpi 72 x 72, я также ожидал, что они будут отображаться с достаточным пространством для соответствующих заголовков.Итак ...
Я мог бы спросить: "Как мне масштабировать графику значков меню, чтобы оставить место для отображения связанного с ней названия?"
Я мог бы спросить,«Какой размер графики мы действительно должны использовать для значков меню, не говоря уже о том, что официальная документация говорит?»
Я мог бы спросить: «Что за черт?что здесь происходит? Что я не понимаю? "
Файлы проекта Android с графикой, которую я использовал, можно загрузить с https://sites.google.com/site/androidguiexamples/home/downloads/MenuIconConfusion.zip