반응형

자바하고 코틀린의 차이점은 findViewById 함수를 안써도 된다는 점이죠

하지만 xml 파일에 있는 것이 사용이 안되는 경우가 있는데요 

그때는 xml 파일이 임포트가 안된 경우로 xml파일을 임포트하면됩니다.

예를 들어 activity_main.xml에 있는 버튼을 사용하고 싶을때는 아래의 코드를 추가하면 되는데요 

 

import kotlinx.android.synthetic.main.activity_main.*

 

여기서 문제는  kotlinx가 빨간 표시가 나면서 안될때가 있습니다

 

 

 

 

그때 2번째 build.gradle의 plugin에 다음의 코드를 넣으면 sync now 버튼을 클릭하면 해결됩니다.

id 'kotlin-android-extensions'
반응형
반응형

Fragment Actionbar와 기능이 유사한 BottomNavigationview를 공부해봤는데요.

이 요소는 인스타그램 앱등 많은 앱에서 사용될 정도로 사용성이 좋은 요소여서 제가 사용한 예제와 함께 정리해보려 합니다!

 

일단 이 코드를 2번째 bulid.gradle에 추가하고 sync now를 클릭해주세요

//noinspection GradleCompatible
implementation 'com.android.support:design:30.0.0'

 

그리고 BottomNavigationview의 요소가 되는 xml 파일을 만들것인데요

res 폴더 안에 menu폴더를 만들어주신 다음 menu 폴더 안에 menu Resource파일을 추가해주세요!

*전 bottom_navigationview로 이름을 지어서 추가하였습니다!*

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/cat"
        android:icon="@drawable/icon_cat"
        android:title="cat"
        android:enabled="true"/>
    <item
        android:id="@+id/dog"
        android:icon="@drawable/icon_dog"
        android:title="dog"
        android:enabled="true"/>
    <item
        android:id="@+id/horse"
        android:icon="@drawable/icon_horse"
        android:title="horse"
        android:enabled="true"/>
    <item
        android:id="@+id/rabbit"
        android:icon="@drawable/icon_rabbit"
        android:title="rabbit"
        android:enabled="true"/>
</menu>

 

그다음으론 이 BottomNavigationview에 들어갈 요소를 만들었으니 앱의 메인 화면에 BottomNavigationview를 만들어 위의 요소와 연결지으면 됩니다

<?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:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/main_content"
        android:orientation="vertical"
        />
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/navigationview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:menu="@menu/bottom_navigationview"
        />
</LinearLayout>

app:menu="@menu/xml 파일 이름" 으로 코드를 써주시면 menu와 연동이 됩니다!

 

이제 각 메뉴가 클릭되었을때 나올 화면을 만들것인데요. new -> activity -> empty activity를 눌러 새로운 kotlin파일과 xml파일을 만들어 주시면됩니다!

class cat_fragment : Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        var view = LayoutInflater.from(activity).inflate(R.layout.activity_cat_fragment,container,false)
        return view
    }

}

여기서 inflate하는 부분은 당연히 메뉴가 선택했을때 나올 화면을 담은 xml파일이겠죠??

저는 cat,dog,horse,rabbit 다 만들어줬습니다!

 

마지막으로 Mainactivity에 bottomNavigationview를 연결하고 각 메뉴를 눌렀을때 화면이 변경되는 코드를 작성하면됩니다!

 

package kr.ac.kpu.ce2017154024.fragment_practice

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.MenuItem
import com.google.android.material.bottomnavigation.BottomNavigationView
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        when(item.itemId){
            R.id.cat ->{
                var catFragment = cat_fragment()
                supportFragmentManager.beginTransaction().replace(R.id.main_content,catFragment).commit()
                return true
            }
            R.id.dog ->{
                var dogFragment = dog_fragment()
                supportFragmentManager.beginTransaction().replace(R.id.main_content,dogFragment).commit()
                return true
            }
            R.id.horse ->{
                var horseFragment = horse_fragment()
                supportFragmentManager.beginTransaction().replace(R.id.main_content,horseFragment).commit()
                return true
            }
            R.id.rabbit ->{
                var rabbitFragment = rabbit_fragment()
                supportFragmentManager.beginTransaction().replace(R.id.main_content,rabbitFragment).commit()
                return true
            }


        }
        return false
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        navigationview.setOnNavigationItemSelectedListener(this)


    }
}

메뉴가 눌렸을 때 linearlayout인 main_content가 바뀌는 알고리즘을

통해서 만들었습니다

반응형
반응형

안녕하세요 

오늘은 파이어 베이스를 통한 구글 로그인 기능을 사용했습니다!

파이어 베이스 계정 기능을 사용하는 방법을 소개해 볼 것 인데요

1.파이어 베이스에 자신의 프로젝트를 추가하고 권한을 등록합니다

구글을 클릭하여 사용중지됨을 사용 설정됨으로 변경한 모습

1-2 이때 프로젝트 설정에 들어가서 SHA 인증서 지문 또한 추가하여야지만 원할하게 사용할 수 있는데요

자신의 SHA 1 코드를 확인하는 방법은 우측의 Gradle을 선택후 signingReport를 더블클릭하면 RUN에서 코드를 확인 가능합니다!

signingReport 더블클릭!

코드를 알아내셨으면 파이어베이스 프로젝트 설정에서 자신의 SHA 코드를 넣어주세요!

SHA 인증서 지문에 자신의 코드를 넣으면 됩니다

2Firebase SDk 다운 받기 

tool ->firebase -> Authentication -> 버튼 클릭!

형광펜으로 표시된 부분 클릭!

 

3.파이어 베이스와 연결하기 위해 모듈을 다운 받아야 하는데요

app에 오른쪽 마우스 클릭을 하면 open Module settings가 보이는데요

 open Module settings에 들어가서 Dependencies를 선택 후 Declared Dependencise 밑의 '+'를 선택한 뒤  

 play-services-auth를 검색해주세요

 

 

4. 자 이제 모든 연결이 완료되었으니 이를 사용하는 코드를 추가하면됩니다! 

이에 대한 참고 자료는  https://firebase.google.com/docs/auth/android/google-signin?hl=ko 에 상세하게 적혀있습니다!

 

 

반응형

+ Recent posts