화면처럼 꾸미기
- 아래는 코드입니다.
- 디자이너가 아니기 때문에 여러 홈페이지를 통해서 디자인을 참고 했습니다.
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/img_top"
android:layout_width="547dp"
android:layout_height="370dp"
android:layout_marginStart="0dp"
android:layout_marginTop="-89dp"
android:layout_marginEnd="0dp"
app:srcCompat="@drawable/top_background" />
<TextView
android:id="@+id/userinfo"
android:layout_width="3000dp"
android:layout_height="80dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="45dp"
android:gravity="center"
android:text="SEENABLOW"
android:textColor="#FFFFFF"
android:textSize="45sp" />
</FrameLayout>
<GridLayout
android:layout_width="370dp"
android:layout_height="407dp"
android:layout_alignParentTop="true"
android:layout_marginStart="20dp"
android:layout_marginTop="231dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="20dp"
android:clickable="true"
android:columnCount="2"
android:focusable="true"
android:rowCount="2">
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
tools:ignore="DuplicateClickableBoundsCheck">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
app:cardCornerRadius="8dp"
app:cardElevation="8dp"
tools:ignore="DuplicateClickableBoundsCheck">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="칼럼"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/card_nov"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="69dp"
android:layout_height="52dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="소설"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/card_poem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="0"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="시"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/card_column"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="칼럼"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/card_news"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_rowWeight="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:layout_margin="8dp"
android:clickable="true"
android:focusable="true"
android:foreground="?android:attr/selectableItemBackground"
app:cardCornerRadius="8dp"
app:cardElevation="8dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="69dp"
android:layout_height="52dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="뉴스"
android:textAlignment="center"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.cardview.widget.CardView>
</GridLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_layout" />
</LinearLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/naviView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left"
android:fitsSystemWindows="true"
app:headerLayout="@layout/navi_header"
app:menu="@menu/navi_menu"/>
</androidx.drawerlayout.widget.DrawerLayout>
결과물!

화면 기능 구현을 위해 연결하기
package com.example.seenablow
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import android.view.View
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.cardview.widget.CardView
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView
class MainActivity : AppCompatActivity() {
var card_nov: CardView? = null
var card_poem: CardView? = null
var card_news: CardView? = null
var card_column: CardView? = null
private var toolbar: Toolbar? = null
private var drawerLayout: DrawerLayout? = null
private var navigationView: NavigationView? = null
var navi_textview: TextView? = null
var navi_textview2: TextView? = null
var username: String? = null
var age: String? = null
var gender: String? = null
var classes: String? = null
var isclick = false
var navi_icon: ImageView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
card_nov = findViewById<CardView>(R.id.card_nov)
card_poem = findViewById<CardView>(R.id.card_poem)
card_news = findViewById<CardView>(R.id.card_news)
card_column = findViewById<CardView>(R.id.card_column)
drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout)
intent = getIntent()
navigationView = findViewById<View>(R.id.naviView) as NavigationView
navigationView!!.setNavigationItemSelectedListener { item: MenuItem ->
onOptionsItemSelected(
item
)
}
val nav_header_view = navigationView!!.getHeaderView(0)
navi_textview = nav_header_view.findViewById<View>(R.id.user_name) as TextView
val nav_header_view2 = navigationView!!.getHeaderView(0)
navi_textview2 = nav_header_view2.findViewById<View>(R.id.userinfo) as TextView
val nav_header_view3 = navigationView!!.getHeaderView(0)
navi_icon = nav_header_view3.findViewById<View>(R.id.navi_icon) as ImageView
toolbar = findViewById<Toolbar>(R.id.toolbar)
setSupportActionBar(toolbar)
val actionBar = supportActionBar
actionBar!!.setDisplayHomeAsUpEnabled(true)
supportActionBar!!.setDisplayShowTitleEnabled(false)
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu)
val sharedPreferences = getSharedPreferences("username", MODE_PRIVATE)
username = sharedPreferences.getString("username", "")
age = sharedPreferences.getString("age", "")
gender = sharedPreferences.getString("gender", "")
classes = sharedPreferences.getString("class", "")
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
isclick = false
val id = item.itemId
if (id == R.id.menu_item1) {
} else if (id == R.id.menu_item2) {
Log.d("실행", "ㅇㅇ")
if (Build.VERSION.SDK_INT >= 28) {
startForegroundService(intent)
Log.v("asdf", "startService!")
}
}
when (item.itemId) {
android.R.id.home -> {
if (classes == "8") {
navi_icon!!.setImageResource(R.drawable.uni_1color)
} else if (classes == "7") {
navi_icon!!.setImageResource(R.drawable.uni_2color)
} else if (classes == "6") {
navi_icon!!.setImageResource(R.drawable.uni_3color)
} else if (classes == "5") {
navi_icon!!.setImageResource(R.drawable.uni_4color)
} else if (classes == "4") {
navi_icon!!.setImageResource(R.drawable.uni_5color)
} else if (classes == "3") {
navi_icon!!.setImageResource(R.drawable.uni_6color)
} else if (classes == "2") {
navi_icon!!.setImageResource(R.drawable.uni_7color)
} else if (classes == "1") {
navi_icon!!.setImageResource(R.drawable.uni_8color)
}
navi_textview!!.text = username
navi_textview2!!.text = "$age 세 $gender"
drawerLayout!!.openDrawer(GravityCompat.START)
return true
}
}
return super.onOptionsItemSelected(item)
}
override fun onBackPressed() {
val alert_ex = AlertDialog.Builder(this)
alert_ex.setMessage("정말로 종료하시겠습니까?")
alert_ex.setNegativeButton("취소") { dialog, which -> }
alert_ex.setPositiveButton("종료") { dialog, which -> finishAffinity() }
alert_ex.setTitle("Good Bye!")
val alert = alert_ex.create()
alert.show()
}
}