안드로이드 11/13 정리
2025. 11. 13. 16:22ㆍ2025 상,하반기 전공과목/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()'2025 상,하반기 전공과목 > 2025 안드로이드 개발 정리' 카테고리의 다른 글
| 안드로이드 12/11 기말고사 대비 (1) | 2025.12.11 |
|---|---|
| 안드로이드 14주차 11/20 사용자정의 대화상자 (0) | 2025.12.04 |