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

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

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

Студворк — интернет-сервис помощи студентам
Всем доброе утро!
Есть неплохой код.
Но мне оказалось этого мало и хочу перенести на платформу Android с помощью Android Studio.
Подскажите пожалуйста как перенести?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.08.2016, 08:59
Ответы с готовыми решениями:

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

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

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

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

Добавлено через 21 секунду
Или CountdownTimer
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
02.08.2016, 11:27
А что вы хотите перенести, таймер, программу? Для таймера у Андроида есть свои методы. Код перенести можно, а интерфейс нужно новый делать.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.08.2016, 12:08
Лучший ответ Сообщение было отмечено 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  [ТС]
OlegJV, спасибо, почитаю!

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

Паблито, спасибо большое, но... я совсем не узнаю тот код. Вы реализовали свой код на основе того, что показал, или же все-таки придется все переписывать специально для Андроида?
Дело в том, что логика той программы мне полностью понятна, а ваша не совсем. Например, что за аннотации @Override? В тех программах без них обошлось.
И потом, ту программу я немножко изменил и добавил свое. Поэтому для первоначального понимания, думаю, мне было бы легче ориентироваться на тот "скелет" кода.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.08.2016, 14:35
Цитата Сообщение от msgusa Посмотреть сообщение
Например, что за аннотации @Override?
гугл заблокирован?
1
 Аватар для OlegJV
104 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 474
02.08.2016, 15:01
Код Паблито предельно ясен с точки зрения Андроид-программирования. Если есть желание писать (переносить) программы под Андроид, придется кое-что почитать, автоматом не прокатит. Смысл (повторюсь) понятен полностью - при нажатии кнопки 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  [ТС]
Хотел немножко схалтурить там, где это возможно. Извините за невежество)
Да, еще я не хотел докучать вас вопросами. Ну, раз так...

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

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

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

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

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

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

После Clean Project, Rebuild Project..., чет все конкретно подвисло. Я психанул и закрыл через диспетчер задач AS)
И терь компоненты в ComponentTree приобрели восклицательные знаки. Я вообще не понимаю, что происходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2016, 19:52
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru