пятница, 13 апреля 2012 г.
Как начать программировать под android?
Прекрасная статья на тему - "Как начать писать под android" - http://derevyanko.blogspot.com/2010/10/android.html
Спасибо уважаемому dv
Спасибо уважаемому dv
Подборка книг по android на русским языке
На мой взгляд лучшие книги по android на русском языке:
1. Google Android программирование для мобильных устройств (Голощапов А.Л., 2011, BHV Санкт-Петербург)
2. Разработка приложений для Android (С. Хашими, С. Коматинени, Д. Маклинr, 2011)
3. Android за 24 часа. Программирование приложений под операционную систему Google (Лорен Дэрси, Рид Групп, 2011)
Динамическое добавление компонентов
Это приложение наглядно показывает технологию, как можно с помощью кода (ручками) создать компоненты на форме приложения.
В первой вкладке простая кнопка, а во второй уже контейнер RelativyLayout c Button и EditText внутри.
Вот первый класс DynAdd.java:
А вот и разметка main.xml :
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<TableLayout
android:id ="@+id/TabLayOne"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
<TableLayout
android:id="@+id/TabLayTwo"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
В первой вкладке простая кнопка, а во второй уже контейнер RelativyLayout c Button и EditText внутри.
Вот первый класс DynAdd.java:
package app.com.simp;
import android.app.TabActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TableLayout;
import android.widget.TableRow;
public class TabLayoutTest extends TabActivity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Определяем новый tabHost
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
//Создаем сначала TabHost с вкладками
//Page1
spec = tabHost.newTabSpec("tag1").setIndicator("Page1")
.setContent(R.id.TabLayOne);
tabHost.addTab(spec);
//Page2
spec = tabHost.newTabSpec("tag2").setIndicator("Page2")
.setContent(R.id.TabLayTwo);
tabHost.addTab(spec);
AddBut();
AddRel();
//Теперь займемся остальными вкладками
}
protected void AddBut()
{ TabHost tabHost = getTabHost();
FrameLayout frameLayout = tabHost.getTabContentView();
//TabLayOne
TableLayout tabLayOne = (TableLayout)frameLayout.findViewById(R.id.TabLayOne );
//Теперь создаем новую строчку (TableRow) в содержании TabHost'а
TableRow tabRowOne = new TableRow(this);
//В пустом TableLayout(TabLayOne) динамически создадим кнопку, которую вставим в TableRow
Button DynBut = new Button(this);
DynBut.setText("DynBut");
//Тут важный момент: Нужно задать параметры размеров для новой кнопки,
//для этого мы воспользуемся параметрами строки(TableRow.LayoutParams), котороую создали ранее,
//так как кнопку мы добовляем именно в новый TableRow.
DynBut.setLayoutParams(new TableRow.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//Добаляем в созданный tableRow новую кнопку
tabRowOne.addView(DynBut);
//Сейчас, когда у нас есть готовая строка ей надо добавить в содержание первого Tabhost'a
//Технология примерно такая же как и с кнопкой.
tabLayOne.addView(tabRowOne,new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//Теперь идем дальше, создадим реакцию на нажатие нашей новой кнопки
DynBut.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AddBut();
}
});
}
protected void AddRel()
{
TabHost tabHost = getTabHost();
FrameLayout frameLayout = tabHost.getTabContentView();
TableLayout tableLayout = (TableLayout)frameLayout.findViewById(R.id.TabLayTwo);
TableRow tableRow = new TableRow(this);
RelativeLayout DynBut1 = new RelativeLayout(this);//Контейнер,который мы будем копировать.
//Параметры кнопки
Button DynBut2 = new Button(this);//Новая кнопка
DynBut2.setText("DynBut");//Текст в кнопке
//"габариты" кнопки
DynBut2.setLayoutParams(new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
//Параметры строки
EditText DynBut3 = new EditText(this);//Новый текстовый редактор
DynBut3.setText("DynEdit");
DynBut3.setLayoutParams(new TableRow.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//Набор параметров ориентации компонента в контейнере.
RelativeLayout.LayoutParams Pos = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
Pos.setMargins(100, 20, 10, 20);//Задание параметров для позиционирования
//которые мы будем прикурчивать к определенному компоненту
//Параметры контейера
DynBut1.setLayoutParams(new TableRow.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
DynBut1.addView(DynBut2,Pos);//Добавление кнопки(Button) в контейнер
DynBut1.addView(DynBut3);//Добавление редактора строки(EditText) в контейнер
tableRow.addView(DynBut1);//Добавление контейнера в строку в разметку TableLayout
//Параметры для динамически созданной раметки
tableLayout.addView(tableRow,new TableLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
//Обрабочик события при нажатии
DynBut2.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AddRel();//И реакцией на нажатие созданной нами кнопки станет вызов этой же самой функции.
}
});
}
}
А вот и разметка main.xml :
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" >
<TableLayout
android:id ="@+id/TabLayOne"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
<TableLayout
android:id="@+id/TabLayTwo"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</TableLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
Источник - http://androidforums.ru/Dinamicheskoe-dobavlenie-komponentov-t7489.html
четверг, 12 апреля 2012 г.
Подписаться на:
Сообщения (Atom)