Статьи

Учебник по Google Android

Google недавно выпустила платформу Android для разработки мобильных приложений. Язык, используемый для разработки программ для Android — это Java, но это не Java Micro Edition. Ни один разработчик беспроводного приложения не может игнорировать Android. Google является самым известным брендом среди пользователей Интернета, а Android — от Google. 

Я представляю это практическое руководство, как продолжение моей серии j2me. Предполагается адекватное знание core-java, особенно обработки событий, Swing и внутренних классов. Хотя Android не использует Swing, он использует аналогичные идеи.

Мы можем разрабатывать уроки и приложения для Android в среде Eclipse. Google предоставил Eclipse-плагин для Android. Это популярный метод. Google не оказывает прямой поддержки Netbeans. Но некоторые пользователи Netbeans разработали метод запуска Android в Netbeans. Он доступен по адресу  http://undroid.nolimit.cz/ . Вы можете найти больше скриншотов и руководства в http://eppleton.com/blog/ .

Мы можем разрабатывать уроки по Android без использования Eclipse или Netbeans. Необходимые инструменты командной строки были предоставлены Google. Я обнаружил, что использовать эти инструменты командной строки проще, чем метод Eclipse или Netbeans. Итак, я основываю все следующие уроки на этих инструментах. Я думаю, что большинство читателей согласятся с моей точкой зрения после того, как они попробуют этот метод, а также метод Eclipse. Сайт Android по адресу code.google.com/android уже дал пошаговые инструкции об Android в Eclipse. Вы также можете получить более подробную информацию о снимках экрана с замечательного веб-сайта www.tanguay.info/web/welcome.php, озаглавленного «Сайт веб-разработчика Эдварда». Он дает отличное руководство с большим количеством снимков экрана 

На сайте Android нет ясности относительно метода командной строки. Поэтому я думаю, что добавляю что-то полезное, записывая метод командной строки вместо простого повторения материала на сайте Android.
Давайте начнем с самого начала. Первым шагом является загрузка Android SDK (версия m5-rc14, 12 февраля 2008 г.). Android был выпущен в ноябре 2007 года. Он был пересмотрен в версии от февраля 2008 года. Некоторые из более ранних примеров могут не работать в более новой версии.

Я работаю в Windows-2000 и поэтому я скачал версию для Windows. Поддерживаемая платформа в Windows — Windows-XP или Vista (другие упомянутые платформы — Mac OS 10 и Ubuntu Linux). Тем не менее, это хорошо работает в моем Win-2000. Желательно иметь как минимум 512 МБ памяти. Android SDK представляет собой ZIP-файл. Я разархивировал его в C: \ unzipped \ android и позже скопировал эту папку в D: \ android . Если вы хотите, вы можете просто скопировать его на другой диск, например G: \ android . В следующих уроках используется D: \ android .

Если вы хотите разрабатывать с использованием Eclipse, вы должны установить Eclipse3.2 или Eclipse3.3 (Europa). Я тестировал с Eclipse3.2. Нет проблем. Работает. Но для Eclipse требуется плагин ADT (т. Е.) Android Development Tools, если вы используете Eclipse. Вы можете получить этот плагин с http://code.google.com/android/adt_download . Вы должны быть осторожны с номером версии ADT. Это ADT-0.3.3.

Поскольку мое настоящее внимание сосредоточено на методе командной строки, позвольте мне начать сразу и дать простую демонстрацию. Данная процедура является общей для всех наших экспериментов, поэтому я не буду повторять ее в каждой демонстрации. Поэтому, пожалуйста, запишите это внимательно.

Демо 1 — TextBox

В моей первой демонстрации у меня будет обычная кнопка и текстовое поле (в Android называется EditField). Когда я нажимаю кнопку, я хочу сообщение «УСПЕХ!» отображаться в текстовом поле. В качестве упражнения я использую две кнопки и два текстовых поля.

Первый шаг — запустить эмулятор


cd to d: \ android \ tools

d: \ Android \ инструменты> эмулятор

Это займет много времени, чтобы начать. Не спешите. Подождите, пока все не начнется. И не закрывайте это окно небрежно по ошибке. В этом случае вам придется запустить его снова и долго ждать снова. Наконец, мы получаем экран эмулятора
 

Второй шаг — дать следующую команду из другого командного окна.


d: \ Android \ инструменты>

ActivityCreator — без демонстрации mypack.mydemos.demo

Это означает, что мой проект ‘demo’, а мой пакет ‘mypack.mydemos’. Ряд папок создаются автоматически этой командой:

  • инструменты \ демо \ SRC
  • Инструменты \ демо \ Bin
  • Инструменты \ демонстрационная \ Рез.  

Нам нужно внимательно отметить папки src и res . Мы поместим исходный файл java в папку src и файл main.xml в res \ layout, перезаписывая все файлы, которые генерируются автоматически. На данный момент мы можем думать о папке res \ layout как о той, которая определяет дизайн графического интерфейса. Как и в asp.net, flex и т. Д., Детали графического интерфейса указаны в xml-файле. Но как нам написать файл XML? рукой? Не слишком сложно. Но …. к счастью, на http://www.droiddraw.org/ есть дизайнер графического интерфейса с открытым исходным кодом DroidDraw . Это хороший инструмент, и если он вам нравится, вы можете отправить Ваша признательность [email protected], Он также дал простое руководство о том, как использовать этот графический инструмент.

Я скачал это программное обеспечение с сайта выше. Я расстегнул молнию. (любая папка). Когда мы нажимаем на значок, мы получаем экран, как показано ниже.

[img_assist | nid = 3267 | title = Droid Draw | desc = | link = none | align = undefined | width = 198 | height = 148]

 

[img_assist | nid = 3268 | title = Область холста для рисования | desc = | link = none | align = undefined | width = 189 | height = 266]

[img_assist | nid = 3269 | title = Панель инструментов и пустая область | desc = | link = none | align = undefined | width = 204 | height = 222] 

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

Из набора инструментов мы узнаем, что у нас есть элементы управления, такие как кнопка, флажок, радио, спиннер, edittext (текстовое поле) и textview (метка) и т. Д. Есть также комбо для выбора макета на экране холста. Я выбираю «абсолютное расположение». Я просто перетаскиваю кнопку и окно редактирования на холсте.

Вы заметите несколько вкладок в наборе инструментов. Выберите вкладку «Свойства». После нажатия кнопки на холсте присвойте свойству id кнопки @ id / button1. Точно так же для editview как @ id / text1. Кроме того, button2 и text2 После этого просто нажмите кнопку «Создать» в нижней части пустого окна. Мы получаем автоматически следующий XML-файл (main.xml).

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="wrap_content"
	android:padding="10px">
	<EditText android:id="@+id/text1" android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<Button android:id="@+id/button1" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:layout_below="@id/text1"
		android:layout_alignParentRight="true" android:layout_marginLeft="10px"
		android:text="click" />
	<EditText android:id="@+id/text2" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:layout_below="@id/button1" />
	<Button android:id="@+id/button2" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:layout_below="@id/text2"
		android:layout_alignParentRight="true" android:layout_marginLeft="10px"
		android:text="click" />
</RelativeLayout>

Теперь мы можем создать наш исходный файл Java. Код ссылается на main.xml для идентификатора элементов управления.
(d: \ android \ mydemos \ ex1 \ demo.java). Это наша рабочая папка.

package mypack.mydemos;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;


public class demo extends Activity  
{

Button     button1,button2;
EditText   text1,text2;

    @Override

    public void onCreate(Bundle icicle)
    {
       	super.onCreate(icicle);
       	setContentView(R.layout.main);
	text1=  (EditText) findViewById(R.id.text1);
	button1 = (Button) findViewById(R.id.button1);

	text2=  (EditText) findViewById(R.id.text2);
	button2 = (Button) findViewById(R.id.button2);
	button1.setOnClickListener(new clicker());
 	button2.setOnClickListener(new clicker());
   }

 //-----------------------------------

 class  clicker implements Button.OnClickListener
  {               
  public void onClick(View v)
     {
     if(v==button1){text1.setText("welcome"); }
     if(v==button2){text2.setText("hello");   }     
     }

  }

}

Документация Android и примеры программ используют анонимный внутренний класс. Я думаю, что это совершенно ненужно и очень утомительно для подражания. Вместо этого я использовал пользовательский «кликер». Это делает код чище и более читабельным. Это как любая программа Swing. В терминологии Android активность — это как колеблющийся кадр (экран). Точно так же как ActionListener, здесь мы также имеем OnClickListener. Я не буду вдаваться в подробные теории сейчас. Я просто хочу показать, как сначала разработать и запустить программу. Теория последует позже.

Мы должны скопировать этот файл (demo.java) в D: \ android \ tools \ demo \ src \ mypack \ mydemos


Перейдите в d: \ android \ tools \ demo

Задайте путь = c: \ winNT \ system32; c: \ jdk1.5 \ bin; e: \ ant1.6 \ bin

(обратите внимание, что это не будет работать с jdk1.4.2. Требуется jdk1.5).

Во-вторых, как насчет ссылки на Ant? Ant — это известный инструмент для сборки от Apache Software Foundation. Для Android требуется последняя версия Ant для Windows (т.е.) Ant1.6. Должен ли я знать, как написать файл Ant’s build.xml? NO. Он автоматически создается командой.

Итак, я скачал ant1.6 с веб-сайта Apache. Это компактный почтовый файл. Я распаковал его и поместил как E: \ ant1.6). Теперь используйте команду ‘муравей’


d: \ Android \ инструменты \ демонстрационная> муравей

Мы получим серию сообщений. Если мы выполнили предыдущие шаги правильно, мы получим сообщение «BUILD SUCCESSFUL». В противном случае мы получим сообщения об ошибках с номерами строк, где произошли ошибки. Мы можем исправить их и построить заново.

Процесс сборки создал бы файл zip с именем ‘demo.apk’ в папке demo \ bin. Осталось только запустить программу в эмуляторе. Как вы помните, мы уже запустили эмулятор и он работает.

Теперь скопируйте d: \ android \ tools \ demo \ bin \ demo.apk   в d: \ android \ tools . После копирования введите команду как:


… \ tools> adb install demo.apk

После того, как дал эту команду. перейдите в окно эмулятора. Вы найдете чекпаттерн, отображаемый на некоторое время. Затем на экране появляется дополнительная кнопка с надписью «demo». Наша программа была установлена. Мы можем проверить это, нажав на эту кнопку «демо».

 

Вы можете выполнить программу «Демо» сейчас. Появятся два текстовых поля и две кнопки. Нажмите на кнопку1. «Добро пожаловать» появится в тексте1. Нажмите на кнопку 2. «Как дела?» появится в text2. Результат показан ниже.

[Img_assist | NID = 3270 | название = | убывание = | ссылка = нет | ALIGN = не определено | ширина = 183 | высота = 313]

Это завершает нашу первую демонстрацию в Android.

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

Android SDK поставляется с несколькими примерами приложений. В папке APIDemos у нас есть папка с именем ‘ Views ‘. Я читаю это как «GUI». Он имеет дело с макетами, элементами управления, анимацией и т. Д. Существует много демонстраций. Сначала это может сбить с толку. Хотя мы можем захотеть изменить и упростить код позже, полезно попробовать каждую из примеров программ, нажав кнопку «apidemos» на экране эмулятора и ознакомившись с ней. Я перечислю и дам краткий комментарий по этому вопросу позже.

 

Демо 2 — Spinner

Как обычно, стандартными виджетами являются метка (textview), текстовое поле (edittext), комбо (spinner), чек, радио, тикер и т. Д. Теперь я дам демо для spinner. Я предоставил счетчик, кнопку и текст для отображения выбранного элемента в тексте редактирования.

Мы можем разработать наш макет, как и раньше, используя DroidDraw и получить следующий main.xml.

(получено с помощью DroidDraw).

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget0" 
    android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
      xmlns:android="http://schemas.android.com/ apk/res/android">                                            
<Spinner  android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="70px" android:layout_y="42px">                                            
</Spinner>
<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="confirm" android:layout_x="70px" android:layout_y="112px">                                           </Button>                                   
<EditText android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="EditText" android:textSize="18sp" android:layout_x="70px" android:layout_y="182px">
</EditText>
</AbsoluteLayout>

Соответствующий исходный файл Java приведен ниже.

package  mypack.mydemos;      

import android.app.Activity;                   
import android.os.Bundle;
import android.widget.*; import android.view.View; public class demo extends Activity
{
Spinner spinner1;
Button button1;
EditText text1; @Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setTheme(android.R.style.Theme_Dark);
setContentView(R.layout.main);
spinner1 = (Spinner) findViewById (R.id.spinner1); button1 = (Button);
findViewById (R.id.button1);
text1 = (EditText) findViewById (R.id.text1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_ item); spinner1.setAdapter(adapter);
button1.setOnClickListener( new clicker());
} private static final String[] array = { "sunday", "monday", "tuesday", "wednesday",
"thursday", "friday", "saturday" }; class clicker implements Button.OnClickListener {
public void onClick(View v)
{ String s = (String) spinner1.getSelectedItem();
text1.setText(s);
} } }

Как и прежде, разместите файл demo.java в каталоге d: \ android \ tools \ demo \ src \ mypack \ mydemos . Поместите main.xml в d: \ android \ tools \ demo \ res \ layout

Сборка с использованием муравья. Разверните demo.apk в эмуляторе точно так же, как в предыдущем демо. Оригинальная демоверсия перезаписывается. Но наша рабочая папка, в которой у нас есть файлы xml и java, — это d: \ android \ mydemos \ ex1.Они не повреждены. Так что нет проблем .. Текущие файлы java и xml находятся в d: \ android \ mydemos \ ex2.

Когда мы нажимаем на счетчик, мы получаем элементы, отображаемые в раскрывающемся списке. Мы выбираем товар и подтверждаем. Выбранный элемент появляется в text1. Я не собираюсь объяснять код. Это достаточно просто, если мы помним наше ядро ​​Java.

 

Демо 3 — Тикер

Третья демонстрация — это «тикер», имеющий текстовое поле для ввода текста тикера, тикер (таймер), две метки (editview), одну для статуса, а другую для отображения скользящего сообщения.

<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
   android:layout_width="fill_parent"    
   android:layout_height="fill_parent"    
   android:orientation="vertical">                                                                           
<EditText android:id="@+id/text1"        
   android:layout_width="fill_parent"        
   android:layout_height="wrap_content" />                                                                          
<Ticker android:id="@+id/ticker1"        
android:layout_width="fill_parent"        
android:layout_height="wrap_content" 
android:layout_marginTop="20dip" />                                                                   
<TextView android:id="@+id/label1"            
  android:layout_width="wrap_content"            
  android:layout_height="fill_parent" />                                                                    
 </Ticker>
<TextView android:id="@+id/label2"        
  android:layout_width="fill_parent"        
  android:layout_height="wrap_content"        
   android:layout_marginTop="20dip"  />                                                          
</LinearLayout>

 LinearLayout с вертикальной ориентацией похож на FlowLayout, но в вертикальном направлении.

package mypack.mydemos;

import android.app.Activity;
import android.os.Handler;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import java.util.Map;

public class demo extends Activity

implements Ticker.TickerListener {
	Ticker ticker1;
	TextView label1, label2;
	EditText text1;

	@Override
	protected void onCreate(Bundle icicle) {
		super.onCreate(icicle);
		setContentView(R.layout.main);
		ticker1 = (Ticker) findViewById(R.id.ticker1);
		label1 = (TextView) findViewById(R.id.label1);
		label2 = (TextView) findViewById(R.id.label2);
		text1 = (EditText) findViewById(R.id.text1);
		ticker1.setTickerListener(this);
		text1.setOnClickListener(new clicker());
	}

	class clicker implements EditText.OnClickListener {
		public void onClick(View v) {

			label1.setText(text1.getText());
			ticker1.startTicker();
			label2.setText("Ticking...");
		}
	}

	public void onTickerFinished(Ticker view) {
		label2.setText("Done!");
	}

}

 

