Перед программированием в Android вы должны знать:
- Java
- Объектно-ориентированное программирование
- XML в целом (что наиболее важно для пользовательского интерфейса)
Я записываю шаги учебников так, чтобы они могли помочь вам. Если вы будете следовать им, вы закончили бы учебник, но вы ничего не могли бы узнать. Я бы порекомендовал вам начать с прочтения очень маленького Java-учебника (в нем рассказывается об объектно-ориентированном программировании в Java).
После этого вы поймете это намного лучше.
Это видео также очень хорошее для начала работы. Узнайте, как разрабатывать для Android, помимо HelloWorld . (Это долго, но я очень рекомендую это, это поможет вам быстро двигаться)
Затем я бы порекомендовал вам закончить учебники по макету (они намного проще и полезнее для основных программ). Учебные материалы по компоновке лучше начать изучать. (по крайней мере, делайте учебники linearLayout, RelativeLayout и ScrollView). После видео (если вы его видели) некоторые из этих руководств могут показаться несложными.
После этого, если вы все еще не понимаете этот код, прочитайте более сложное руководство по Java (или перейдите к части интерфейса руководства).
Я знаю, что видео длинное, но это очень хороший способ начать. Это мне очень помогло.
Хорошо, я напишу несколько вещей, которые вы должны знать, чтобы программировать на Android. Это объясняется в руководстве HelloWorld, но если вы их там не поняли, я пишу их здесь.
В Android разные "Windows" называются Деятельности и являются подпунктами Деятельности. Например, активность может быть:
public class MyExampleActivity extends Activity
{
...
}
Все активиты должны быть объявлены в манифесте Android (как вы должны были видеть в примере HelloAndroid). Первое действие, вызываемое в приложении, - это действие с тегом:
<category android:name="android.intent.category.LAUNCHER" />
Для остальных действий вы должны изменить этот тег на: <category android:name="android.intent.category.DEFAULT" />
.
Например, в манифесте мое первое действие должно быть объявлено как:
<activity android:name=".MyExampleActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Все действия должны переопределять метод onCreate. Этот метод является первым методом, вызываемым при запуске действия.
Таким образом, во всех действиях вы должны создать такой методж:
public class MyExampleActivity extends Activity
{
//The On Create Method - Is the first method called in an activity.
@Override
public void onCreate(Bundle savedInstanceState) {
//Executes the onCreate of the superclass (Activity)
super.onCreate(savedInstanceState);
//Adds the xml layout to the activity (In the first activity, the layout is usually
//main, but in other activities you should replace main for the laout of that activity
setContentView(R.layout.main);
//Just to prevent mistakes, ALWAYS make the findViewById(R.id.xxx) calls after the
// setContentView
// (onCreate CODE SHOULD BE HERE)
}
...
}
О выбранном вами учебнике. Это не тот, который я рекомендую сразу после HeloWorld, но если вы хотите закончить его:
Шаг 4. Создайте метод onCreate в классе HelloTimePicker (или как вы его называли) и скопируйте код, в который я написал (onCreate CODE SHOULD BE HERE)
.
В этот момент класс может выглядеть примерно так:
public class HelloTimePicker extends Activity
{
private TextView mTimeDisplay;
private Button mPickTime;
private int mHour;
private int mMinute;
static final int TIME_DIALOG_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// capture our View elements
mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
mPickTime = (Button) findViewById(R.id.pickTime);
// add a click listener to the button
mPickTime.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
// get the current time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// display the current date
updateDisplay();
}
//NEW METHODS GO HERE
}
Теперь вы можете увидеть:
Class xx extends activity
Глобальные переменные (private TextView mTimeDisplay;
и т. Д.)
OnCreate
мето с super.onCreate
, setContentView
и дополнительным кодом для TimePicker.
Шаг 5 добавляет два новых метода в класс t:
// updates the time we display in the TextView
private void updateDisplay() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mHour)).append(":")
.append(pad(mMinute)));
}
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
просто скопируйте это где я написал (//NEW METHODS GO HERE
).
Шаг 6 аналогичен шагу 5, но со слушателем (он похож на метод, который вызывается автоматически, когда что-то происходит). я бы порекомендовал почитать про слушателей, чтобы лучше это понять.
Вы должны просто вставить:
// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
}
};
после двух методов и до }
в конце класса.
Шаг 7 похож на шаг 6, но с
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
}
return null;
}
.
учебник закончен. Вы должны иметь:
public class HelloTimePicker extends Activity
{
private TextView mTimeDisplay;
private Button mPickTime;
private int mHour;
private int mMinute;
static final int TIME_DIALOG_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// capture our View elements
mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
mPickTime = (Button) findViewById(R.id.pickTime);
// add a click listener to the button
mPickTime.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
showDialog(TIME_DIALOG_ID);
}
});
// get the current time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// display the current date
updateDisplay();
}
// updates the time we display in the TextView
private void updateDisplay() {
mTimeDisplay.setText(
new StringBuilder()
.append(pad(mHour)).append(":")
.append(pad(mMinute)));
}
private static String pad(int c) {
if (c >= 10)
return String.valueOf(c);
else
return "0" + String.valueOf(c);
}
// the callback received when the user "sets" the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
}
};
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
return new TimePickerDialog(this,
mTimeSetListener, mHour, mMinute, false);
}
return null;
}
//Sorry for the indexing