Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ѕрограммное создание 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 ( арточка).

 

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2016-11-24; ћы поможем в написании ваших работ!; просмотров: 572 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ѕольшинство людей упускают по€вившуюс€ возможность, потому что она бывает одета в комбинезон и с виду напоминает работу © “омас Ёдисон
==> читать все изречени€...

1591 - | 1355 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.11 с.