Демо 4 — Флажок 

Скопируйте это в tools \ demo \ res \ layout \

 

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget1"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	xmlns:android="http://schemas.android.com/ apk/res/android">
	<CheckBox android:id="@+id/check1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="java"
		android:layout_x="50px" android:layout_y="22px">
	</CheckBox>

	<CheckBox android:id="@+id/check2"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="C#"
		android:layout_x="50px" android:layout_y="72px">
	</CheckBox>

	<Button android:id="@+id/button1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="Confirm"
		android:layout_x="60px" android:layout_y="122px">
	</Button>

	<EditText android:id="@+id/text1"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="EditText"
		android:textSize="18sp" android:layout_x="60px"
		android:layout_y="202px">
	</EditText>
</AbsoluteLayout>

 

Для копирования в инструменты \ demo \ mypack \ mydemos

package mypack.mydemos;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;

public class demo extends Activity

{

	Button button1;
	CheckBox check1, check2;
	EditText text1;

	@Override
	public void onCreate(Bundle icicle)

	{
		super.onCreate(icicle);
		setContentView(R.layout.main);
		text1 = (EditText) this.findViewById(R.id.text1);
		check1 = (CheckBox) findViewById(R.id.check1);
		check2 = (CheckBox) findViewById(R.id.check2);

		button1 = (Button) findViewById(R.id.button1);
		button1.setOnClickListener(new clicker());

	}

	class clicker implements Button.OnClickListener

	{
		public void onClick(View v)

		{

			String r = "";
			if (check1.isChecked())
			{
				r = r + "java" + "\n";
			}
			if (check2.isChecked())
			{
				r = r + "c#";
			}
			text1.setText(r);
		}

	}

}

 

Это просто обычный Java-код и требует очень мало объяснений. Единственное отличие состоит в том, как определяются элементы управления (через файл res \ layout \ xml).

Демо 5 — RadioButtons

Следующим стандартным элементом управления является RadioButton внутри RadioGroup.

Поместить в инструменты \ demo \ res \ layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="wrap_content">
	<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:orientation="vertical">
		<RadioButton android:id="@+id/radio1" android:text="madras"
			android:layout_width="wrap_content" android:layout_height="wrap_content" />
		<RadioButton android:id="@+id/radio2" android:text="bombay"
			android:layout_width="wrap_content" android:layout_height="wrap_content" />
	</RadioGroup>
	<Button android:id="@+id/button1" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="Button" />
	<TextView android:id="@+id/label1" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="where" />
	<EditText android:id="@+id/text1" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="" android:textSize="18sp"
		android:layout_x="70px" android:layout_y="182px" />
</LinearLayout>

Следующий код Java должен быть помещен в tools \ demo \ src \ mypack \ mydemo

package mypack.mydemos;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.*;

public class demo extends Activity

{

	TextView label1;

	RadioGroup group1;

	RadioButton radio1, radio2;

	Button button1;

	EditText text1;

	@Override
	protected void onCreate(Bundle icicle)

	{

		super.onCreate(icicle);

		setContentView(R.layout.main);

		group1 = (RadioGroup)

		findViewById(R.id.group1);

		radio1 = (RadioButton)

		findViewById(R.id.radio1);

		radio2 = (RadioButton)

		findViewById(R.id.radio2);

		button1 = (Button) findViewById(R.id.button1);

		text1 = (EditText) findViewById(R.id.text1);

		text1.setText("radio");

		label1 = (TextView) findViewById(R.id.label1);

		label1.setText("where?");

		button1.setOnClickListener(new clicker());

	}

	// ...inner class ---follows ->

	class clicker implements Button.OnClickListener

	{

		public void onClick(View v)

		{

			if (v == button1)

			{

				if (radio1.isChecked())

				{
					text1.setText("madras");
				}

				if (radio2.isChecked())

				{
					text1.setText("bombay");
				}

			}

		}

	}

