안드로이드 11/13 정리

2025. 11. 13. 16:222025 상,하반기 전공과목/2025 안드로이드 개발 정리

반응형

먼저 xml이용해서 만듬

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/baseLayout">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="오른쪽 위 메뉴 버튼을 누르세요."
        android:textSize="25sp"
        android:layout_gravity="center"/>

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="이건 버튼"
        android:layout_gravity="center"/>
</LinearLayout>

package com.example.jsy_1113;

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

import android.graphics.Color;
import android.os.Bundle;
import android.view.MenuInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
    LinearLayout baseLayout;
    Button btn1;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main04);
        setTitle("배경색 바꾸기");

        baseLayout = findViewById(R.id.baseLayout);
        btn1 = findViewById(R.id.btn1);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater mInflater = getMenuInflater();
        mInflater.inflate(R.menu.menu1, menu);
        return true;
    }

    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        if (item.getItemId() == R.id.itemRed) {
            baseLayout.setBackgroundColor(Color.RED);
            return true;
        } else if (item.getItemId() == R.id.itemGreen) {
            baseLayout.setBackgroundColor(Color.GREEN);
            return true;
        } else if (item.getItemId() == R.id.itemBlue) {
            baseLayout.setBackgroundColor(Color.BLUE);
            return true;
        }
        return false;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/itemRed"
        android:title="배경색(빨강)">
    </item>
    <item
        android:id="@+id/itemGreen"
        android:title="배경색(초록)">
    </item>
    <item
        android:id="@+id/itemBlue"
        android:title="배경색(파랑)">
    </item>
    <item
        android:title="버튼 변경">
        <menu>
            <item
                android:id="@+id/subRotate"
                android:title="버튼 45도 회전">
            </item>
            <item
                android:id="@+id/subSize"
                android:title="버튼 2배 확대">
            </item>
        </menu>
    </item>

</menu>

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>

에서 .NoActionBar를 삭제해서
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>
이렇게 코드를 만든다

그리고 이건 java코드만 사용해서 만드는것

main코드와

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>

에서 .NoActionBar를 삭제해서
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>
이렇게 코드를 만든다

이것만 변경하고

package com.example.jsy_new_1_13;

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

import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    LinearLayout baseLayout;
    Button btn1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main04);   // 네 레이아웃 이름
        setTitle("배경색 바꾸기");

        baseLayout = findViewById(R.id.baseLayout);
        btn1 = findViewById(R.id.btn1);
    }

    // ★★ Java 코드로 메뉴 생성 ★★
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);

        // 그룹ID, 항목ID, 순서, 제목
        menu.add(0, 1, 0, "배경색(빨강)");
        menu.add(0, 2, 0, "배경색(초록)");
        menu.add(0, 3, 0, "배경색(파랑)");

        // 서브메뉴 생성
        SubMenu sMenu = menu.addSubMenu("버튼 변경 >>");
        sMenu.add(0, 4, 0, "버튼 45도 회전");
        sMenu.add(0, 5, 0, "버튼 2배 확대");

        return true;
    }

    // ★★ 메뉴 클릭 이벤트 처리 ★★
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {

        switch (item.getItemId()) {
            case 1: // 빨강
                baseLayout.setBackgroundColor(Color.RED);
                return true;

            case 2: // 초록
                baseLayout.setBackgroundColor(Color.GREEN);
                return true;

            case 3: // 파랑
                baseLayout.setBackgroundColor(Color.BLUE);
                return true;

            case 4: // 버튼 회전
                btn1.setRotation(45);
                return true;

            case 5: // 버튼 확대
                btn1.setScaleX(2);
                btn1.setScaleY(2);
                return true;
        }

        return false;
    }
}
MainActivity코드만 바꿔준다

새로 이번에는 그래픽 프로젝트를 만든다

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    } //onCreate()

    public class CustomView extends View {
        public CustomView(Context context) {
            super(context);
        } // 생성자

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            canvas.drawColor(Color.CYAN);
        } //onDraw()
    } //CustomView()
} //Activity()

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight.NoActionBar">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>

에서 .NoActionBar를 삭제해서
<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.Jsy_1113" parent="Theme.Material3.DayNight">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.Jsy_1113" parent="Base.Theme.Jsy_1113" />
</resources>
이렇게 코드를 만든다

import android.graphics.Paint; 추가

 

