Kotlin에서 Navigation Drawer를 봤어요.
10213 단어 AndroidKotlinNavigationDrawer
환경 확인
이 글의 내용은 다음과 같은 환경에서 검증되었다.
* Java:open jdk 1.8.0_152
* Kotlin 1.2.10
* Android Studio 3.0.2
* CompileSdkVersion:26
입문
지금까지 우리는 Kotlin에 최소한의 Navigation Drawer를 설치했다.
정말 필요한 최소한이어서 햄버거 등을 설치하지 않았다.
응용 프로그램의 전체 모습
다음 그림의 응용 프로그램을 만들었습니다.
구현 단계
응용 프로그램을 만들기 위해 다음 순서에 따라 설치했다.
1. build.APP 모듈
2. 문자열 정의
3. 한 줄의 배치
4. 화면 레이아웃 파일
5.ListView 행이 클릭되었을 때 처리
구현 내용 설명
1.build.APP 모듈
NavigationDrawer는 Suppert v4에 포함되어 있기 때문에gradle에 다음과 같은 내용을 추가했습니다.
build.gradledependencies {
implementation 'com.android.support:support-v4:26.1.0'
}
2. 문자열 정의
문자열 자원에 메뉴로 표시할 문자열 그룹을 정의합니다.
strings.xml<resources>
<string name="app_name">NavigationDrawerKotlin</string>
<string-array name="menu_string_array">
<item>赤</item>
<item>青</item>
<item>黄</item>
</string-array>
</resources>
3. 한 줄의 배치
메뉴가 ListView에서 구현되므로 레이아웃 파일 행이 생성됩니다.
list_row.xml<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:textSize="30sp">
</TextView>
4. 화면 레이아웃 파일
화면의 배치 요점은 다음과 같다.
지금까지 우리는 Kotlin에 최소한의 Navigation Drawer를 설치했다.
정말 필요한 최소한이어서 햄버거 등을 설치하지 않았다.
응용 프로그램의 전체 모습
다음 그림의 응용 프로그램을 만들었습니다.
구현 단계
응용 프로그램을 만들기 위해 다음 순서에 따라 설치했다.
1. build.APP 모듈
2. 문자열 정의
3. 한 줄의 배치
4. 화면 레이아웃 파일
5.ListView 행이 클릭되었을 때 처리
구현 내용 설명
1.build.APP 모듈
NavigationDrawer는 Suppert v4에 포함되어 있기 때문에gradle에 다음과 같은 내용을 추가했습니다.
build.gradledependencies {
implementation 'com.android.support:support-v4:26.1.0'
}
2. 문자열 정의
문자열 자원에 메뉴로 표시할 문자열 그룹을 정의합니다.
strings.xml<resources>
<string name="app_name">NavigationDrawerKotlin</string>
<string-array name="menu_string_array">
<item>赤</item>
<item>青</item>
<item>黄</item>
</string-array>
</resources>
3. 한 줄의 배치
메뉴가 ListView에서 구현되므로 레이아웃 파일 행이 생성됩니다.
list_row.xml<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:textSize="30sp">
</TextView>
4. 화면 레이아웃 파일
화면의 배치 요점은 다음과 같다.
응용 프로그램을 만들기 위해 다음 순서에 따라 설치했다.
1. build.APP 모듈
2. 문자열 정의
3. 한 줄의 배치
4. 화면 레이아웃 파일
5.ListView 행이 클릭되었을 때 처리
구현 내용 설명
1.build.APP 모듈
NavigationDrawer는 Suppert v4에 포함되어 있기 때문에gradle에 다음과 같은 내용을 추가했습니다.
build.gradledependencies {
implementation 'com.android.support:support-v4:26.1.0'
}
2. 문자열 정의
문자열 자원에 메뉴로 표시할 문자열 그룹을 정의합니다.
strings.xml<resources>
<string name="app_name">NavigationDrawerKotlin</string>
<string-array name="menu_string_array">
<item>赤</item>
<item>青</item>
<item>黄</item>
</string-array>
</resources>
3. 한 줄의 배치
메뉴가 ListView에서 구현되므로 레이아웃 파일 행이 생성됩니다.
list_row.xml<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:textSize="30sp">
</TextView>
4. 화면 레이아웃 파일
화면의 배치 요점은 다음과 같다.
dependencies {
implementation 'com.android.support:support-v4:26.1.0'
}
<resources>
<string name="app_name">NavigationDrawerKotlin</string>
<string-array name="menu_string_array">
<item>赤</item>
<item>青</item>
<item>黄</item>
</string-array>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:textSize="30sp">
</TextView>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="jp.co.casareal.navigationdrawerkotlin.MainActivity">
<LinearLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ここで内容を表示する"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start">
<ListView
android:id="@+id/navigation_menu_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white" />
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
5.ListView 행이 클릭되었을 때 처리
메뉴는 ListView에서 이루어지기 때문에 ListView 줄이 눌렸을 때 처리됩니다.
클릭하면 내용의 배경을 바꾸고 메뉴를 닫습니다.
메뉴를 닫으려면 DrawerLayout의 closeDrawers 메서드를 호출합니다.
MainActivity.kt
package jp.co.casareal.navigationdrawerkotlin
import android.graphics.Color
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v7.app.ActionBarDrawerToggle
import android.view.View
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val strings = resources.getStringArray(R.array.menu_string_array)
val adapter = ArrayAdapter<String>(this,R.layout.list_row,strings)
navigation_menu_list.adapter=adapter
navigation_menu_list.setOnItemClickListener { _, _, position, _ ->
val color = when{
strings[position] == "赤" -> Color.RED
strings[position] == "青" -> Color.BLUE
else -> Color.YELLOW
}
content_layout.setBackgroundColor(color)
drawer_layout.closeDrawers()
}
}
}
총결산
Navigation Drawer는 햄버거를 설치하지 않으면 상당히 간결합니다.
또한 자바에서의 구현보다 Kotlin으로 구현하는 것이 더 간결하다.
Reference
이 문제에 관하여(Kotlin에서 Navigation Drawer를 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/naoi/items/5b4956f3f9bac9c817cb
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Kotlin에서 Navigation Drawer를 봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naoi/items/5b4956f3f9bac9c817cb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)