Черновик: Пошаговое создание форта на java

Страница 2 из 2 Предыдущий  1, 2

Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 в Ср Фев 12, 2020 11:38 pm

Копирует текст
https://pastebin.com/byfaexHG
в файл main.xml
 
Код:
               <Button
                    android:id="@+id/btn0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="set on">
                </Button>

Здесь
android:id="@+id/btn0"  В mainActivity.java переменная будет определяться
Button btn0;
android:text="set on">  - начальный текст на кнопке будет <set on>

так как кнопка находится внутри вложенного LinearLayout,  имеющей атрибут
android:orientation="horizontal"> то она расположится по горизонтали
вместе с другими тремя кнопками.
Код:
     <TextView
  android:id="@+id/text0"
  android:text="nomesssge"

  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
  </TextView>
назначение android id,text тут такое же, как и с кнопками.
Элемент может растягиваться в разные стороны, в зависимости от размеров текста,
переводов строк итд.
В ява коде ему можно присвоить текст так,
text0.setText("ON " );

Код:
          <EditText
            android:id="@+id/edText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    </EditText>

для редактирования текста. Извлечь можно
String gtext = edText.getText().toString();
Это не очень простой элемент, почитать можно тут
http://developer.alexanderklimov.ru/android/views/edittext.php
Пожалуй перепишу main.xml сюда

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 в Ср Фев 12, 2020 11:40 pm

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center">



     <TextView
         android:id="@+id/text0"

         android:text="nomesssge"

         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
     </TextView>


    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content"

      android:orientation="horizontal">
 


               <Button
                  android:id="@+id/btn0"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set on">
               </Button>

               <Button
                  android:id="@+id/btn1"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set off">
               </Button>

              <Button
                  android:id="@+id/btn2"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="empty">

               </Button>

              <Button
                  android:id="@+id/btn3"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="empty">

               </Button>      

  </LinearLayout>
 

              <Button
                  android:id="@+id/btn4"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="get text">

               </Button>      

          <EditText
          android:id="@+id/edText"
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
       </EditText>


       <TextView
         android:id="@+id/text1"
         android:text="stat"

         android:layout_width="wrap_content"
         android:layout_height="35dp">
     </TextView>



</LinearLayout>

<!--
comments  -->

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 в Чт Фев 13, 2020 12:18 am

Это все для стандартной ориентации экрана.
Если еще требуется использовать ландшафтную(телефон на боку),
то в каталоге res надо добавить подкаталог layout-land,
с именами файлов, что и в подкатологе layout.
Эти xml файлы должны содержать те же элементы,
что и исходные файлы, только расположить их надо
оптимально для ландшафтной ориентации
Читать об этом тут
http://developer.alexanderklimov.ru/android/orientation.php

Важно! Файл, который находится в каталогах layout и layout-land не обязательно должен называться main,
его название должно совпадать с названием, указанным в activity

Об этом дальше

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 в Чт Фев 13, 2020 1:34 am

Теперь переходим в
src/main/java/<path>/MainActivity.java
копируем туда
https://pastebin.com/aUML6mpN

пожалуй проще вставить сюда и комментировать моменты.
//-------------------------------------------------------

  package com.virf.less;
//  название пакета - совпадает с src/main/java/com/virf/less
// тут находятся файлы java

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана

import android.app.Activity;
 


import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;   

import java.util.*;
import java.util.List;

 

public class MainActivity extends Activity implements OnClickListener {


  TextView text0;
  TextView text1;
    
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  Button btn4;
 
  EditText edText;
     
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);           
// Внимание  R.layout.main - здесь main название xml файла  в папке res/layout

    text0 = (TextView) findViewById(R.id.text0);    
    text1 = (TextView) findViewById(R.id.text1);  
// поиск элементов, описанных в main.xml

    btn0=(Button) findViewById(R.id.btn0);     // поиск кнопки
      btn0.setOnClickListener(this);                  //   и устанавливается обработчик
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this);  
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);   
   btn4=(Button) findViewById(R.id.btn4);
      btn4.setOnClickListener(this);  
    
   edText=(EditText)findViewById(R.id.edText);

  setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// Принудительная установка портретной ориентации
// Для ландшафтной следует писать
// setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION__LANDSCAPE);
//  Если програмно менять ориентацию экрана в процессе выполнения,
// это будет перевызывать этот метод onCreate
);

}

   
    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
        
            case R.id.btn0 :
                text0.setText("ON " );  //присваивает текстовому полю вверху значение ON  
 
            break;        
            case R.id.btn1 :
                text0.setText("OFF " );  
 
            break;            
    
            case R.id.btn4 :
                String gtext = edText.getText().toString();    // получает текст из поля ввода
                if ( ! gtext.equals("") )                         // если текст не равен ""
                    btn2.setText(gtext);                      // то этот текст присваивается 2 кнопке
 
            break;        
        }//switch
       // две кнопки btn2 и btn3 остались без обработчика
    }//click    
 
}//all

//----------------------------------------------------

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 1:11 am

Скачать можно тут
https://anonfile.com/1c9fr1b4o7/less0_7z

Это простейший проект, слегка отредактировав который, можно использовать
для тестирования компонентов, работающих с  некоторыми весьма мутными
функциями android api, прежде, чем тащить их в основной проект.

Добавим еще некоторые полезные элементы.
Работа с несколькими экранами.
Ничего сложного.
 Создаем новый проект,  назовем less1
копируем файл из main.xml старого проекта, в файл main.xml
нового проекта.
Только заменим в определение самой первой кнопки

             <Button
                  android:id="@+id/btn0"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="set on">
               </Button>
  android:text="set on">  на что то типа      android:text="startAbsolute">

Потом создаем новый файл, назовем absl.xml и копируем туда
следующий текст

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 1:24 am

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:layout_width="fill_parent"
 android:layout_height="fill_parent">
   
     <Button
         android:id="@+id/btn0"
         android:layout_x="10dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="jump">
     </Button>

     <Button
         android:id="@+id/btn1"
         android:layout_x="90dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="Jmp">
     </Button>


     <Button
         android:id="@+id/btn2"
         android:layout_x="180dp"
         android:layout_y="5dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="return">
     </Button>
    
     <Button
         android:id="@+id/btn3"
         android:layout_x="100dp"
         android:layout_y="300dp"
         android:layout_width="70dp"
         android:layout_height="70dp"
         android:text="base">
     </Button>
    
      <TextView
          android:id="@+id/text0"
          android:text="nomesssge"
          android:layout_x="10dp"
          android:layout_y="270dp"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
      </TextView>

           <EditText
            android:id="@+id/edText"
            android:layout_width="match_parent"
            android:layout_height="70dp"
          android:layout_x="10dp"
          android:layout_y="120dp">
        </EditText>

      <TextView
          android:id="@+id/text1"
          android:text="stat"
          android:layout_x="10dp"
          android:layout_y="90dp"
          android:layout_width="wrap_content"
          android:layout_height="35dp">
      </TextView>   
        
</AbsoluteLayout>

Тут вместо <LinearLayout используется AbsoluteLayout>
  Здесь используется прямое указание координат элементов,
а не относительное их расположение. Элементы можно программно
перемещать в процессе работы, что позволяет настраивать экран
хирургически, чтобы нужные кнопки были отжаты до того,
как прибор вытащат из кармана.

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 1:54 am

Что бы создать новый экран, нужно прописать новое activity в манифесте

отредактируем файл app/src/main/androidManifest.xml

В содержимое файла

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.examp.abs" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:resizeableActivity = "true">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

 

    </application>
</manifest>

добавим строчки

        <activity
        android:name=".abslayout">
    </activity>

Получим
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.examp.abs" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:resizeableActivity = "true">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
        android:name=".abslayout">
    </activity>
 

    </application>

</manifest>

Здесь ".abslayout"   имя класса   abslayout.java, который будет обрабатывать
экран.
 Каждый экран должен быть прописан в манифесте обязательно.

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 2:24 am

Копируем в главный класс,
(в aide называется обычно MainActivity.java и первый прорисывается в
манифесте с атрибутом <action android:name="android.intent.action.MAIN")


package com.examp.abs;  // эту строчку не копируем -  оставляем такой,
                                          // какой сделала среда программирования.

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;
//добавленные api
import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

import android.app.Activity;

 
import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

 
public class MainActivity extends Activity implements OnClickListener {

  TextView text0;
  TextView text1;
   
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  Button btn4;
 
  EditText edText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    text0 = (TextView) findViewById(R.id.text0);   
    text1 = (TextView) findViewById(R.id.text1); 

    btn0=(Button) findViewById(R.id.btn0);
      btn0.setOnClickListener(this);
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this); 
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);  
   btn4=(Button) findViewById(R.id.btn4);
      btn4.setOnClickListener(this); 
   
   edText=(EditText)findViewById(R.id.edText);


  setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

  
    }//oncreate
 
  
    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
       
            case R.id.btn0 :
                         Intent intent = new Intent(this, abslayout.class);
                          startActivity(intent);
                // тут  abslayout.class, имя вызываемого класса, соответствующий
              // abslayout.java
           break;       
 
 
        }//switch

    }//click   
 
 
    @Override
    protected void onPause() {  

        super.onPause();
    }

     @Override
    protected void onResume() { 

        super.onResume();       
    }

    @Override
     protected void onDestroy() {
        super.onDestroy();
        }

 
}//all

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 2:51 am