package com.example.graphic_a;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;     // ★ 반드시 추가!
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    } //onCreate()

    public class CustomView extends View {

        public CustomView(Context context) {
            super(context);
        } // 생성자

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            canvas.drawColor(Color.CYAN);

            Paint Pnt = new Paint();
            Pnt.setColor(Color.RED);

            canvas.drawRect(120, 100, 320, 500, Pnt);
            canvas.drawCircle(600, 300, 200, Pnt);
            canvas.drawCircle(200, 900, 200, Pnt);
        } //onDraw()
    } //CustomView()
} //Activity()

package com.example.graphic_a;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;     // ★ 반드시 추가!
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    } //onCreate()

    public class CustomView extends View {

        public CustomView(Context context) {
            super(context);
        } // 생성자

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            canvas.drawColor(Color.CYAN);

            Paint Pnt = new Paint();
            Pnt.setColor(Color.RED);

            //canvas.drawRect(120, 100, 320, 500, Pnt);
            //canvas.drawCircle(600, 300, 200, Pnt);
            //canvas.drawCircle(200, 900, 200, Pnt);

            //canvas.drawRect(120,100,320,500,Pnt);
            canvas.drawCircle(250,400,200,Pnt);

            Pnt.setStyle(Paint.Style.STROKE);
            Pnt.setStrokeWidth(10);
            canvas.drawCircle(700,400,200,Pnt);
        } //onDraw()
    } //CustomView()
} //Activity()

package com.example.graphic_a;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;     // ★ 반드시 추가!
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    } //onCreate()

    public class CustomView extends View {

        public CustomView(Context context) {
            super(context);
        } // 생성자

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            canvas.drawColor(Color.CYAN);

            Paint Pnt = new Paint();
            Pnt.setColor(Color.RED);

            //canvas.drawRect(120, 100, 320, 500, Pnt);
            //canvas.drawCircle(600, 300, 200, Pnt);
            //canvas.drawCircle(200, 900, 200, Pnt);

            //canvas.drawRect(120,100,320,500,Pnt);
            canvas.drawCircle(250,400,200,Pnt);
            Pnt.setColor(Color.MAGENTA); // 여기 추가
            Pnt.setStyle(Paint.Style.STROKE);
            Pnt.setStrokeWidth(10);
            canvas.drawCircle(700,400,200,Pnt);
        } //onDraw()
    } //CustomView()
} //Activity()

package com.example.graphic_a;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;     // ★ 반드시 추가!
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new CustomView(this));
    } //onCreate()

    public class CustomView extends View {

        public CustomView(Context context) {
            super(context);
        } // 생성자

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);

            canvas.drawColor(Color.CYAN);

            Paint Pnt = new Paint();
            Pnt.setColor(Color.RED);

            //canvas.drawRect(120, 100, 320, 500, Pnt);
            //canvas.drawCircle(600, 300, 200, Pnt);
            //canvas.drawCircle(200, 900, 200, Pnt);

            //canvas.drawRect(120,100,320,500,Pnt);
            canvas.drawCircle(250,400,200,Pnt);
            Pnt.setColor(Color.MAGENTA);
            Pnt.setStyle(Paint.Style.STROKE);
            Pnt.setStrokeWidth(10);
            canvas.drawCircle(700,400,200,Pnt);

            // 굵은 선 (둥근 끝)
            Pnt.setStrokeWidth(30);
            Pnt.setStrokeCap(Paint.Cap.ROUND);
            canvas.drawLine(50,700,990,700,Pnt);

            // 굵은 선 (각진 끝)
            Pnt.setStrokeCap(Paint.Cap.SQUARE);
            canvas.drawLine(50,800,990,800,Pnt);

            //사각형
            Pnt.setColor(Color.BLUE);
            Pnt.setStrokeWidth(20);
            Pnt.setStyle(Paint.Style.STROKE);

            // 첫 번째 사각형 (MITER)
            Pnt.setStrokeJoin(Paint.Join.MITER);
            canvas.drawRect(50,900,250,1100,Pnt);

            // 두 번째 사각형 (BEVEL)
            Pnt.setStrokeJoin(Paint.Join.BEVEL);
            canvas.drawRect(350,900,550,1100,Pnt);

            // 원 2개 (초록색/노란색)
            Pnt.setColor(Color.GREEN);
            Pnt.setStrokeWidth(20);
            Pnt.setAntiAlias(true);
            Pnt.setStyle(Paint.Style.FILL);
            canvas.drawCircle(110,1300,100,Pnt);

            Pnt.setColor(Color.YELLOW);
            Pnt.setStyle(Paint.Style.FILL);
            canvas.drawCircle(400,1300,100,Pnt);

            Pnt.setColor(Color.GREEN);
            Pnt.setStyle(Paint.Style.STROKE);
            canvas.drawCircle(400,1300,100,Pnt);
        } //onDraw()
    } //CustomView()
} //Activity()