상세 컨텐츠

본문 제목

[안드로이드]버튼클릭 랜덤숫자 생성 랜덤 배경색 바꾸기 Math.random()

안드로이드

by aries574 2020. 6. 8. 19:43

본문


2020/06/08 - [안드로이드] - [안드로이드] 라디오버튼 예제 배경색 바꾸기

이전에는  라디오버튼으로 배경색을 바꿨다면, 이번에는 버튼클릭시 랜덤한 배경색으로 바꿔보겠습니다.

자바에서는 랜덤숫자를 생성해주는 함수가 있습니다. Math.random() 입니다.

자바를 어느정도 하셨다면 알고계시겠죠? 이 함수를 통해 랜덤한 숫자를 생성한 후

백그라운드 색상을 바꿔주는 함수 setBackgroundColor함수와 응용을 하는 것입니다.

setBackgroundColor에는 rgb값을 넣어서 색상을 변경할 수 있으며, 빨강,파랑,녹색값을 정수로 넣어줍니다.

정리하자면, 랜덤함수로 랜덤한 3개의 숫자를 생성해준다. 그 값을 setBackgroundColor에 넣어준다. 끝.

그러면 클릭할 때마다 알아서 배경색상이 랜덤으로 바뀔 것입니다. 

그럼 소스를 보여드리겠습니다. 


activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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">

<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<Button
android:id="@+id/changeBtn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="배경색 랜덤 바꾸기"/>
</LinearLayout>

</LinearLayout>


MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;


public class MainActivity extends AppCompatActivity {
//레이아웃 선언
LinearLayout layout;

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

//1. 레이아웃 객체생성
layout = findViewById(R.id.layout);

//2. 버튼 객체 생성
Button changeBtn = findViewById(R.id.changeBtn);
//3. 버튼 클릭시 이벤트
changeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{

//rgb에 들어갈 변수 객체 생성
int red = 0;
int blue =0;
int green = 0;

//랜덤으로 값을 넣는다. 0 ~ 255
red = (int)(Math.random() * 255);
blue = (int)(Math.random() * 255);
green = (int)(Math.random() * 255);

//레이아웃 색상 변경
layout.setBackgroundColor(Color.rgb(red,green,blue));
} //onClick()
}); //changeBtn.setOnClickListener
}//onCreate()
}


반응형

관련글 더보기

댓글 영역