Теперь создаем файл abslayout.java в той же папке, где
MainActivity.java и пишем туда

package com.examp.abs;  // тут тоже, что и в MaiActivity

import android.app.*;
import android.os.*;
import android.os.Bundle;
import android.os.Environment;
import android.util.*;

import android.content.pm.ActivityInfo; //  тут нужен для ориентации экрана
import android.content.Intent;
import android.content.Context;

import android.app.Activity;
 
import android.view.KeyEvent.Callback ;

import android.view.*;  //KeyEvent SurfaceHolder; SurfaceView;

import android.view.View;
import android.view.View.*;  //OnClickListener

import android.widget.*;  

import java.util.*;
import java.util.List;

public class abslayout  extends Activity implements OnClickListener  {

  TextView text0;
  TextView text1;
   
  Button btn0;
  Button btn1;
  Button btn2;
  Button btn3;
  EditText edText;
// названия элементов похожи на те, что  и в MainActivity, но это чтоб удобней
// было копипастить, на самом деле они должны соответствовать
// принадлежащему этому активити xml файлу

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.absl);  // ссылка absl.xml

    text0 = (TextView) findViewById(R.id.text0);   
    text1 = (TextView) findViewById(R.id.text1); 

    btn0=(Button) findViewById(R.id.btn0);
      btn0.setOnClickListener(this);
    btn1=(Button) findViewById(R.id.btn1);
      btn1.setOnClickListener(this); 
    btn2=(Button) findViewById(R.id.btn2);
      btn2.setOnClickListener(this);
   btn3=(Button) findViewById(R.id.btn3);
      btn3.setOnClickListener(this);   

   edText=(EditText)findViewById(R.id.edText);
    }

    @Override
    public void onClick(View v) {
        // по id определеяем кнопку, вызвавшую этот обработчик
        switch (v.getId()) {
       
            case R.id.btn0 :
                btn3.setText("AAA" ); 
                AbsoluteLayout.LayoutParams OBJ = new
                             AbsoluteLayout.LayoutParams(70,70,200,400);
              btn3.setLayoutParams(OBJ);
            // AbsoluteLayout.LayoutParams(width,height,X-position,Y-position)
            //3 кнопке присваиваются размеры 70 на 70
          // устанавливается в позицию 200 400 и называют ААА
             break;       
            case R.id.btn1 :
                btn3.setText("OOO" ); 
                AbsoluteLayout.LayoutParams OBJi = new
                       AbsoluteLayout.LayoutParams(70,70,100,300);
                  btn3.setLayoutParams(OBJi); 
            break;           
 
        }//switch

    }//click   
 
}//all

здесь демонстрируется перемещение кнопок

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 12:08 pm

Теперь уберем виртуальную клавиатуру, которая всплывает,
когда устройство переключается на экран, содержащий
элемент EditText
  Для этого добавим в заголовок xml файла две строчки

Код:
          android:focusable="true"
          android:focusableInTouchMode="true"
Получаем

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
    android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:focusable="true"
        android:focusableInTouchMode="true"
 >

 и

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:focusable="true"
    android:focusableInTouchMode="true"   
    >
 Это убирает фокус с элемента EditText

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор vikt144 Вчера в 12:29 pm

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

Создаем файл txtfield.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
 
    >
 
      

      <TextView
          android:id="@+id/text0"
          android:text="nomesssge"

          android:layout_width="wrap_content"
          android:layout_height="wrap_content">
      </TextView>
     
     <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
 
        android:orientation="horizontal">
   


                <Button
                    android:id="@+id/btn0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="set on">
                </Button>

                <Button
                    android:id="@+id/btn1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="set off">
                </Button>

               <Button
                    android:id="@+id/btn2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="empty">
 
                </Button> 
       
     </LinearLayout>

 
            <EditText
            android:id="@+id/edText"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:hint="введите текст сюда"
        > </EditText>   
</LinearLayout>     

тут
    android:focusable="true"
    android:focusableInTouchMode="true"  
не вставляем, так как наоборот заинтересованы, что бы сразу
редактировать текст.

Так же ввели подсказку в EditText
Код:
           android:hint="введите текст сюда"
которая будет выделять текст сереньким


В манифест внесем информацию о новом activity .

        <activity
        android:name=".TextFieldTest">
    </activity>

Больше информации о TextEdit , а так же как обрабатывать кнопки виртуальной клавиатуры

http://developer.alexanderklimov.ru/android/views/edittext.php

vikt144

Сообщения : 75
Дата регистрации : 2017-03-29

Вернуться к началу Перейти вниз

Черновик: Пошаговое создание форта на java - Страница 2 Empty Re: Черновик: Пошаговое создание форта на java

Сообщение автор Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Страница 2 из 2 Предыдущий  1, 2

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения