Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
1

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

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

Author24 — интернет-сервис помощи студентам
Всем доброе утро!
Есть неплохой код.
Но мне оказалось этого мало и хочу перенести на платформу Android с помощью Android Studio.
Подскажите пожалуйста как перенести?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2016, 08:59
Ответы с готовыми решениями:

Перенос кода из java на Android
Хочу переделать игру на андроид, не знаю одно, как перенести эти переменные. public class MyClass...

Перенос кода на 64-битную платформу
Пытаюсь разобраться с проблемами на переноса кода на 64битную платформу. В сети встретил вот такую...

JAVA перенос на android
Как на Android реализовать слушателя EditText (в данном случае это spinner). Нужно чтобы в...

Перенос кода клиент/сервера на Android
Здравствуйте =) Начал изучать андроид и возникла такая проблема, а именно перенос Java кода в код...

28
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 10:01 2
Прочитать про класс Timer в андроид.

Добавлено через 21 секунду
Или CountdownTimer
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 654
02.08.2016, 11:27 3
А что вы хотите перенести, таймер, программу? Для таймера у Андроида есть свои методы. Код перенести можно, а интерфейс нужно новый делать.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.08.2016, 12:08 4
Лучший ответ Сообщение было отмечено msgusa как решение

Решение

делов на 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>
1
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
02.08.2016, 14:31  [ТС] 5
OlegJV, спасибо, почитаю!

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

Паблито, спасибо большое, но... я совсем не узнаю тот код. Вы реализовали свой код на основе того, что показал, или же все-таки придется все переписывать специально для Андроида?
Дело в том, что логика той программы мне полностью понятна, а ваша не совсем. Например, что за аннотации @Override? В тех программах без них обошлось.
И потом, ту программу я немножко изменил и добавил свое. Поэтому для первоначального понимания, думаю, мне было бы легче ориентироваться на тот "скелет" кода.
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.08.2016, 14:35 6
Цитата Сообщение от msgusa Посмотреть сообщение
Например, что за аннотации @Override?
гугл заблокирован?
1
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 15:01 7
Код Паблито предельно ясен с точки зрения Андроид-программирования. Если есть желание писать (переносить) программы под Андроид, придется кое-что почитать, автоматом не прокатит. Смысл (повторюсь) понятен полностью - при нажатии кнопки startBtn срабатывает метод onClick, в котором запускается таймер на 10 секунд с интервалами 1 сек (CountDownTimer(10000, 1000)). Каждую секунду (второй параметр в конструкторе CountDownTimer) срабатывает метод onTick(long l), в котором в текстовое поле выводится оставшееся время. По окончании работы таймера срабатывает метод onFinish(). Все. При желании в эти методы можно добавлять что угодно. @Override - переопределение метода родительского класса. Что еще непонятно?
1
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
02.08.2016, 16:43  [ТС] 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());
?

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

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

Добавлено через 6 минут
Правила для имен такие же как и Java, имя Активити должно совпадать с именем файла. Переименовали активность, переименуйте файл, и все что связно, с этой активностью
0
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
06.08.2016, 18:33  [ТС] 12
Программа не сработала.
Пишет, что
Java
1
error: package R does not exist
0
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:08 13
Как-то не очень содержательно. Какая программа, в каком месте не сработала?
0
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
06.08.2016, 19:13  [ТС] 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" перечеркнут красным крестиком.. Я не знаю, что это может означать.
0
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:15 15
А код разметки можно посмотреть? Есть там эти самые R.id.startBtn и R.id.counterTv?
0
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
06.08.2016, 19:18  [ТС] 16
А код разметки можно посмотреть? Есть там эти самые R.id.startBtn и R.id.counterTv?
Ну, вот здесь же все. От Паблито:

https://www.cyberforum.ru/post9422264.html
0
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:26 17
Ну я думал своя какая-то разметка... Попробуй Build - Clean Project, Rebuild Project...

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

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

Создал проект, а в нем несколько (3 модуля). Один работает, другой почему-то нет. А третий - это пример Паблито. Создал модуль. Нашел код активити - удалил/вставил. Нашел код разметки - удалил/вставил.
Шаблоны все пустые (Blank).
0
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
06.08.2016, 19:51 19
При создании проекта AS предлагает варианты - Basic Activity, Empty Activity и так далее. Что было выбрано?
0
6 / 6 / 3
Регистрация: 29.06.2011
Сообщений: 183
06.08.2016, 19:52  [ТС] 20
Empty Activity

После Clean Project, Rebuild Project..., чет все конкретно подвисло. Я психанул и закрыл через диспетчер задач AS)
И терь компоненты в ComponentTree приобрели восклицательные знаки. Я вообще не понимаю, что происходит.
0
06.08.2016, 19:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2016, 19:52
Помогаю со студенческими работами здесь

Перенос кода с java на с++
Всем привет я навичок помогите перевести этот код с java на с++ import java.util.Random; ...

Перенос строки кода с JAVA (biginteger.add(ONE).shiftRight(1) на C#
BigInteger divisor; BigInteger d = divisor.add(ONE).shiftRight(1) Можете подсказать, в каком...

Построение unity проекта под платформу android?
Как сделать что бы после сборки проекта в unity под android формировался не apk файл а sln решение...

Преобразование голоса в текст с цифрами в Unity под платформу Android
Здраствуйте помогите с написанием скрипта для записывания голоса и приоброзование его в текст для...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru