프로그래밍/XML | JAVA
[안드로이드 스튜디오] 고급 위젯과 이벤트 처리
Codey
2024. 3. 26. 09:32
버튼을 누를때마다 배경 색상 변경
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageView
android:id="@+id/clothingImageView"
android:layout_width="match_parent"
android:layout_height="252dp"
android:layout_marginTop="4dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/boy_img" />
<Button
android:id="@+id/colorButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="79dp"
android:text="Color 1"
app:layout_constraintEnd_toStartOf="@+id/colorButton2"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/clothingImageView" />
<Button
android:id="@+id/colorButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:text="Color 2"
app:layout_constraintBaseline_toBaselineOf="@+id/colorButton1"
app:layout_constraintEnd_toStartOf="@+id/colorButton3"
app:layout_constraintStart_toEndOf="@+id/colorButton1" />
<Button
android:id="@+id/colorButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:text="Color 3"
app:layout_constraintEnd_toStartOf="@+id/colorButton4"
app:layout_constraintStart_toEndOf="@+id/colorButton2"
app:layout_constraintTop_toTopOf="@+id/colorButton2" />
<Button
android:id="@+id/colorButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Color 4"
app:layout_constraintBaseline_toBaselineOf="@+id/colorButton3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/colorButton3" />
</androidx.constraintlayout.widget.ConstraintLayout>
JAVA
package com.example.a05_14;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ImageView clothingImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clothingImageView = findViewById(R.id.clothingImageView);
Button colorButton1 = findViewById(R.id.colorButton1);
Button colorButton2 = findViewById(R.id.colorButton2);
Button colorButton3 = findViewById(R.id.colorButton3);
Button colorButton4 = findViewById(R.id.colorButton4);
colorButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeClothingColor(Color.RED);
}
});
colorButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeClothingColor(Color.BLUE);
}
});
colorButton3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeClothingColor(Color.GREEN);
}
});
colorButton4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeClothingColor(Color.YELLOW);
}
});
}
private void changeClothingColor(int color) {
clothingImageView.setBackgroundColor(color);
}
}
람다식 사용
JAVA
package com.example.a05_14;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.Button;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private ImageView clothingImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clothingImageView = findViewById(R.id.clothingImageView);
Button colorButton1 = findViewById(R.id.colorButton1);
Button colorButton2 = findViewById(R.id.colorButton2);
Button colorButton3 = findViewById(R.id.colorButton3);
Button colorButton4 = findViewById(R.id.colorButton4);
colorButton1.setOnClickListener(view -> changeClothingColor(Color.RED));
colorButton2.setOnClickListener(view -> changeClothingColor(Color.BLUE));
colorButton3.setOnClickListener(view -> changeClothingColor(Color.GREEN));
colorButton4.setOnClickListener(view -> changeClothingColor(Color.YELLOW));
}
private void changeClothingColor(int color) {
clothingImageView.setBackgroundColor(color);
}
}
샌드위치 토핑 선택
XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="샌드위치 선택" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="35dp"
android:orientation="horizontal">
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCheckboxClicked"
android:text="MEAT" />
<CheckBox
android:id="@+id/checkBox2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onCheckboxClicked"
android:text="CHEESE" />
</LinearLayout>
<ImageView
android:id="@+id/ImageViewSand1"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/sand1" />
<ImageView
android:id="@+id/ImageViewSand2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/sand2" />
</androidx.appcompat.widget.LinearLayoutCompat>
JAVA
package com.example.a05_28;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
ImageView sand1, sand2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sand1 = (ImageView) findViewById(R.id.ImageViewSand1);
sand2 = (ImageView) findViewById(R.id.ImageViewSand2);
}
public void onCheckboxClicked(View v) {
boolean checked = ((CheckBox) v).isChecked();
switch(v.getId()) {
case R.id.checkBox:
if(checked) sand1.setImageResource(R.drawable.sand1);
else sand1.setImageResource(0);
break;
case R.id.checkBox2:
if(checked) sand2.setImageResource(R.drawable.sand2);
else sand2.setImageResource(0);
break;
}
}
}