Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
#1

Перенос Java-кода на платформу Android - Android

02.08.2016, 08:59. Просмотров 644. Ответов 28
Метки нет (Все метки)

Всем доброе утро!
Есть неплохой код.
Но мне оказалось этого мало и хочу перенести на платформу Android с помощью Android Studio.
Подскажите пожалуйста как перенести?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
02.08.2016, 10:01     Перенос Java-кода на платформу Android #2
Прочитать про класс Timer в андроид.

Добавлено через 21 секунду
Или CountdownTimer
Vladimir93
35 / 35 / 4
Регистрация: 28.06.2015
Сообщений: 136
02.08.2016, 11:27     Перенос Java-кода на платформу Android #3
А что вы хотите перенести, таймер, программу? Для таймера у Андроида есть свои методы. Код перенести можно, а интерфейс нужно новый делать.
Паблито
2195 / 1809 / 562
Регистрация: 12.05.2014
Сообщений: 6,440
Завершенные тесты: 1
02.08.2016, 12:08     Перенос Java-кода на платформу Android #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
делов на 5 минут
код активити
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private Button startBtn;
    private TextView counterTv;
 
    private final CountDownTimer countDownTimer = new CountDownTimer(10000, 1000) {
        @Override
        public void onTick(long l) {
            counterTv.setText(String.valueOf(l / 1000));
        }
 
        @Override
        public void onFinish() {
            counterTv.setText("Done!");
            startBtn.setEnabled(true);
        }
    };
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startBtn = (Button) findViewById(R.id.startBtn);
        startBtn.setOnClickListener(this);
        counterTv = (TextView) findViewById(R.id.counterTv);
    }
 
    @Override
    public void onClick(final View view) {
        startBtn.setEnabled(false);
        countDownTimer.start();
    }
 
}

разметка активити, activity_main.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/counterTv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textAppearance="@style/TextAppearance.AppCompat.Display4" />
 
    <Button
        android:id="@+id/startBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/counterTv"
        android:layout_centerHorizontal="true"
        android:text="START" />
 
</RelativeLayout>
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
02.08.2016, 14:31  [ТС]     Перенос Java-кода на платформу Android #5
OlegJV, спасибо, почитаю!

Vladimir93, хочу перенести все.

Паблито, спасибо большое, но... я совсем не узнаю тот код. Вы реализовали свой код на основе того, что показал, или же все-таки придется все переписывать специально для Андроида?
Дело в том, что логика той программы мне полностью понятна, а ваша не совсем. Например, что за аннотации @Override? В тех программах без них обошлось.
И потом, ту программу я немножко изменил и добавил свое. Поэтому для первоначального понимания, думаю, мне было бы легче ориентироваться на тот "скелет" кода.
Паблито
2195 / 1809 / 562
Регистрация: 12.05.2014
Сообщений: 6,440
Завершенные тесты: 1
02.08.2016, 14:35     Перенос Java-кода на платформу Android #6
Цитата Сообщение от msgusa Посмотреть сообщение
Например, что за аннотации @Override?
гугл заблокирован?
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
02.08.2016, 15:01     Перенос Java-кода на платформу Android #7
Код Паблито предельно ясен с точки зрения Андроид-программирования. Если есть желание писать (переносить) программы под Андроид, придется кое-что почитать, автоматом не прокатит. Смысл (повторюсь) понятен полностью - при нажатии кнопки startBtn срабатывает метод onClick, в котором запускается таймер на 10 секунд с интервалами 1 сек (CountDownTimer(10000, 1000)). Каждую секунду (второй параметр в конструкторе CountDownTimer) срабатывает метод onTick(long l), в котором в текстовое поле выводится оставшееся время. По окончании работы таймера срабатывает метод onFinish(). Все. При желании в эти методы можно добавлять что угодно. @Override - переопределение метода родительского класса. Что еще непонятно?
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
02.08.2016, 16:43  [ТС]     Перенос Java-кода на платформу Android #8
Хотел немножко схалтурить там, где это возможно. Извините за невежество)
Да, еще я не хотел докучать вас вопросами. Ну, раз так...

В целом, интуитивно понимаю что делает программка.
Получается, что MainActivity - это как бы главный класс, с котором и начинается выполнение программы. Вопрос, можно ли менять это название как-нибудь по другому? (думаю, что нет). Тогда получается, что у каждой другой программы, будет главный класс с одним и тем же названием.

Потом я не обнаружил главного метода public static void main. Реализуется ли он как-нибудь?

