Программное создание FrameLayout

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv1 = new TextView(this); tv1.setText(R.string.top_text); tv1.setTextSize(40); tv1.setTextColor(Color.BLACK); TextView tv2 = new TextView(this); tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM)); tv2.setTextSize(50); tv2.setGravity(Gravity.RIGHT); tv2.setText(R.string.bottom_text); tv2.setTextColor(Color.WHITE); ImageView iv1 = new ImageView(this); iv1.setImageResource(R.drawable.lake); iv1.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); iv1.setScaleType(ScaleType.MATRIX); FrameLayout fl = new FrameLayout(this); fl.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); fl.addView(iv1); fl.addView(tv1); fl.addView(tv2); setContentView(fl);}

 

 

рамка, соответствующая элементу, станет желтой (),

Рассмотрим работу с его свойствами при помощи вкладки Properties. Когда разметка открыта в графическом представлении, то слева от основной части редактора кода можно увидеть панель инструментов, в которой сгруппированы различные элементы по группам Layouts, Widgets, Text Fields и так далее. В группе Widgets найдите элемент ImageButton, перетащите её на форму и отпустите. Точное расположение нас не интересует, поэтому не заморачивайтесь по этому поводу, постарайтесь разместить компонент в центре экрана активности.

Теперь научимся менять фон для экрана приложения. Сейчас у нас экран белого цвета. Подготовим цветовой ресурс с нужным цветом.

Возвращаемся в файл разметки activity_main.xml. Справа найдите вкладку Properties, в которой отображаются свойства для выбранного элемента. Новички часто путаются на первых порах и начинают менять свойства не у тех элементов, которые им были нужны. Сейчас у вас есть сама форма, графическая кнопка ImageButton и текстовая метка TextView с надписью Hello World!. Пощёлкайте по этим элементами, чтобы увидеть, как меняется содержание свойств в панели свойств. Так как мы собираемся работать с фоном экрана приложения, то щёлкните в области формы и в панели свойств найдите свойство background. Щелкните рядом с этим словом во второй колонке, где нужно прописывать значения. Появится текстовое поле, в которое можно ввести значение вручную, и кнопка с тремя точками, которая запустит диалоговое окно для создания ресурса.

Переходим на вкладку Color и выбираем цвет, удобным вам способом. Я ввёл значение FFC0CB в текстовом поле с меткой #.

Нажимаем кнопку OK и форма окрасится в розовый цвет. Получилось глаМУРненько.

Если переключиться в текстовый режим, то увидим, что у элемента RelativeLayout добавилась строчка:

 

android:background="#ffffc0cb"

Мы напрямую установили нужное нам значение. В реальности это неправильный подход. Вы должны использовать цветовые ресурсы, поэтому изучим правильный вариант добавления цвета.

Снова нажимаем на кнопку с тремя точками у свойства background и в диалоговом окне переходим на вкладку Project. Нажимаем на кнопку New Resource... и выбираем вариант New Color Value.... Появится ещё одно диалоговое окно. Заполняем пустые поля нужными значениями. Обратите внимание, что ресурс будет сохранён в новом файле colors.xml. Это общепринятый стандарт для хранения цветов, хотя вы можете сохранить ресурс и в файле strings.xml и styles.xml, которые можно выбрать из выпадающего списка.

Нажимаем OK и смотрим на изменения. Теперь цвет задан следующим образом:

 

android:background="@color/background_color"

Далее поменяем картинку для графической кнопки. Находим подходящее изображение и копируем его, например, в папку res/drawable-hdpi. Можно в Проводнике скопировать нужную картинку и, переключившись на студию, вставить её в нужную папку студии.

Картинку можете взять у меня.

Когда вы поместите графический файл в указанную папку, то студия автоматически создаёт ресурс типа Drawable с именем файла без расширения, к которому можно обращаться программно. Выделяем элемент ImageButton на форме и в панели свойств выбираем свойство src. Снова щёлкаем на кнопке с тремя кнопками и выбираем ресурс в категории Drawable - вы там должны увидеть ресурс pinkhellokitty (имя добавленного ранее файла).

