Полезные примеры Android

Полезные примеры Android
Организация ресурсов Android и доступ к ним

Есть еще много вещей, которые вы используете для создания хорошего Android-приложения. Помимо программирования для приложения, вы заботитесь о различных других ресурсах, таких как статический контент, который использует ваш код, например растровые изображения, цвета, определения макета, строки пользовательского интерфейса, инструкции по анимации и многое другое. Эти ресурсы всегда хранятся отдельно в различных подкаталогах в каталоге res / проекта.

В этом руководстве вы узнаете, как организовать ресурсы приложения, указать альтернативные ресурсы и получить к ним доступ в своих приложениях.

Организовать ресурс в Android Studio

MyProject/
app/
manifest/
AndroidManifest.xml
java/
MyActivity.java  
res/
drawable/  
icon.png  
layout/  
activity_main.xml
info.xml
values/  
strings.xml 

Sr.No. Каталог и тип ресурса
1

anim/

XML-файлы, которые определяют анимацию свойств. Они сохраняются в папке res / anim / и доступны из класса R.anim .

2

color/

XML-файлы, которые определяют список состояний цветов. Они сохраняются в res / color / и доступны из класса R.color .

3

drawable/

Файлы изображений, такие как файлы .png, .jpg, .gif или XML, которые скомпилированы в растровые изображения, списки состояний, формы, анимацию с возможностью рисования. Они сохраняются в res / drawable / и доступны из класса R.drawable .

4

layout/

XML-файлы, определяющие структуру пользовательского интерфейса. Они сохраняются в res / layout / и доступны из класса R.layout .

5

menu/

XML-файлы, которые определяют меню приложения, такие как меню параметров, контекстное меню или подменю. Они сохраняются в res / menu / и доступны из класса R.menu .

6

raw/

Произвольные файлы для сохранения в необработанном виде. Чтобы открыть такие необработанные файлы, вам необходимо вызвать Resources.openRawResource () с идентификатором ресурса, которым является R.raw.filename .

7

values/

XML-файлы, содержащие простые значения, такие как строки, целые числа и цвета. Например, вот некоторые соглашения об именах файлов для ресурсов, которые вы можете создать в этом каталоге:

  • array.xml для массивов ресурсов и доступен из класса R.array .

  • inteers.xml для целых чисел ресурсов, доступ к которому осуществляется из класса R.integer .

  • bools.xml для логического ресурса, доступ к которому осуществляется из класса R.bool .

  • colors.xml для значений цвета и доступен из класса R.color .

  • Размеры.xml для значений измерений и доступ к нему из класса R.dimen .

  • strings.xml для строковых значений и доступ к нему из класса R.string .

  • styles.xml для стилей и доступ к нему из класса R.style .

8

xml /

Произвольные файлы XML, которые можно прочитать во время выполнения, вызвав Resources.getXML () . Здесь вы можете сохранить различные файлы конфигурации, которые будут использоваться во время выполнения.

Альтернативные ресурсы

Ваше приложение должно предоставлять альтернативные ресурсы для поддержки определенных конфигураций устройств. Например, вы должны включить альтернативные ресурсы для рисования (например, изображения) для другого разрешения экрана и альтернативные строковые ресурсы для разных языков. Во время выполнения Android определяет текущую конфигурацию устройства и загружает соответствующие ресурсы для вашего приложения.

Чтобы указать альтернативы для конкретной конфигурации для набора ресурсов, выполните следующие действия:

  • Создайте новый каталог в res / с именем в форме <resources_name> — <config_qualifier> . Здесь имя_ресурсов будет любым из ресурсов, упомянутых в приведенной выше таблице, например макетом, возможностью рисования и т. Д. Квалификатор будет указывать индивидуальную конфигурацию, для которой эти ресурсы должны использоваться. Вы можете проверить официальную документацию для получения полного списка квалификаторов для различных типов ресурсов.

  • Сохраните соответствующие альтернативные ресурсы в этом новом каталоге. Файлы ресурсов должны называться точно так же, как файлы ресурсов по умолчанию, как показано в приведенном ниже примере, но эти файлы будут иметь содержимое, специфичное для альтернативы. Например, хотя имя файла изображения будет таким же, но для экрана с высоким разрешением его разрешение будет высоким.

Ниже приведен пример, в котором указаны изображения для экрана по умолчанию и альтернативные изображения для экрана с высоким разрешением.

MyProject/
app/
manifest/
AndroidManifest.xml
java/
MyActivity.java   
res/
drawable/  
icon.png
background.png
drawable-hdpi/  
icon.png
background.png  
layout/  
activity_main.xml
info.xml
values/  
strings.xml 

Ниже приведен еще один пример, в котором указывается макет для языка по умолчанию и альтернативный макет для арабского языка.

MyProject/
app/
manifest/
AndroidManifest.xml
java/
MyActivity.java   
res/
drawable/  
icon.png
background.png
drawable-hdpi/  
icon.png
background.png  
layout/  
activity_main.xml
info.xml
layout-ar/
main.xml
values/  
strings.xml 

Доступ к ресурсам

Во время разработки приложения вам потребуется доступ к определенным ресурсам в коде или XML-файлах макета. В следующем разделе объясняется, как получить доступ к вашим ресурсам в обоих сценариях.

Доступ к ресурсам в коде

Когда ваше приложение Android скомпилировано, создается класс R , который содержит идентификаторы ресурсов для всех ресурсов, доступных в вашем каталоге res / . Вы можете использовать класс R для доступа к этому ресурсу, используя подкаталог и имя ресурса или напрямую идентификатор ресурса.

пример

Чтобы получить доступ к res / drawable / myimage.png и установить ImageView, вы будете использовать следующий код —

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

Здесь первая строка кода использует R.id.myimageview для определения ImageView с идентификатором myimageview в файле макета. Вторая строка кода использует R.drawable.myimage, чтобы получить изображение с именем myimage, доступное в подкаталоге drawable в / res .

пример

Рассмотрим следующий пример, где res / values ​​/ strings.xml имеет следующее определение —

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string  name="hello">Hello, World!</string>
</resources>

Теперь вы можете установить текст в объекте TextView с идентификатором msg, используя идентификатор ресурса следующим образом:

TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);

пример

Рассмотрим макет res / layout / activity_main.xml со следующим определением —

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>

Этот код приложения загрузит этот макет для Activity в методе onCreate () следующим образом:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

Доступ к ресурсам в XML

Рассмотрим следующий XML-файл ресурса res / values ​​/ strings.xml, который включает ресурс цвета и строковый ресурс:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<string name="hello">Hello!</string>
</resources>

Теперь вы можете использовать эти ресурсы в следующем файле макета, чтобы установить цвет текста и текстовую строку следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="@color/opaque_red"
android:text="@string/hello" />

Теперь, если вы еще раз пройдете предыдущую главу, где я объяснил Hello World! пример, и я уверен, что вы лучше поймете все концепции, описанные в этой главе. Поэтому я настоятельно рекомендую проверить предыдущую главу на рабочем примере и проверить, как я использовал различные ресурсы на самом базовом уровне.

Select the fields to be shown. Others will be hidden. Drag and drop to rearrange the order.
  • Image
  • SKU
  • Rating
  • Price
  • Stock
  • Availability
  • Add to cart
  • Description
  • Content
  • Weight
  • Dimensions
  • Additional information
  • Attributes
  • Custom attributes
  • Custom fields
Click outside to hide the compare bar
Compare