반응형

Option Menu

 

 

1. Create Option menu 

Android Resource Directory

 

Resource type : menu -> Select OK

 

menu
Menu Resource File
File Name : test_menu -> OK

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

</menu>

 

 

 

 

2. Create Menu Item 

 

test_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/test_1"
        android:title="Test1">
    </item>

    <item
        android:id="@+id/test_2"
        android:title="Test2">
    </item>

    <item
        android:id="@+id/test_3"
        android:title="Test3">
    </item>
</menu>

 

MainActivity.java

code -> override methods

 

onCreateOptionsMenu

onCreate OptionsMenu method 생성  ( 직접 작성해도 됨 )

ackage com.example.project7_optionmenu;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
	
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return super.onCreateOptionsMenu(menu);
    }
}

 

코드 추가 ( xml, java 연결 )

...
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
		
        // 코드 추가
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.test_menu, menu);
		//
        return super.onCreateOptionsMenu(menu);
    }
...

 

 

2. Event 

onOptionsItemSelected

 

...
    // option menu event method
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch(item.getItemId())
        {
            case R.id.test_1:
                Toast.makeText(getApplicationContext(), "Test1", Toast.LENGTH_LONG).show();
            case R.id.test_2:
                Toast.makeText(getApplicationContext(), "Test2", Toast.LENGTH_LONG).show();
            case R.id.test_3:
                Toast.makeText(getApplicationContext(), "Test3", Toast.LENGTH_LONG).show();
        }

        return super.onOptionsItemSelected(item);
    }
    ...

 

 

 

 

 

 

 

full main java code 

package com.example.project7_optionmenu;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.test_menu, menu);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch(item.getItemId())
        {
            case R.id.test_1:
                Toast.makeText(getApplicationContext(), "Test1", Toast.LENGTH_LONG).show();
            case R.id.test_2:
                Toast.makeText(getApplicationContext(), "Test2", Toast.LENGTH_LONG).show();
            case R.id.test_3:
                Toast.makeText(getApplicationContext(), "Test3", Toast.LENGTH_LONG).show();
        }

        return super.onOptionsItemSelected(item);
    }
}

 

developer.android.com/guide/topics/ui/menus?hl=ko

 

메뉴  |  Android 개발자  |  Android Developers

메뉴는 수많은 유형의 애플리케이션에서 사용되는 보편적인 사용자 인터페이스 구성 요소입니다. 친숙하고 일관적인 사용자 경험을 제공하기 위해 Menu API를 사용하여 활동에서 사용자 작업과

developer.android.com

 

 

728x90
반응형
반응형

xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <EditText
            android:id="@+id/Edit1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="숫자1">
        </EditText>

        <EditText
            android:id="@+id/Edit2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:hint="숫자2">
        </EditText>

        <Button
            android:id="@+id/BtnAdd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="더하기"
            android:onClick="AddClick">

        </Button>

        <Button
            android:id="@+id/BtnSub"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="뺴기"
            android:onClick="SubClick">

        </Button>

        <Button
            android:id="@+id/BtnMulti"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="곱하기"
            android:onClick="MultiClick">

        </Button>

        <Button
            android:id="@+id/BtnDiv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="10dp"
            android:text="나누기"
            android:onClick="DivClick">

        </Button>

        <TextView
            android:id="@+id/TextResult"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30dp"
            android:textColor="#FF0000"
            android:text="계산 결과 : "
            >
        </TextView>


    </LinearLayout>


</LinearLayout>

java

package com.example.homework2;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText edit1, edit2;
    TextView textResult;
    String num1, num2, tmp;
    Integer result;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("간단한 계산기");


        edit1 = (EditText)findViewById(R.id.Edit1);
        edit2 = (EditText)findViewById(R.id.Edit2);

        textResult = (TextView)findViewById(R.id.TextResult);

    }

    // 덧셈 method
    public void AddClick(View target)
    {
        num1 = edit1.getText().toString();
        num2 = edit2.getText().toString();

        if ((isInteger(num1) & isInteger(num2))==1)
        {
            result = Integer.parseInt(num1) + Integer.parseInt(num2);
            tmp = "계산 결과 : " + result.toString();
            textResult.setText(tmp);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "No Number", Toast.LENGTH_LONG).show();
        }

    }

    // 뺄셈 method
    public void SubClick(View target)
    {
        num1 = edit1.getText().toString();
        num2 = edit2.getText().toString();

        if ((isInteger(num1) & isInteger(num2))==1)
        {
            result = Integer.parseInt(num1) - Integer.parseInt(num2);
            tmp = "계산 결과 : " + result.toString();
            textResult.setText(tmp);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "No Number", Toast.LENGTH_LONG).show();
        }
    }

    // 곱셈 method
    public void MultiClick(View target)
    {
        num1 = edit1.getText().toString();
        num2 = edit2.getText().toString();

        if ((isInteger(num1) & isInteger(num2))==1)
        {
            result = Integer.parseInt(num1) * Integer.parseInt(num2);
            tmp = "계산 결과 : " + result.toString();
            textResult.setText(tmp);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "No Number", Toast.LENGTH_LONG).show();
        }
    }

    // 나눗셈 method
    public void DivClick(View target)
    {
        num1 = edit1.getText().toString();
        num2 = edit2.getText().toString();

        if ((isInteger(num1) & isInteger(num2))==1)
        {
            result = Integer.parseInt(num1) / Integer.parseInt(num2);
            tmp = "계산 결과 : " + result.toString();
            textResult.setText(tmp);
        }
        else
        {
            Toast.makeText(getApplicationContext(), "No Number", Toast.LENGTH_LONG).show();
        }
    }

    // integer type method
    static int isInteger(String s) {
        try {
            Integer.parseInt(s);
            return 1;
        } catch(NumberFormatException e) {
            return 0;
        }
    }

}

 

 

 

 

EditText

// EditText
EditText edit = (EditText)findViewById(R.id.Edit);

// return string 
edit.getText().toString();

 

 

TextView

// TextView
text = (TextView)findViewById(R.id.Text);

text.setText(edittext.getText());

 

 

developer.android.com/reference/android/widget/EditText

 

EditText  |  Android 개발자  |  Android Developers

 

developer.android.com

developer.android.com/reference/android/widget/TextView

 

TextView  |  Android 개발자  |  Android Developers

 

developer.android.com

 

728x90
반응형
반응형

LinearLayout 을 잘만 사용해도 어느 정도 디자인을 꾸밀 수 있다.

 

1. LinearLayout xml 생성

<LinearLayout xmlns : android = "http://schemas.android.com/apk/res/android"
   android : layout_width = "match_parent"
   android : layout_height = "match_parent"
   android : paddingLeft = "16dp"
   android : paddingRight = "16dp"
   android : orientation = "horizontal"
   android : gravity = "center">

   <!-여기에 다른 위젯 또는 레이아웃 태그를 포함합니다. 이것들은 고려됩니다
           선형 레이아웃의 "자식보기"또는 "자식"->

 </ LinearLayout>

 

XML attributes

 

 

2. LinearLayout 안에 LinearLayout 넣기

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#FF0000">
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#0000FF">
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#008000">
        </LinearLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#FFFF00"
            >
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:background="#0000FF"
            >
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="#008000"
            >
        </LinearLayout>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:paddingTop="5dp"
            android:paddingBottom="5dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:text="Button1"
            />

        <ImageView
            android:layout_weight="1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/img">
        </ImageView>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/txt1"
            android:layout_width="126dp"
            android:layout_height="match_parent"
            android:text="Hello"
            android:textColor="#FF0000"
            android:textSize="45dp">

        </TextView>

        <TextView
            android:id="@+id/txt2"
            android:layout_width="150dp"
            android:layout_height="match_parent"
            android:text="World"
            android:textColor="#0000FF"
            android:textSize="40dp">

        </TextView>

    </LinearLayout>
</LinearLayout>

 

developer.android.com/guide/topics/ui/layout/linear?hl=ko

 

선형 레이아웃  |  Android 개발자  |  Android Developers

LinearLayout은 세로 또는 가로의 단일 방향으로 모든 하위 요소를 정렬하는 뷰 그룹입니다. LinearLayout이 서로 스택된 상태에서 레이아웃 방향을 지정할 수 있기 때문에, 세로 목록에는 행 하나당 하

developer.android.com

 

728x90
반응형
반응형

Button

 

사용자가 버튼을 누를 때 발생하는 동작을 전달하는 텍스트 또는 아이콘 (또는 텍스트와 아이콘 모두)으로 구성

 

 

 

Button XML

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    ... />

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/button_icon"
    android:contentDescription="@string/button_icon_desc"
    ... />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:drawableLeft="@drawable/button_icon"
    ... />

 

 

 

 

 

Button Event

<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

 

 

1. android:onClick ( recommended )

 

/** Called when the user touches the button */
public void sendMessage(View view) {
    // Do something in response to button click
}

 

2. OnClickListener

Button button = (Button) findViewById(R.id.button_send);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // Do something in response to button click
    }
});

 

 

developer.android.com/guide/topics/ui/controls/button#java

 

Buttons  |  Android 개발자  |  Android Developers

A button consists of text or an icon (or both text and an icon) that communicates what action occurs when the user touches it. Depending on whether you want a button with text, an icon, or both, you can create the button in your layout in three ways: With

developer.android.com

 

 

 

 

(번외)

LongClick Event

 

버튼을 길게 눌렀을 때, Event 발생

 

        Button button = (Button) findViewById(R.id.button_send);
        button.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
            	// Do something in response to button click
                
                return true;
                // 이벤트 처리를 못했을 경우 false return
            }
        });
728x90
반응형
반응형

1. Toast Message : 안드로이드 팝업 메세지. ( 디버깅용으로 많이 사용 )

 

Context context = getApplicationContext();  // Context 
CharSequence text = "Hello toast!";  // 표시되는 메세지 
int duration = Toast.LENGTH_SHORT;  // 화면이 표시되는 주기 

Toast toast = Toast.makeText(context, text, duration);  // Toast 객체 정의
toast.show();  // show 

 

Default : 메시지 알림은 화면 하단에 표시되며 가로로 가운데

Gravity Method : 상수, x-좌표 오프셋 및 y-좌표 오프셋의 세 가지 매개변수를 사용.

 

예를 들어, 토스트 메시지를 왼쪽 상단에 표시하려면 Gravity를 다음과 같이 설정하면 됩니다.

 

toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);

 

 

 

 

 

2. Logcat : 앱과 관련된 로그 출력. ( System.out.print 용처럼 사용,  디버깅용)

 

 

private static final String TAG = "MyActivity";
...
String message = "Hello";
Log.d(TAG, message);

 

 

 

developer.android.com/guide/topics/ui/notifiers/toasts

 

토스트 메시지 개요  |  Android 개발자  |  Android Developers

토스트 메시지는 작은 팝업으로 작업에 관한 간단한 피드백을 제공합니다. 메시지에 필요한 공간만 차지하며 진행 중인 활동은 그대로 표시되고 상호작용도 유지됩니다. 토스트 메시지는 시간

developer.android.com

developer.android.com/studio/debug/am-logcat?hl=ko

 

Logcat을 이용한 로그 작성 및 보기  |  Android 개발자  |  Android Developers

Android 스튜디오에서 Logcat 창에 시스템 메시지를 표시하는 방법을 알아보세요.

developer.android.com

 

728x90
반응형

+ Recent posts