Запомните, что имена ресурсов должны начинаться с буквы и могут содержать буквы и цифры, а также знак нижнего подчеркивания. Другие символы типа тире, решётки и т.д. использовать нельзя.

Там же в окне свойств находим свойство onClick и вручную прописываем onClick - это будет именем метода для обработки нажатия на кнопку. Вы можете придумать и другое имя, например, onButtonPressed, но я привык к такому подходу.

Мы закончили работу с графическим интерфейсом приложения. Напоследок, выделите элемент TextView с надписью Hello, World и в окне свойств посмотрите на его идентификатор (ID). Если там пусто, то удалите его, он не оправдал наших надежд. В категории Widgets найдите компонент Large Text и перетащите его на форму приложения. Постарайтесь разместить его под графической кнопкой с котёнком.

У этого компонента точно будет что-то написано в свойстве id. Скорее всего, это будет @+id/textView. Запомните его. Впрочем, мы могли не удалять первый компонент, а прописать идентификатор вручную. Но мне пришлось бы объяснять лишние детали, а так сразу получили результат. Вот я не удалял его и у меня экран выглядит так. А у вас будет текст Large Text. Ничего страшного.

У меня получилось следующее:

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/background_color"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="ru.alexanderklimov.hellokitty.MainActivity">

 

<ImageButton

android:id="@+id/imageButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:onClick="onClick"

android:src="@drawable/pinkhellokitty" />

 

<TextView

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/imageButton"

android:layout_alignStart="@+id/imageButton"

android:layout_below="@+id/imageButton"

android:layout_marginTop="42dp"

android:text="Large Text"

android:textAppearance="?android:attr/textAppearanceLarge" />

 

</RelativeLayout>

Установите курсор мыши внутри текста "onClick" у кнопки и нажмите комбинацию Alt+Enter

В всплывающем окне выберите вариант Create 'onClick(View)' in 'MainActivity'.

В коде класса MainActivity появится заготовка для обработки щелчка кнопки.

Раз уж у нас теперь открыт файл MainActivity.java, то продолжим теперь работу в нём. Так как мы собираемся менять текст в текстовой метке, необходимо прописать данный элемент в коде. До метода onCreate() наберите строчку:

 

private TextView mHelloTextView;

Мы объявили переменную типа TextView под именем mHelloTextView.

Если вы набирали вручную и при подсказках использовали клавишу Enter, то класс TextView автоматически импортируется и запись появится в секции import. Если вы просто копируете текст с сайта, то студия подчеркнёт название класса TextView и предложит импортировать его вручную.

Далее внутри метода onCreate() после вызова метода setContentView() добавьте строку:

 

mHelloTextView = (TextView)findViewById(R.id.textView); // помните, я просил запомнить идентификатор?

Избегайте соблазна скопировать строку с сайта и вставить в код, пишите самостоятельно и активно используйте автозавершение (Ctrl+Пробел) при наборе слов. Студия часто сама активно помогает подсказками. Теперь система знает о существовании элемента TextView и мы можем к нему обращаться для изменения различных свойств, например, поменять текст.

Переходим к заготовке для щелчка кнопки.

 

public void onClick(View view) {

}

В следующих занятиях мы подробнее разберём работу с данным методом, пока просто пишем код между фигурными скобками:

 

mHelloTextView.setText("Hello Kitty!");

Мы обращаемся к элементу mHelloTextView и через метод setText() программно меняем текст на нужные слова.

Запускаем программу и нажимаем на кнопку с изображением котёнка. Если всё сделали правильно, то отобразится замечательная фраза. С этого момента можете считать себя настоящим программистом - вы научились создавать цветовые и графические ресурсы, менять фон у приложения через XML-разметку, обрабатывать нажатия кнопки и выводить текстовые сообщения.

В папке app\build\outputs\apk проекта можно найти готовый APK-файл, который вы можете выложить у себя на сайте и дать скачать знакомым девушкам (в телефоне должно быть разрешение на установку неподписанных приложений), вы станете невероятно круты в их глазах.

Исходный код для ленивых

Ткните лапкой, чтобы развернуть текст

 

// Если этот код работает, его написал Александр Климов,

// а если нет, то не знаю, кто его писал.

 

package ru.alexanderklimov.hellokitty;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.TextView;

 

 

public class MainActivity extends Activity {

 

private TextView mHelloTextView;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

 

mHelloTextView = (TextView) findViewById(R.id.textView);

}

 

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

 

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

 

public void onClick(View view) {

mHelloTextView.setText("Hello Kitty!");

}

}

 

Поздороваемся с котом по человечески. Найдите в разделе Text Fields компонент Plain Text и перетащите его на экран активности, разместив где-то над картинкой. Оставляем все свойства без изменений, разве только в свойстве hint можно добавить строчку-подсказку, которая будет исчезать при вводе текста.

 

<EditText

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/editText"

android:layout_above="@+id/imageButton"

android:layout_centerHorizontal="true"

android:layout_marginBottom="66dp"

android:hint="Введите имя кота" />

Переходим в класс MainActivity и добавляем новую переменную рядом с переменной mHelloTextView:

 

private EditText mNameEditText;

Свяжем созданную переменную с компонентом в методе onCreate():

 

mNameEditText = (EditText) findViewById(R.id.editText);

Поменяем код для щелчка кнопки.

 

public void onClick(View view) {

if (mNameEditText.getText().length() == 0) {

mHelloTextView.setText("Hello Kitty!");

} else {

mHelloTextView.setText("Привет, " + mNameEditText.getText());

}

}

Мы внесли небольшую проверку. Если в текстовом поле пустой текст, то длина текста составляет ноль символов и мы по-прежнему выводим надпись "Hello Kitty!". Если пользователь введёт имя своего кота, то приложение поздоровается с ним. Какая умная и вежливая программа у нас получилась.

Итак, для начала теор. минимума достаточно, давайте наконец то создадим наш Hellow World! Чтобы привнести в стандартный вид приложения свою новизну, индивидуальность и оригинальность, давайте в режиме визуального редактирования с помощью мышки перетащим находящийся там элемент TextViewс текстом "Hellow World!" (выделяем надпись "Hellow World!" кликом и тащим куда надо) в центр экрана, потом зайдем в режим редактирования кода Textи в коде, описывающем наш текстовый элемент, допишем строчку с командой изменения размера текста (нижняя строчка в коде, отделенная пробелом):

<TextView

android:text="@string/hello_world"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="183dp"

 

android:textSize="25pt"/>

 

Уже в окошке Previewв можете видеть изменение размера текста.

Наше приложение готово! Осталось его протестировать и создать APK файл, чтобы показать наше творение всем, кому только можно. Настраиваем запуск либо эмулятора, либо реального устройства (как это сделать, смотрим тут) и нажимаем зеленую кнопку Run, либо на панели вверху Run --- Run "app", либо жмем Shift + F10. Дожидаемся загрузки эмулятора/установки приложения на телефон и смотрим на результат. Поздравляю, ваше первое Android приложение создано!

 

1.4.надпись, намерения и вобщем случае - другая информация. (его) ом Помимо корневого элемента обязательным манифеста является его дочерний. В манифесте может быть только один такой элемент. Он может содержать в себе множество других дочерних элементов (<activity>, <service>, <receiver>, <provider> и другие), которые определяют структуру и работу приложения. Порядок расположения этих элементов, находящихся на одном уровне, произвольный. Все значения устанавливаются через атрибуты элементов. Кроме обязательных элементов, упомянутых выше, в манифесте по мере необходимости используются другие элементы. Перечислим значения некоторых из них в Android:

 

,

Аndтвкщшвуказание - erfpfybtшсщтallowBackup

ю и восстановить инфраструктуру. Если этот атрибут установлен в ложь ...

 

 

<activity

android:name="com.example.geodating.GS_selection"

android:label="@string/app_name"

android:theme="@android:style/Theme.Dialog"

android:configChanges="keyboardHidden|orientation" >

</activity>

<permission> объявляет разрешение, которое используется для ограничения доступа к определенным компонентам или функциональности данного приложения. В этой секции описываются права, которые должны запросить другие приложения для получения доступа к приложению. Приложение может также защитить свои собственные компоненты (Activities, Services, Broadcast receivers и Content providers) разрешениями. Оно может использовать любое из системных разрешений, определенных Android или объявленных другими приложениями, а также может определить свои собственные разрешения.

<uses-permission> запрашивает разрешения, которые приложению должны быть предоставлены системой для его нормального функционирования. Разрешения предоставляются во время установки приложения, а не во время его работы.

Наиболее распространённые разрешения:

INTERNET – доступ к интернету

READ_CONTACTS – чтение (но не запись) данных из адресной книги пользователя

WRITE_CONTACTS – запись (но не чтение) данных в адресную книгу пользователя

RECEIVE_SMS – обработка входящих SMS

ACCESS_FINE_LOCATION – точное определение местонахождения при помощи GPS

<uses-sdk> позволяет объявлять совместимость приложения с указанной версией (или более новыми версиями API) платформы Android. Уровень API, объявленный приложением, сравнивается с уровнем API системы мобильного устройства, на который инсталлируется данное приложение.

Атрибуты:

android:minSdkVersion определяет минимальный уровень API, требуемый для работы приложения. Система Android будет препятствовать тому, чтобы пользователь установил приложение, если уровень API системы будет ниже, чем значение, определенное в этом атрибуте.

android:maxSDKVersion позволяет определить самую позднюю версию, которую готова поддерживать программа.

targetSDKVersion позволяет указать платформу, для которой разрабатывалось и тестировалось приложение.

<uses-configuration> указывает требуемую для приложения аппаратную и программную конфигурацию мобильного устройства. Спецификация используется, чтобы избежать инсталляции приложения на устройствах, которые не поддерживают требуемую конфигурацию. Если приложение может работать с различными конфигурациями устройства, необходимо включить в манифест отдельные элементы <uses-configuration> для каждой конфигурации.

<uses-feature> объявляет определенную функциональность, требующуюся для работы приложения. Таким образом, приложение не будет установлено на устройствах, которые не имеют требуемую функциональность. Например, приложение могло бы определить, что оно требует камеры с автофокусом. Если устройство не имеет встроенную камеру с автофокусом, приложение не будет установлено.

Возможные атрибуты:

android.hardware.camera – требуется аппаратная камера.

android.hardware.camera.autofocus – требуется камера с автоматической фокусировкой.

<supports-screens> определяет разрешение экрана, требуемое для функционирования приложения. По умолчанию современное приложение с уровнем API 4 или выше поддерживает все размеры экрана и должно игнорировать этот элемент.

<application> один из основных элементов манифеста, содержащий описание компонентов приложения. Содержит дочерние элементы (<activity>, <service>, <receiver>, <provider> и другие), которые объявляют каждый из компонентов, входящих в состав приложения. В манифесте может быть только один элемент <application>.

 

Есть еще пара важных

Рассмотрим состав панели Palette. После наименования групп указываются конкретные элементы.

Form Widgets

TextView (Метка)

Button (Кнопка)

ToggleButton (Кнопка-переключатель)

CheckBox (Флажок)

RadioButton (Переключатель)

Spinner (Выпадающий список)

ProgressBar (Large, Normal, Small, Horizontal) - индикаторы прогресса

SeekBar (Ползунок)

QuickContactBadge

RatingBar (Рейтинг)

Switch (Переключатель с текстом)

ListPopupWindow

Text Fields

EditText (Редактируемый текст)

AutoCompleteTextView (????????), MultiAutoCompleteTextView

Layouts

GridLayout

LinearLayout

RelativeLayout

FrameLayout

Include Other Layout

Fragment

TableLayout и TableRow

Space

DrawerLayout

SlidingPanelLayout

SwipeRefreshLayout

BlinkLayout (недокументированный)

CardView (Карточка).