В той программе, есть конструктор:
Java
1
2
3
4
5
6
7
public TimerDemo() {
        setTitle("TimerDemo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        setLayout(new FlowLayout());
        timeLabel = new JLabel();
 ......
А можно ли его и здесь как-нибудь реализовать? Скажем, что-то наподобие public MainActivity() {...}

Потом, я не вижу внутренних классов, реализующих интерфейс ActionListener. Можно ли мне как-нибудь переписать код и поместить в класс MainActivity {}, классы типа class TimerTick implements ActionListener {...} ?

И еще один нюанс, связанный с таймером. Можно ли переписать строчку кода Паблито на что-то подобное:
Java
1
timer = new Timer(1000, new TimerTick());
?

Т.е. вынести обработчик события во внутренний класс, и дальше с ним работать там.

Пока все Пожалуйста, ответьте на мои вопросы, хотя бы так: "Да", "Нет", чтобы знал, что это возможно и что я просто неправильно что-то делаю.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
02.08.2016, 17:15     Перенос Java-кода на платформу Android #9
MainActivity это типа окна в Windows. Название можно менять. Активити в программе может быть несколько. Метод onCreate это с натяжкой можно назвать конструктором. new TimerTick это ересь.
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 103
02.08.2016, 18:59     Перенос Java-кода на платформу Android #10
msgusa, MainActivity это класс наследник Activity. Название менять можно, но при создании такого класса (перемена названия класса в файле или самого файла вызовет ошибку в IDE). public static void main не нужен, в Android есть такая штука как манифест, в ней пишутся строки интент фильтра и при запуске приложения будет запущено то активити, для которого написан этот интент фильтр. Также нужно каждое запускаемое активити прописывать в манифесте, точнее то, что оно может быть запущено (специальные строки). Конструктор можно сделать для любого класса (это тот же java). Все тяжелые операции в андройд обязательно нужно помещать в другой поток.
Vladimir93
35 / 35 / 4
Регистрация: 28.06.2015
Сообщений: 136
03.08.2016, 09:52     Перенос Java-кода на платформу Android #11
msgusa,
Да все можно. Андроид практически полностью "поддерживает" Java ( синтаксис, методы, классы, конструкторы, интерфейсы), за исключением UI. Андроид имеет свой. Ну и некоторые реализации у Андроида тоже свои.
Насчет запуска тоже уже сказали, по сути, вы можете запустить любую активность (даже другого приложения), которую укажете в манифесте(важная часть Андроид разработок, изучите)

Добавлено через 6 минут
Правила для имен такие же как и Java, имя Активити должно совпадать с именем файла. Переименовали активность, переименуйте файл, и все что связно, с этой активностью
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
06.08.2016, 18:33  [ТС]     Перенос Java-кода на платформу Android #12
Программа не сработала.
Пишет, что
Java
1
error: package R does not exist
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
06.08.2016, 19:08     Перенос Java-кода на платформу Android #13
Как-то не очень содержательно. Какая программа, в каком месте не сработала?
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
06.08.2016, 19:13  [ТС]     Перенос Java-кода на платформу Android #14
Извините, я думал это очевидная ошибка.
Ошибку высвечивает здесь:
Java
1
2
3
4
        setContentView(R.layout.activity_main);
        startBtn = (Button) findViewById(R.id.startBtn);
        startBtn.setOnClickListener(this);
        counterTv = (TextView) findViewById(R.id.counterTv);
Видимо, что-то не нравится в путях. Пытаюсь разобраться, но пока по прежнему не хочет работать.

И еще. Не знаю важно ли.
Я создал новый модуль. И просто скопировал код активити и разметку активити. Чтоб хотя б посмотреть. И еще. Рядом с зеленым треугольником запуска приложения есть названия в списке. Так вот, андроид в названии "timerexample" перечеркнут красным крестиком.. Я не знаю, что это может означать.
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
06.08.2016, 19:15     Перенос Java-кода на платформу Android #15
А код разметки можно посмотреть? Есть там эти самые R.id.startBtn и R.id.counterTv?
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
06.08.2016, 19:18  [ТС]     Перенос Java-кода на платформу Android #16
А код разметки можно посмотреть? Есть там эти самые R.id.startBtn и R.id.counterTv?
Ну, вот здесь же все. От Паблито:

Перенос Java-кода на платформу Android
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
06.08.2016, 19:26     Перенос Java-кода на платформу Android #17
Ну я думал своя какая-то разметка... Попробуй Build - Clean Project, Rebuild Project...

Добавлено через 2 минуты
Как все создавалось-то? Какой шаблон AS для проекта использовался?
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
06.08.2016, 19:36  [ТС]     Перенос Java-кода на платформу Android #18
Попробуй Build - Clean Project, Rebuild Project...
Нажал, но сразу ничего не произошло. Кроме загрузки процессов..

Как все создавалось-то? Какой шаблон AS для проекта использовался?
Создавалось дня три)) Пока вник с установкой AS (кстати, нельзя ли лучше перейти в Eclipse?). Не нравятся мне все эти AVD, куча ненужных библиотек, все так громоздко.. В общем, получилось запустить сразу с телефона (уже лучше).

Создал проект, а в нем несколько (3 модуля). Один работает, другой почему-то нет. А третий - это пример Паблито. Создал модуль. Нашел код активити - удалил/вставил. Нашел код разметки - удалил/вставил.
Шаблоны все пустые (Blank).
OlegJV
102 / 102 / 29
Регистрация: 13.03.2016
Сообщений: 471
06.08.2016, 19:51     Перенос Java-кода на платформу Android #19
При создании проекта AS предлагает варианты - Basic Activity, Empty Activity и так далее. Что было выбрано?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2016, 19:52     Перенос Java-кода на платформу Android
Еще ссылки по теме:

Перенос проекта из Eclipse в Android Studio Android
Android C++ Qt и java Android отправка SMS
Компиляция кода на C++ под Android Android
Android Перенос проекта с IOS на Android
Android Перенос кода клиент/сервера на Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
msgusa
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 156
06.08.2016, 19:52  [ТС]     Перенос Java-кода на платформу Android #20
Empty Activity

После Clean Project, Rebuild Project..., чет все конкретно подвисло. Я психанул и закрыл через диспетчер задач AS)
И терь компоненты в ComponentTree приобрели восклицательные знаки. Я вообще не понимаю, что происходит.
Yandex
Объявления
06.08.2016, 19:52     Перенос Java-кода на платформу Android
Ответ Создать тему
Опции темы

Текущее время: 21:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru