Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

모바일 앱(안드로이드)

안드로이드 앱 만들기 Kotlin 이 뭐야 ?

Billcorea 2022. 1. 18. 09:30
반응형

https://developer.android.com/courses/pathways/android-basics-kotlin-four

 

Add a button to an app  |  Android Basics in Kotlin - Intro - Add a button  |  Android Developers

Learn more concepts in Kotlin—including classes, objects, and conditionals—to create an interactive app for your users.

developer.android.com

앱을 하나 만들어 보았다. Kotlin 으로 하는 첫번째 프로젝트. 이 걸 해 보는 이유는 java 만으로 하는 앱은 많이 해 보았는데, kotlin 으로 하는 코딩은 처음인지라, 배워보고자 해서 developer 에서 코트랩을 살펴보았다.

 

ㅋ 구현되는 모습은 어떨까 ?

 

주사위 동작

동작은 그냥 하는 주사위 모양이다.  동작하는 기능 구현은 아래 소스를 보는 도움이 될 것 같다. 

import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.billcoreatech.kotlinexam0115.databinding.ActivityMain2Binding

class MainActivity2 : AppCompatActivity() {
    var TAG: String = "MainActivity2";

    lateinit var binding: ActivityMain2Binding ;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMain2Binding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.button.setOnClickListener{
            Log.e(TAG, "");
            Toast.makeText(this, rollDice(), Toast.LENGTH_SHORT).show()

        }
    }

    private fun rollDice(): String {
        val dice = Dice(6)
        val diceRoll = dice.roll()
        binding.textView3.setText(diceRoll.toString())
        when(diceRoll) {
            1 -> binding.imageView2.setImageResource(R.drawable.dice_1)
            2 -> binding.imageView2.setImageResource(R.drawable.dice_2)
            3 -> binding.imageView2.setImageResource(R.drawable.dice_3)
            4 -> binding.imageView2.setImageResource(R.drawable.dice_4)
            5 -> binding.imageView2.setImageResource(R.drawable.dice_5)
            6 -> binding.imageView2.setImageResource(R.drawable.dice_6)
        }
        return diceRoll.toString()
    }
}

 

이게 java 로 구현이 되면 아래와 같이 이렇게 구현이 될 것 같다.

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.billcoreatech.kotlinexam0115.databinding.ActivityMain2Binding;

public class MainActivity3 extends AppCompatActivity {

    ActivityMain2Binding binding ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMain2Binding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        binding.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getApplicationContext(), rollDice() , Toast.LENGTH_SHORT).show();
            }
        });
    }

    private String rollDice() {
        Dice dice = new Dice(6);
        int iDice = dice.roll() ;
        binding.textView3.setText(String.valueOf(iDice));
        switch (iDice) {
            case 1: binding.imageView2.setImageResource(R.drawable.dice_1); break ;
            case 2: binding.imageView2.setImageResource(R.drawable.dice_2); break ;
            case 3: binding.imageView2.setImageResource(R.drawable.dice_3); break ;
            case 4: binding.imageView2.setImageResource(R.drawable.dice_4); break ;
            case 5: binding.imageView2.setImageResource(R.drawable.dice_5); break ;
            case 6: binding.imageView2.setImageResource(R.drawable.dice_6); break ;
        }

        return String.valueOf(iDice) ;
    }

}

아직은 어떤게 더 코드 작업이 수월하지는 잘 모르겠다.  이런 걸 여러번 하다 보면,  알게 될려는지...  layout 은 그대로 하나 만들어서 했고,  구현하는 부분만 kotlin 으로, java 로 만들어 보았다.

 

어떻게 달라질지...

반응형