	// ----inner class ends here ---

}

 

Вы бы заметили, что я называю все мои java-файлы как «demo.java». Может быть, сначала сбивает с толку, но я делаю это с целью. Прежде всего, экран эмулятора загромождается слишком большим количеством кнопок, если мы продолжим добавлять мои примеры. Что я сделал, это:

Я создал папку как d: \ android \ mydemos.

В папке mydemos я создал такие подпапки, как (ex1, ex2 и т. Д.). Но внутри каждой папки у меня есть demo.java & main.xml.

Таким образом, мы можем легко протестировать каждую из наших демонстраций по единой процедуре. В моей системе у меня была проблема нехватки памяти. И, благодаря вышеописанному шагу, я смог протестировать все свои программы под тем же именем.

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

Демо 6 — Галерея 

Интересно, что в наборе инструментов есть готовый элемент управления, называемый «галерея». Давайте теперь научимся использовать этот элемент управления, хотя синтаксис немного сложен. На этот раз нам понадобятся demo.java, main.xml, а также другая папка в tools \ demo \ res \ drawable . Эта специальная папка должна быть создана нами. Вы можете прочитать «img» вместо «drawable». Итак, мы помещаем все файлы изображений для отображения в галерее, в эту папку.

 

Давайте, как обычно, создадим XML-файл с помощью DroidDraw следующим образом.

 

<?xml version="1.0" encoding="utf-8"?>
<Gallery xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/gallery" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:layout_alignParentBottom="true"
	android:layout_alignParentLeft="true" android:gravity="center_vertical"
	android:spacing="5" />

 

Следующий класс должен быть помещен в tools \ demo \ mypack \ mydemos

package mypack.mydemos;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;

public class example extends Activity

{

	@Override
	public void onCreate(Bundle icicle) {

		super.onCreate(icicle);
		setContentView(R.layout.main);
		Gallery gallery = (Gallery)
		findViewById(R.id.gallery);
		gallery.setAdapter(new ImageAdapter(this));
		gallery.setOnItemClickListener(new OnItemClickListener()
		{

			public void onItemClick(AdapterView parent,
			View v,
			int position,
			long id)

			{

				Toast.makeText(example.this, "" + position,
				Toast.LENGTH_SHORT).show();
			}

		});

	}

	public class ImageAdapter extends BaseAdapter
	{

		public ImageAdapter(Context c)
		{
			mContext = c;
		}

		public int getCount()
		{
			return mImageIds.length;
		}

		public Object getItem(int position)
		{
			return position;
		}

		public long getItemId(int position)
		{
			return position;
		}

		public View getView(int position, View
		convertView, ViewGroup parent)
		{
			ImageView i = new ImageView(mContext);
			i.setImageResource(mImageIds[position]);
			i.setScaleType(ImageView.ScaleType.FIT_XY);
			i.setLayoutParams(new Gallery.LayoutParams(160, 200));
			return i;
		}

		public float getAlpha(boolean focused, int offset)
		{
			return Math.max(0, 1.0f - (0.2f * Math.abs(offset)));
		}

		public float getScale(boolean focused, int offset)
		{
			return Math.max(0, 1.0f - (0.2f *
			Math.abs(offset)));
		}
		private Context mContext;
		private Integer[] mImageIds = {
		R.drawable.cindy,
		R.drawable.clinton,
		R.drawable.ford,
		R.drawable.cybil,
		R.drawable.demi,
		R.drawable.colin,
		R.drawable.david,
		R.drawable.drew
		};

	}

}

Как удалить приложение из эмулятора?


  • Убедитесь, что ваш эмулятор работает

  • Откройте окно с досками в папке android / tools d: \ android \ tools> оболочка adb 

  • Вы получите приглашение оболочки

     #cd / data / app

     #ls

     (в нем будут перечислены все * .apk, установленные в вашем эмуляторе)

    # rm example.apk

    (если вы хотите удалить ‘example’)

    #exit
  • Вы увидите, как приложение удаляется из эмулятора одновременно

 

На этом первая часть моего вводного руководства по Android SDK завершена.