Новый разработчик - как создать некоторые учебные приложения? - PullRequest
0 голосов
/ 01 мая 2011

Я успешно установил Eclipse, JDK и т. Д., И у меня есть рабочая IDE.(Windows 7)
Довольно легко работал через HelloAndroid, как с жестко запрограммированным текстом, так и с ресурсами xml.
Находил .apk, загрузил его на мой планшет, и он заработал!

Теперь пытаемсячтобы сделать что-то более обширное и интерактивное, поэтому я пытаюсь создать учебное приложение TimePicker.Кажется, есть большой скачок в том, что начинающий программист должен просто «знать», чтобы сделать!

Шаг 1 - создание нового проекта, отлично.

Шаг 2 - «вставка»код ресурса xml был довольно понятен - он заменяет все.

Шаг 3 - «вставка» членов класса.Не очень понятно, но я, наконец, после нескольких попыток и наконец-то поместил их в нужное место в исходном коде java и после вызова подсказки нажал Ctrl-Shift-O для импорта пакетов.Без этого он естественно выдавал всевозможные ошибки, которые я не мог отличить от вставки кода в неправильном месте.

Шаг 4 - «вставка» кода для метода onCreate (): я понятия не имеюкуда это идет или что именно она может заменить.Шаги 5, 6, 7 не выглядят многообещающими!

Предлагаемый код: protected void onCreate () ;заменяет ли это сгенерированное по умолчанию public void onCreate () ?Это входит в дополнение к этому?Выше?Ниже?Внутри закрытия } ?После?

Само собой разумеется, что во всех местах, где я пытался это выразить, я получаю только больше ошибок ...

Я действительно не хочу или у меня нет времениЯва курс!Я программирую в течение 40 лет, и это, вероятно, проблема «старая собака / новые трюки».Буду очень признателен, если вы начнете изучать эту кривую обучения!

Дейв

Ответы [ 2 ]

4 голосов
/ 01 мая 2011

Ну, я не разработчик Android, но скажем, я в той же ситуации, что и вы. Я пришел из другого источника и хочу попасть в Android.

Это то, что я бы сделал, так как я полагаю, что вы знаете XML и языки программирования, которые поддерживают ООП. Я просто думаю, что вы пришли из C ++ или Delphi ...

Прежде всего, я бы искал в Интернете форум по Android для разработки Android, какое-то сообщество, которое имеет дело только с Android.

Чем бы я увидел - потому что на этих платах обычно есть какие-то нити, такие как: Полезные ресурсы и КНИГИ для начинающих Android.

Чем бы я посмотрел на Амазонку, проверил несколько обзоров и сравнил несколько книг.

Я бы просто пошел оттуда с книгой или двумя книгами. На самом деле не требуется времени для сканирования этих книг. Я также уверен, что они просто покажут некоторые базовые синтаксисы Java и упражнения по программированию, так как большинство книг по iPhone содержат некоторые C и C ++ - введение в Objective-C.

Оттуда я бы увидел, сколько обложек этих книг, взглянул бы на «простые» приложения для Android, которые уже есть на улице, и попытался бы их клонировать для практики.

И если есть какие-либо специфичные для Java вопросы, то просто погуглите смысл того, как подойти к этому в java, а затем просто посмотрите описания классов / методов по адресу: http://download.oracle.com/javase/tutorial/reallybigindex.html

Полагаю, таким образом вы могли бы легко погрузиться в Android в течение месяца или двух, чтобы охватить все основы и запустить несколько простых приложений?

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

0 голосов
/ 01 мая 2011

Перед программированием в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...