투케이2K

112. (AndroidStudio/android/kotlin) 코틀린 파일 생성 및 코틀린 기본 구조 코드 작성 실시 본문

Android

112. (AndroidStudio/android/kotlin) 코틀린 파일 생성 및 코틀린 기본 구조 코드 작성 실시

투케이2K 2021. 4. 26. 13:37

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : kotlin

/* =========================== */

/* =========================== */

[소스 코드]

[클래스 관련]

<AndroidManifest.xml 파일>
<activity
            android:name=".A_Test_Kotlin"
            android:screenOrientation="portrait"/>






<A_Test_Kotlin 파일>
package kr.co.two2k.manager

import android.content.Context
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.util.Log
import android.view.KeyEvent
import android.view.MotionEvent
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class A_Test_Kotlin : AppCompatActivity() {

    //============= [컴포넌트 선언] =============
    lateinit var display_textview : EditText
    lateinit var one_button : Button

    //============= [전역변수 선언] =============
    var str_data = ""

    //============= [액티비티 시작 메소드] =============
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_a_aa_test_kotlin)
        Log.d("---","---")
        Log.d("//===========//","================================================")
        Log.d("","\n"+"[A_Test_Kotlin > onCreate() 메소드 : 액티비티 시작 실시]")
        Log.d("//===========//","================================================")
        Log.d("---","---")

        //============= [컴포넌트 매칭 실시] =============
        display_textview = findViewById(R.id.display_textview)
        display_textview.setMovementMethod(ScrollingMovementMethod())
        display_textview.setText("Display")

        one_button = findViewById(R.id.one_button)

        //============= [버튼 클릭 이벤트] =============
        one_button.setOnClickListener{
            Toast.makeText(application, "ONE 수행", Toast.LENGTH_SHORT).show()
            try{

            }
            catch(e : Exception){
                e.printStackTrace()
            }
        }

    }//TODO 메인 종료

    //============= [백버튼 터치시 뒤로 가기] =============
    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        // 디바이스의 키 이벤트가 발생했는데, 뒤로가기 이벤트일때
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.d("---","---")
            Log.d("//===========//","================================================")
            Log.d("","\n"+"[A_Test_Kotlin > onKeyDown() 메소드 : 백버튼 터치시 뒤로 가기 이벤트 실시]")
            Log.d("//===========//","================================================")
            Log.d("---","---")

            //TODO === [액티비티 종료 실시] ===
            finish()
            overridePendingTransition(0, 0)
        }
        return true
    }

    //============= [바깥 레이아웃 클릭 시 키보드 내림] =============
    override fun dispatchTouchEvent(event: MotionEvent): Boolean {
        val action = event.action
        when (action) {
            MotionEvent.ACTION_DOWN -> {
                //====== [창 내리는 용도] ======
                val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
                imm.hideSoftInputFromWindow(display_textview.windowToken, 0)
            }
            MotionEvent.ACTION_MOVE -> {
            }
            else -> {
            }
        }
        return super.dispatchTouchEvent(event)
    }

    //============= [액티비티 종료 메소드] =============
    override fun onDestroy() {
        super.onDestroy()
        Log.d("---","---")
        Log.d("//===========//","================================================")
        Log.d("","\n"+"[A_Test_Kotlin > onDestroy() 메소드 : 액티비티 종료 실시]")
        Log.d("//===========//","================================================")
        Log.d("---","---")
        try {
            //TODO 외부 브라우저 복귀 시 화면 전환 애니메이션 없애기 위함
            overridePendingTransition(0, 0)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    //============= [액티비티 실행 준비 메소드] =============
    override fun onResume() {
        super.onResume()
        Log.d("---","---")
        Log.d("//===========//","================================================")
        Log.d("","\n"+"[A_Test_Kotlin > onResume() 메소드 : 액티비티 준비 실시]")
        Log.d("//===========//","================================================")
        Log.d("---","---")
        try {
            //TODO 외부 브라우저 복귀 시 화면 전환 애니메이션 없애기 위함
            overridePendingTransition(0, 0)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

}//TODO 클래스 종료

[환경 설정 관련]

<build.gradle(Project) 파일>
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    //====코틀린 코드 위함====
    ext.kotlin_version = "1.3.72"
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files

        //====코틀린 코드 위함====
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        // ==== 추가 ====
        maven { url "https://jitpack.io" }

        // ==== 뱃지 사용위함 ====
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}






<build.gradle(Module:app) 파일>
apply plugin: 'com.android.application'

// ====코틀린 코드 위함====
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 30

    defaultConfig {
        applicationId "kr.co.two2k.manager" //앱 아이디
        minSdkVersion 21
        targetSdkVersion 30
        versionCode 2 //앱 버전 코드
        versionName "1.0.2" //앱 버전 네임

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release { //프로가드 난독화 설정 여부
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

    //=====코틀린 코드 위함=====
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}





<gradle.properties 파일>
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official

/* =========================== */

/* =========================== */

[결과 출력]

/* =========================== */

반응형
Comments